diff --git a/entry/src/main/ets/common/service/indexService.ts b/entry/src/main/ets/common/service/indexService.ts index b0dc1174..e3504872 100644 --- a/entry/src/main/ets/common/service/indexService.ts +++ b/entry/src/main/ets/common/service/indexService.ts @@ -157,6 +157,7 @@ export async function getSingleCenterTable(param) { // .catch(err => { // reslove(false) // }) + console.log('联网更新失败,请检查网络后重新更新') promptAction.showToast({ message: `联网更新失败,请检查网络后重新更新`, duration: 3000 diff --git a/entry/src/main/ets/common/service/initable.ts b/entry/src/main/ets/common/service/initable.ts index 6d28d3c3..ba3770c3 100644 --- a/entry/src/main/ets/common/service/initable.ts +++ b/entry/src/main/ets/common/service/initable.ts @@ -28,7 +28,7 @@ import DeviceInfoTable from '../constants/DeviceInfoTable' import USER from '../constants/USER' import util from '@ohos.util'; import zlib from '@ohos.zlib'; -import FileModel from '../../pages/judgeSDK/utils/fileModel'; +import FileModel from '../../pages/judgeSDK/utils/file-model'; // @ts-nocheck //读表 //参数平台 @@ -361,7 +361,7 @@ export async function upDataZhongxinginitialization(param){ } console.log('daihai2') - initialization(str).then((res)=>{ + initialization(str).then(async (res)=>{ console.log('daihai3',JSON.stringify(res)) if(!res){ resolve(false) @@ -374,21 +374,14 @@ export async function upDataZhongxinginitialization(param){ if(!centerToMap[key]){ continue } - setSyncCenterSqlData(key,res,param).then((flag) => { - if(!flag){ - resolve(false) - return - }{ - resolve(true) - } - }).catch ((error) => { + const data= await setSyncCenterSqlData(key,res,param) + if(!data){ resolve(false) - console.log(error) - }) + } } - console.log('daihai4') - resolve(true) + + console.log('resposestart') }).catch((Error)=>{ diff --git a/entry/src/main/ets/common/utils/File.ts b/entry/src/main/ets/common/utils/File.ts index e8c68d91..3bd698b5 100644 --- a/entry/src/main/ets/common/utils/File.ts +++ b/entry/src/main/ets/common/utils/File.ts @@ -46,22 +46,22 @@ export default class FileUtil{ * */ public addFile = async (filePath:string,content:string,type?:string)=>{ - const { READ_WRITE,CREATE,APPEND,TRUNC }= fs.OpenMode + const { READ_WRITE,CREATE,APPEND }= fs.OpenMode + const isExit = fs.accessSync(filePath); + //文件存在先删除 + if(isExit){ + fs.unlinkSync(filePath); + } try { - console.log('content',content) - let file = fs.openSync(filePath, TRUNC|READ_WRITE |CREATE|APPEND); - const option={ - offset:0, - length:content.length, - encoding:'utf-8' - } - fs.writeSync(file.fd,content,option) + let file = fs.openSync(filePath, READ_WRITE | CREATE); + //追加写入文件 + fs.writeSync(file.fd,content) fs.closeSync(file) console.error(LOGTAG,'写入文件成功') return true }catch (e){ - console.error(LOGTAG,JSON.stringify(e)) + console.error(LOGTAG,'写入失败',JSON.stringify(e)) } } /* @@ -72,6 +72,15 @@ export default class FileUtil{ const { READ_WRITE,CREATE,APPEND }= fs.OpenMode try { let file = fs.openSync(filePath, READ_WRITE | APPEND |CREATE); + let index + // if(type=='overWrite'){ + // //文件覆蓋 + // index=0 + // }else{ + // //文件追加 + // const str = fs.readTextSync(filePath); + // index= str.length + // } const newStr = content + '\n' //追加写入文件 fs.writeSync(file.fd,newStr) diff --git a/entry/src/main/ets/common/utils/GlobalTcp.ts b/entry/src/main/ets/common/utils/GlobalTcp.ts index f3fa7d77..a96edf76 100644 --- a/entry/src/main/ets/common/utils/GlobalTcp.ts +++ b/entry/src/main/ets/common/utils/GlobalTcp.ts @@ -18,9 +18,9 @@ export async function getTCP() { await globalThis.TcpClient.onMessage((val)=>{ setTimeout(()=>{ globalThis.TcpClient.sendMsg('1002')//1002 - if(val&&!globalThis.closeUDPSocket){ + if(val){ // const msg=val.substring(5,val.length-1) - console.log('socketTag[PLC.UdpClient]closeUDPSocket',globalThis.closeUDPSocket) + console.log('socketTag[PLC.UdpClient] status:',globalThis.udpClient.getStatus()) globalThis.udpClient?.sendMsg(val) } },1000) @@ -40,11 +40,10 @@ export async function getTCP() { hilog.info(0x0000, 'testTag', "valvalval2" + JSON.stringify(val)); setTimeout(()=>{ globalThis.TcpClient.sendMsg('1002')//1002 - if(globalThis.udpClient && val&&!globalThis.closeUDPSocket){ + if(val&& globalThis.udpClient?.sendMsg){ // const msg=val.substring(5,val.length-1) - console.log('socketTag[PLC.UdpClient]closeUDPSocket',globalThis.closeUDPSocket) - globalThis.udpClient.sendMsg&&globalThis.udpClient?.sendMsg(val) + globalThis.udpClient?.sendMsg(val) } },1000) diff --git a/entry/src/main/ets/common/utils/GlobalUdp.ts b/entry/src/main/ets/common/utils/GlobalUdp.ts index b4f1c934..1473a9ac 100644 --- a/entry/src/main/ets/common/utils/GlobalUdp.ts +++ b/entry/src/main/ets/common/utils/GlobalUdp.ts @@ -1,65 +1,84 @@ -import UdpClient from './UdpClient'; +//import UdpClient from './UdpClient'; import UdpClientByCenter from './UdpClientByCenter'; import { getSyncData} from '../service/initable' -import { dateFormat } from '../../common/utils/tools' -import prompt from '@ohos.prompt' -import TcpClient from './TcpClient'; -import {string2Bytes} from '../../common/utils/tools' +import {getChuankouFn} from '../../common/service/indexService' export async function sendMsg(val){ // globalThis.udpClient1&&globalThis.udpClient1.sendMsg(val) } export async function getUDP() { - getSyncData('IpConfigTable').then((result:Array)=>{ - if(result.length){ - if(globalThis.udpClient&&!globalThis.closeUDPSocket){ - globalThis.udpClient.closeUdp(()=>{ - setTimeout(()=>{ - globalThis.udpClient.rebindUdp(result[0].udplocalIp, result[0].udplocalIpPort,result[0].udpOppositeIp,result[0].udpOppositeIpPort) - globalThis.udpClient.sendMsg('111') - globalThis.host=`http://${result[0].centerIp}:${result[0].centerPort}` - globalThis.udpClient.onError(globalThis.udpClient.onMessage?globalThis.udpClient.onMessage:()=>{}) - - },1000) - }) - }else{ - const udpClient: UdpClient =new UdpClient(result[0].udplocalIp, result[0].udplocalIpPort,result[0].udpOppositeIp,result[0].udpOppositeIpPort) + console.log(` getUDP enter`); + getSyncData('IpConfigTable').then((result:Array)=> + { + if(result.length) + { + console.log(` getUDP has IPConfigTable `); + if(globalThis.udpClient&&globalThis.udpClient.closeUdp) + { + console.log(` getUDP has udclent close and rebind `); + globalThis.udpClient.closeUdp(()=>{ + setTimeout(()=>{ + globalThis.udpClient.rebindUdp(result[0].udplocalIp, result[0].udplocalIpPort,result[0].udpOppositeIp,result[0].udpOppositeIpPort) + globalThis.udpClient.sendMsg('111',null) + globalThis.host=`http://${result[0].centerIp}:${result[0].centerPort}` + // globalThis.udpClient.onError_resend(globalThis.udpClient.onMessage?globalThis.udpClient.onMessage:()=>{}) + },1000) + }) + } + else{ + // 未绑定 + console.log(` getUDP has no udclent and bind `); + const udpClient: UdpClientByCenter =new UdpClientByCenter(result[0].udplocalIp, result[0].udplocalIpPort,result[0].udpOppositeIp,result[0].udpOppositeIpPort) udpClient.bindUdp() udpClient.sendMsg('111') - globalThis.udpClient = udpClient globalThis.host=`http://${result[0].centerIp}:${result[0].centerPort}` - globalThis.udpClient.onError(globalThis.udpClient.onMessage?globalThis.udpClient.onMessage:()=>{}) - + // udpClient.onError_resend(globalThis.udpClient.onMessage?globalThis.udpClient.onMessage:()=>{}) + globalThis.udpClient = udpClient + getChuankouFn() } - }else{ + }else + { + console.log(` getUDP has no IPConfigTable `); + // if(globalThis.udpClient) + // { + // console.log(` getUDP2 has IPConfigTable ,has udpClient ,close it`); + // globalThis.udpClient.closeUdp(async ()=>{ }) + // } globalThis.udpClient={} - globalThis.udpClient.onMessage=()=>{} + globalThis.udpClient.onMessage_1=()=>{} globalThis.host='' } }) } export async function getUDP2() { + console.log(` getUDP2 enter`); getSyncData('IpConfigTable').then(async (result:Array)=>{ - if(result.length){ - if(globalThis.udpClient2&&!globalThis.closeHeartSocket){ + if(result.length) + { + console.log(` getUDP2 has IPConfigTable `); + if(globalThis.udpClient2) + { + console.log(` getUDP2 has udclent ,close and rebind `); + globalThis.udpClient2.closeUdp(async ()=>{ + setTimeout(()=>{ + globalThis.udpClient2.rebindUdp(result[0].udplocalIp, '8800',globalThis.carInfo?.udpAddress,globalThis.carInfo?.messagePort) + //保留原来的 + // globalThis.udpClient2.onMessage((val)=>{ }) + // globalThis.udpClient2.onError() + // globalThis.udpClient2.setMsgCallBack=()=>{} + },1000) + }) + } + else + { + // 未绑定 + console.log(` getUDP2 has no udclent and bind `); + const udpClient2: UdpClientByCenter =new UdpClientByCenter(result[0].udplocalIp, '8800',globalThis.carInfo?.udpAddress,globalThis.carInfo?.messagePort) - globalThis.udpClient2.closeUdp(async ()=>{ - setTimeout(()=>{ - globalThis.udpClient2.rebindUdp(result[0].udplocalIp, '8800',globalThis.carInfo?.udpAddress,globalThis.carInfo?.messagePort) - globalThis.udpClient2.onMessage((val)=>{ - }) - globalThis.udpClient2.onError() - globalThis.udpClient2.setMsgCallBack=()=>{} - },1000) - - }) - }else{ - const udpClient: UdpClientByCenter =new UdpClientByCenter(result[0].udplocalIp, '8800',globalThis.carInfo?.udpAddress,globalThis.carInfo?.messagePort) - globalThis.udpClient2 = udpClient - globalThis.udpClient2.bindUdp() - globalThis.udpClient2.onError() - globalThis.udpClient2.onMessage((val)=>{ + udpClient2.bindUdp() + udpClient2.onError_Callback() + udpClient2.onMessage_1((val)=>{ if(val.id=='32'){ globalThis.signNum=val.body[1] @@ -73,10 +92,17 @@ export async function getUDP2() { globalThis.udpClient2.send(param) } }) + globalThis.udpClient2 = udpClient2 } }else{ + console.log(` getUDP2 has no IPConfigTable `); + if(globalThis.udpClient2) + { + console.log(` getUDP2 has IPConfigTable ,has udpClient ,close it`); + globalThis.udpClient2.closeUdp(async ()=>{ }) + } globalThis.udpClient2={} - globalThis.udpClient2.onMessage=()=>{} + globalThis.udpClient2.onMessage_2=()=>{} globalThis.udpClient2.setMsgCallBack=()=>{} } }) @@ -111,16 +137,19 @@ export async function setJudgeUdp(){ if(config && config[0] && config[0].udplocalIp){ const {udplocalIp} = config[0]; - const udpClient: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '8080',globalThis.carInfo?.gpsAddress,globalThis.carInfo?.hintPort) - udpClient.bindUdp() - udpClient.onMessage((val)=>{ + const udpClientbyCenter: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '8080',globalThis.carInfo?.gpsAddress,globalThis.carInfo?.hintPort) + udpClientbyCenter.bindUdp() + udpClientbyCenter.onMessage_1((val)=>{ console.log('valval',val) }) - globalThis.judgeUdpClient = udpClient; + // globalThis.judgeUdpClient = udpClientbyCenter; return { send(bytes){ if(udpIndex > currentUdpIndex){ - udpClient.sendMsg({id:45,list:bytes,carNo:globalThis.carInfo.carNo,placeId:globalThis.carInfo.examinationRoomId}) + udpClientbyCenter.sendMsgExt({id:45, + list:bytes, + carNo:globalThis.carInfo.carNo, + placeId:globalThis.carInfo.examinationRoomId}) currentUdpIndex = udpIndex } } diff --git a/entry/src/main/ets/common/utils/TcpClient.ts b/entry/src/main/ets/common/utils/TcpClient.ts index 1a86f3cb..171a96f9 100644 --- a/entry/src/main/ets/common/utils/TcpClient.ts +++ b/entry/src/main/ets/common/utils/TcpClient.ts @@ -37,7 +37,7 @@ export default class TcpClient { this.localIpPort = localIpPort this.oppositeIpPort = oppositeIpPort console.log(TAG,'tcpreBind', this.localIp,this.localIpPort) - let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort)}, err => { + let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort), family: 1 }, err => { if (err) { globalThis.getCloseTcp=true hilog.info(0x0000, 'testTag', "tcpreBinderror:" + JSON.stringify(err)); @@ -60,7 +60,7 @@ export default class TcpClient { bindTcp() { console.log(TAG,'tcpbind',this.localIp,'localIp',this.localIpPort) return new Promise((resolve,reject)=>{ - let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort) }, err => { + let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort), family: 1 }, err => { if (err) { console.log('testTag tcp bind faile'); globalThis.getCloseTcp=true @@ -86,7 +86,7 @@ export default class TcpClient { connectTcp(){ console.log(TAG,'tcpConnect',this.oppositeIp,'localIp',this.oppositeIpPort) return new Promise((resolve,reject)=>{ - let promise = this.tcp.connect({ address: {address: this.oppositeIp, port: parseInt(this.oppositeIpPort)} , timeout: 6000}); + let promise = this.tcp.connect({ address: {address: this.oppositeIp, port: parseInt(this.oppositeIpPort), family: 1} , timeout: 6000}); promise.then(() => { this.tcp.setExtraOptions({ diff --git a/entry/src/main/ets/common/utils/UdpClient.ts b/entry/src/main/ets/common/utils/UdpClient.ts index f7e9cfac..600ef6fc 100644 --- a/entry/src/main/ets/common/utils/UdpClient.ts +++ b/entry/src/main/ets/common/utils/UdpClient.ts @@ -50,7 +50,7 @@ export default class UdpClient { this.localIpPort = localIpPort this.oppositeIpPort = oppositeIpPort let promise = this.udp.bind({ - address: this.localIp, port: parseInt(this.localIpPort) + address: this.localIp, port: parseInt(this.localIpPort), family: 1 }); promise.then(() => { globalThis.closeUDPSocket=false @@ -67,7 +67,7 @@ export default class UdpClient { let promise = this.udp.bind({ // address: '192.168.7.170', port: 20122, family: 1 // address: '192.168.7.170', port: 31013, family: 1 - address: this.localIp, port: parseInt(this.localIpPort) + address: this.localIp, port: parseInt(this.localIpPort), family: 1 }); promise.then(() => { globalThis.closeUDPSocket=false @@ -97,6 +97,7 @@ export default class UdpClient { // port: 20022, address: this.oppositeIp, port: parseInt(this.oppositeIpPort), + family: 1 } }); promise.then(() => { @@ -125,7 +126,7 @@ export default class UdpClient { onMessage(callback?) { this.udp.on('message', value => { - // console.log(TAG,'udponmessage') + console.log(TAG,'udponmessage') // 收到的是ArrayBuffer 需要进行转换解析 globalThis.plcUdpError = false if (value) { @@ -178,12 +179,12 @@ export default class UdpClient { if (globalThis.plcUdpError) { num++ console.log(TAG,'plc udp信号丢失') - // if(num==3){ - // await this.bindUdp() - // await this.sendMsg('111') - // await this.onMessage(callback) - // num=0 - // } + if(num==3){ + await this.bindUdp() + await this.sendMsg('111') + await this.onMessage(callback) + num=0 + } prompt.showToast({ message: 'plc udp信号丢失', duration: 2000 @@ -203,8 +204,6 @@ export default class UdpClient { globalThis.closeUDPSocket=false } else { - hilog.info(0x0000,TAG, 'udpCLient', 'closeonSuccess'); - globalThis.closeUDPSocket=true this.udp.getState((err, data) => { diff --git a/entry/src/main/ets/common/utils/UdpClientByCenter.ts b/entry/src/main/ets/common/utils/UdpClientByCenter.ts index 0764a930..00d61217 100644 --- a/entry/src/main/ets/common/utils/UdpClientByCenter.ts +++ b/entry/src/main/ets/common/utils/UdpClientByCenter.ts @@ -13,17 +13,13 @@ * limitations under the License. */ -import socket from '@ohos.net.socket'; -import fs from '@ohos.file.fs' -import mediaLibrary from '@ohos.multimedia.mediaLibrary' +import socket ,{UDPSocket} from '@ohos.net.socket'; +import { Array2Byte } from '../utils/tools' import FileUtil from '../../common/utils/File' import {fillZero,string2Bytes} from '../utils/tools' -import { GlobalConfig } from '../../config/index' const TAG = '[UdpDemo.UdpClient]' -// import common from '@ohos.app.ability.common'; import hilog from '@ohos.hilog'; import prompt from '@ohos.prompt' -import call from '@ohos.telephony.call'; export default class UdpClientByCenter { @@ -34,12 +30,14 @@ export default class UdpClientByCenter { private udpMsg: any='' private num:number = 0 private fileUtil: FileUtil - private udp: any = null + private udp: UDPSocket = null private sendId: any = 0 private lsh: string = null private context private stashFn:StashFunction private headLenth:number=9 //消息头长度 + private isWorking:Boolean = false + private plcUdpError = false; private initParam constructor(udplocalIp: string, udplocalIpPort:string,udpOppositeIp: string,udpOppositeIpPort:string) { this.localIp = udplocalIp @@ -49,6 +47,10 @@ export default class UdpClientByCenter { this.stashFn=()=>{} this.udp = socket.constructUDPSocketInstance(); } + getStatus() + { + return this.isWorking + } rebindUdp(localIp: string, localIpPort:string,oppositeIp: string,oppositeIpPort:string){ this.localIp = localIp this.oppositeIp = oppositeIp @@ -61,27 +63,27 @@ export default class UdpClientByCenter { }); promise.then(() => { - globalThis.closeHeartSocket=false + // globalThis.closeHeartSocket=false + this.isWorking = true console.log(`${TAG} udp bind success`); }).catch(err => { - globalThis.closeHeartSocket=true + //globalThis.closeHeartSocket=true + this.isWorking = false console.log(`${TAG} udp bind failed:${JSON.stringify(err)}`); }); } - initHeartSendMsg(param,context){ - console.log('1111param',JSON.stringify(param)) - this.initParam=param - this.context=context - } + bindUdp() { let promise = this.udp.bind({ address: this.localIp, port: parseInt(this.localIpPort), family: 1 }); promise.then(() => { - globalThis.closeHeartSocket=false + // /globalThis.closeHeartSocket=false + this.isWorking = true console.log(`${TAG} udp bind success`); }).catch(err => { - globalThis.closeHeartSocket=true + // globalThis.closeHeartSocket=true + this.isWorking = false console.log(`${TAG} udp bind failed:${JSON.stringify(err)}`); }); } @@ -136,72 +138,78 @@ export default class UdpClientByCenter { } sendHeadMsg(msgData){ - console.log('sendsnd1') - //udpOppositeIp - let promise = this.udp.send({ - data: msgData, - address: { - address: this.oppositeIp, - port: parseInt(this.oppositeIpPort), + console.log('sendHeadMsg enter') + this.sendMsg(msgData,null) + console.log('sendHeadMsg exit') + } + + sendMsg(msg,sendCallback?) { + console.log(TAG,'sendMsg enter status:'+this.isWorking+' ip:'+this.oppositeIp+' port:'+this.oppositeIpPort) + if(!this.isWorking) + { + console.log(TAG,'sendMsg has not working ,just return status:'+this.isWorking+' ip:'+this.oppositeIp+' port:'+this.oppositeIpPort) + if(sendCallback){ + sendCallback() } - }); - promise.then(() => { - console.log(`${TAG} udpLine send success:`); - }).catch(err => { - console.log(`${TAG} udpLine send fail:${JSON.stringify(err)}`); + } + this.udp.getState((err, data) => { + if (err) { + //globalThis.closeHeartSocket=true + this.isWorking = false + console.log('sendMsg getState fail ip:'+this.oppositeIp+' port:'+this.oppositeIpPort); + return; + } else { + let promise = this.udp.send({ + data: msg, + address: { + address: this.oppositeIp, + port: parseInt(this.oppositeIpPort), + } + }); + promise.then(() => { + if(sendCallback){ + sendCallback() + } + console.log(`${TAG}udpCLient udp send success:oppositeIp${this.oppositeIp},oppositeIpPort:${this.oppositeIpPort},localIp:${this.localIp},localIpPort,${this.localIpPort}`); + }).catch(err => { + console.log(`${TAG}udpCLient udp send fail:oppositeIp${this.oppositeIp},oppositeIpPort:${this.oppositeIpPort},localIp:${this.localIp},localIpPort,${this.localIpPort}`); + }); + } + console.log('getState success:' + JSON.stringify(data)); + }) + } + sendMsgExt(param,context?) { + console.log('sendMsgExt enter'); + if(context){ + this.context=context + } + this.sendId=param.id + const msgData=this.setWholeMsg(param) + this.sendMsg(msgData,param.sendCallback) + } + onError_Callback(callback?){ + this.udp.on('error',async err => { + this.isWorking = false; + console.log('UdpClientByCenter onError err:' + JSON.stringify(err)); + callback&&callback() }); } - onError(callback?){ + onError_resend(callback?){ this.udp.on('error',async err => { - globalThis.closeHeartSocket=true + this.isWorking = false; + console.log(TAG,'udpError',JSON.stringify(err)) + // await this.bindUdp() + // await this.sendMsg('111',null) + //await this.onMessage_1(callback) callback&&callback() - // callback&&callback() - // this.closeUdp(()=>{ - // this.bindUdp() - // }) }); } setMsgCallBack(callback){ this.stashFn=callback?callback:()=>{} } - sendMsg(param,context?) { - this.udp.getState((err, data) => { - if (err) { - globalThis.closeHeartSocket=true - return; - }else{ - console.log('paramparam',JSON.stringify(param)) - if(context){ - this.context=context - } - this.sendId=param.id - console.log('sendMsg',JSON.stringify(param)) - const msgData=this.setWholeMsg(param) - // const msgData=this.setMsyBody('31','010000000000000') - let promise = this.udp.send({ - data: msgData, - address: { - address: this.oppositeIp, - port: parseInt(this.oppositeIpPort), - } - }); - promise.then(() => { - if(param.sendCallback){ - param.sendCallback() - } - // if(this.sendId=='46'&¶m.callback){ - // param.callback() - // } - console.log(`${TAG} udp send success:`); - }).catch(err => { - console.log(`${TAG} udp send fail:${JSON.stringify(err)}`); - }); - } - }) - - } - onMessage(callback,type?) { - this.udp.on('message', value => { + onMessage_2(callback,type?) { + this.udp.on('message', (value,remoteInfo) => { + console.log('UdpClientByCenter onMessage msg:' + JSON.stringify(value)); let arr=[] let dataView = new DataView(value.message) for (let i = 0;i < dataView?.byteLength; ++i) { @@ -222,35 +230,120 @@ export default class UdpClientByCenter { }); } - closeUdp(callback) { - this.udp.close(err=>{ - if(err){ - - }else{ - this.udp.getState((err, data) => { - if (err) { - return; - }else{ - globalThis.closeHeartSocket=true - if(!data.isisClose){ - setTimeout(()=>{ - callback() - },1000) - } - } - }) - // let promise = this.udp.getState({}); - // promise.then(data => { - // - // console.log('getState success:' + JSON.stringify(data)); - // }).catch(err => { - // callback() - // console.log('getState fail'); - // }); + closeUdp(callback?) { + console.log('UdpClientByCenter enter closeUdp ip:' +this.localIp+' port:'+this.localIpPort); + this.udp.on('close', () => { + console.log('UdpClientByCenter onClose ip:' + this.localIp + ' port:' + this.localIpPort); + this.isWorking = false + if (callback!=null) { + callback() } - }); + } + ) + this.udp.close(err=> { + if (err) { + console.log('UdpClientByCenter closeUdp failed ip:'+this.localIp+' port:'+this.localIpPort+' err:' + JSON.stringify(err)); + } else { + console.log('UdpClientByCenter closeUdp succeed ip:' +this.localIp+' port:'+this.localIpPort ); + } + }) + // globalThis.closeHeartSocket=true + // + // this.udp.close(err=>{ + // if(err){ + // + // }else{ + // this.udp.getState((err, data) => { + // if (err) { + // return; + // }else{ + // globalThis.closeHeartSocket=true + // if(!data.isisClose){ + // setTimeout(()=>{ + // callback() + // },1000) + // } + // } + // }) + // } + // }); } + onMessage_1(callback?) { + this.udp.on('message', value => { + console.log(TAG,'udponmessage') + // 收到的是ArrayBuffer 需要进行转换解析 + this.plcUdpError = false + if (value) { + let dataView = new DataView(value.message) + let str = "" + for (let i = 0; i < dataView?.byteLength; ++i) { + let c = String.fromCharCode(dataView?.getUint8(i)) + if (c !== "\n") { + str += c + } + } + + console.log(`${TAG} udp on message array buffer:${str}`); + let strachArr = str.split(',') + if (strachArr[0] != '#DN_GD') { + return + } + console.log(`${TAG} udp222 on message array buffer:${str}`); + + strachArr[28]=globalThis.chuankoMsg||'0' + // this.stashFn(str) + const newArr=JSON.parse(JSON.stringify(strachArr)) + // this.stashFn=()=>{} + callback&&callback(newArr.toString()) + + } else { + callback&&callback('') + } + console.log('messageTimeEnd') + this.testIfUdpConnetced(callback) + }); + } + testIfUdpConnetced(callback) + { + const arrRed = [0x55, 0xaa, 0x01, 0x01, 0x02, 0x00, 0x03, 0x00]; + const arrBlue = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00]; + const arrGreen = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x00, 0x03, 0x01]; + const arrBlueBuffer = Array2Byte(arrBlue).buffer + const arrRedBuffer = Array2Byte(arrRed).buffer + const arrGreenBugger = Array2Byte(arrGreen).buffer + let num=0 + //监听udp是否断开 + clearInterval(globalThis.messageTimer) + globalThis.messageTimer = setInterval(() => { + const lightLineUdp = globalThis.lightLineUdp + const isJudge = globalThis.isJudge + setTimeout(async () => { + //程序断开 + lightLineUdp?.send(this.plcUdpError ? arrRedBuffer : (isJudge ? arrGreenBugger : arrBlueBuffer)); + if (this.plcUdpError) { + num++ + console.log(TAG,'plc udp信号丢失') + if(num==3){ + await this.bindUdp() + await this.sendMsg('111',null) + await this.onMessage_1(callback) + num=0 + } + prompt.showToast({ + message: 'plc udp信号丢失', + duration: 2000 + }); + } + this.plcUdpError = true; + }, 2000) + }, 3000) + } + // initHeartSendMsg(param,context){ + // console.log('1111param',JSON.stringify(param)) + // this.initParam=param + // this.context=context + // } } interface StashFunction { (params: { id: number; length: number; body: any[]; sendId: string }): void; diff --git a/entry/src/main/ets/common/utils/UdpJudge.ts b/entry/src/main/ets/common/utils/UdpJudge.ts index 6de5966d..73d493b9 100644 --- a/entry/src/main/ets/common/utils/UdpJudge.ts +++ b/entry/src/main/ets/common/utils/UdpJudge.ts @@ -21,7 +21,7 @@ export const initJudgeUdp = async () => { globalThis.lightLineUdp = lightLineUdp /*******************************************/ - globalThis.udpClient.onMessage(async (msg) => { + globalThis.udpClient.onMessage_1(async (msg) => { const stachArr = msg.split(',') if (stachArr[0] != '#DN_GD') { return diff --git a/entry/src/main/ets/common/utils/request.ts b/entry/src/main/ets/common/utils/request.ts index 732f6c04..c9ea6fc4 100644 --- a/entry/src/main/ets/common/utils/request.ts +++ b/entry/src/main/ets/common/utils/request.ts @@ -1,7 +1,7 @@ import http from '@ohos.net.http'; import convertxml from '@ohos.convertxml'; import prompt from '@ohos.prompt' -import { sendGreen } from '../../pages/judgeSDK/utils/judgeCommon'; +import { sendGreen } from '../../pages/judgeSDK/utils/judge-common'; import {GlobalConfig} from '../../config/index' const config = { host:GlobalConfig.host, @@ -41,7 +41,7 @@ export default async function request(req: any) { console.info('surenjun',baseUrl) const {result,responseCode} = await httpRequest.request(`${baseUrl}${url}${paramsStr}`, options); console.log('daihai5') - let res:any = xml ? xmlToJson(result) : result; + let res:any = xml ? xmlToJson(result,url) : result; console.log('daihai55') console.log('响应头地址' + JSON.stringify(res)) @@ -108,8 +108,8 @@ export default async function request(req: any) { } //xml格式转JSON -function xmlToJson(result) { - console.log("xmlToJson begin"); +function xmlToJson(result,url) { + console.log("xmlToJson begin",url); let xmlOptions = {trim : false, declarationKey:"_declaration", instructionKey : "_instruction", attributesKey : "_attributes", textKey : "_text", cdataKey:"_cdata", doctypeKey : "_doctype", @@ -125,7 +125,7 @@ function xmlToJson(result) { let {_elements:xmlArr} = conv.convertToJSObject(strXml, xmlOptions); console.log("xmlToJson deeml begin"); let res = deeml(xmlArr); - console.log("xmlToJson end"); + console.log("xmlToJson end",url); return res } diff --git a/entry/src/main/ets/entryability/EntryAbility.ts b/entry/src/main/ets/entryability/EntryAbility.ts index 83d07e69..ea4f9da0 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ts +++ b/entry/src/main/ets/entryability/EntryAbility.ts @@ -31,8 +31,6 @@ export default class EntryAbility extends UIAbility { globalThis.version = '2024.11.22.14' globalThis.judgeVersion = '2024.11.22.14' globalThis.videoVersion= '1.0' - globalThis.closeUDPSocket=true - globalThis.closeHeartSocket=true // globalThis.version = '2023.12.13.01' // globalThis.judgeVersion = '2023.09.30.1' // globalThis.videoVersion= '1.0' diff --git a/entry/src/main/ets/pages/CarCheck.ets b/entry/src/main/ets/pages/CarCheck.ets index 4c70b4e9..68a2740b 100644 --- a/entry/src/main/ets/pages/CarCheck.ets +++ b/entry/src/main/ets/pages/CarCheck.ets @@ -166,7 +166,7 @@ export default struct Index { getPLCInfo() { const that = this - globalThis.udpClient && globalThis.udpClient.onMessage((msg) => { + globalThis.udpClient && globalThis.udpClient.onMessage_1((msg) => { if (!this.breakFlag) { return } diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index c755bbdd..41b8eda3 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -216,9 +216,7 @@ struct Index { } async testXMLToJSONInWorker() { - let workerInstance = new worker.ThreadWorker('entry/ets/workers/worker.ts', { - name: 'FriendsMoments Worker' - }); + let workerInstance = new worker.ThreadWorker('entry/ets/workers/worker.ts'); const param = { carId: globalThis.carInfo?.carId, examinationRoomId: globalThis.carInfo?.examinationRoomId, @@ -231,12 +229,15 @@ struct Index { workerInstance.postMessage(param); workerInstance.onmessage = (e: MessageEvents): void => { console.log("baoyihu after postMessage :", JSON.stringify(e.data)); - if (e.data.isComplete) { + let workData: WorkData = e.data; + if (workData.isComplete) { router.pushUrl({ url: 'pages/ExaminerLogin', }, router.RouterMode.Single) } this.loading = false + workerInstance.terminate(); + } } @@ -258,8 +259,8 @@ struct Index { placeId: globalThis.carInfo.examinationRoomId } // globalThis.udpClient2.initHeartSendMsg(param,this.context) - if (!globalThis.closeHeartSocket) { - globalThis.udpClient2.sendMsg(param, this.context) + if (globalThis.udpClient2.getStatus()) { + globalThis.udpClient2.sendMsgExt(param, this.context) } } diff --git a/entry/src/main/ets/pages/Judge.ets b/entry/src/main/ets/pages/Judge.ets index de96cc50..7ea3cdbd 100644 --- a/entry/src/main/ets/pages/Judge.ets +++ b/entry/src/main/ets/pages/Judge.ets @@ -6,7 +6,7 @@ import LoadingPopup from './compontents/judge/LoadingPopup'; import DeductedPopup from './compontents/judge/DeductionPopup'; import AmplifyPopup from './compontents/judge/AmplifyPopup'; import Judge from './judgeSDK/judge'; -import { defaultJudgeConfigObj } from './judgeSDK/utils//judgeCommon'; +import { defaultJudgeConfigObj } from './judgeSDK/utils//judge-common'; import { CARINFO, CDSBInfo, @@ -21,13 +21,86 @@ import { import { chunkArr, formatTime, getCurrentHourTime, getCurrentTime } from '../common/utils/tools'; import { examJudgeEndExam } from './judgeSDK/api/index'; import { getSyncData } from '../common/service/initable'; -import { judgeConfig } from './judgeSDK/utils/judgeConfig'; +import { judgeConfig } from './judgeSDK/utils/judge-config'; import FileUtil from '../common/utils/File'; import SignDisplayCom from './compontents/signDisplayCom'; + @Entry @Component struct Index { + scroller: Scroller = new Scroller() + //页面通用字体大小 + @State FONTSIZE: number = 28 + @State BIGFONTSIZE: number = 28 + //结束考试弹窗 + @State endPopupVisible: boolean = false + //等待弹窗(考试及格,考试不及格使用) + @State loadingPopupVisible: boolean = false + //实时轨迹弹窗 + @State signDisplayComVisible: boolean = false + @State isDdxk: boolean = false; + @State time: string = '' + //考试用时 + @State examTime: number = 0 + //开始时间 + @State startTime: string = '00:00:00' + @State startFullTime: string = '' + @State startHourTime: string = '' + //科目类型 + @State examSubject: 2 | 3 = 3; + @State ddxkTime: number = 0; + @State ddxkKsxmArr: string[] = [''] + @State ddxkKfArr: string[] = [''] + @State xmmcStr: string = '' + @State carztStr: string = '' + @State kfArr: { + xmmcStr?: string, + score: string, + desc: string + }[] = [] + @State name: string = '' + @State idCard: string = '' + @State totalScore: number = 100 + //模拟考试项目 + @State projects: Project[] = [] + @State projectsObj: ProjectObj = {} + @State projectsCenterObj: ProjectObj = {} + @State markRuleListObj: MarkRule = {} + @State cdsbInfoObj: CDSBInfo = {} + @State timer: number = 0 + @State judgeConfig: { [k: string]: string }[] = [] + @State judgeConfigObj: { [k: string]: any } = defaultJudgeConfigObj + //流水号 + @State lsh: string = '' + @State kszp: string = '' + @State ksdd: string = '' + @State kssycs: string = '' + @State kslx: string = '' + //监管接口序列号 + @State serialNumber: number = 0 + @State carType: string = '' + @State carName: string = '' + @State isDeductedPopShow: boolean = false + @State isAmplifyPopShow: boolean = false + @State amplifiedImgIndex: number = 0 + @State judge: any = {} + //行驶距离 + @State jl: number = 0 + //应考里程 + @State examMileage: string = '0' + @State artSubject3Projects: string[] = ['直线', '会车', '变道', '超车', '掉头', '停车'] + @State artSubject3ProjectsCodesArr: string[] = ['3', '9', '4', '10', '12', '11'] + @State manualMarkRules: MarkRule[] = [] + //科目三评判初始化数据 + @State systemparmArr: SYSTEMPARMARR[] = [] + @State mapPointItemArr: MAPITEMPOINTITEM[] = [] + @State carinfoArrr: CARINFO[] = [] + @State mapPointArr: MAPPOINT[] = [] + private context = getContext(this) as common.UIAbilityContext; + private img: ImageBitmap = new ImageBitmap("/resources/base/media/1.png") + //已考的考试项目 + private wantInfos = [] async aboutToAppear() { globalThis.windowClass.setWindowSystemBarEnable(['']) @@ -127,9 +200,10 @@ struct Index { NoCancelId: mark.nocancelid * 1, GPS_SID: mark.gps_sid == 0 ? false : true } + const markserial = mark.markserial * 1; //筛选出人工评判的扣分 - if (Number(tempObj.markserial) > 100 && Number(tempObj.markserial) < 200) { + if (markserial > 100 && markserial < 200) { this.manualMarkRules.push(tempObj) } this.markRuleListObj[`${mark.itemno}_${mark.markserial}`] = { @@ -170,33 +244,6 @@ struct Index { this.examMileage = sys.v_value + ''; } - //364 绕车一周评判时机(1-开始考试后判 2-开始考试前判) - if(sys.v_no == '364' && sys.v_value == 2 ){ - let currentParams: any = router.getParams(); - const {sczb,kfdm} = currentParams; - kfdm.forEach(kf => { - const {xmdm, kfdm} = kf - const currentKf = this.markRuleListObj[`${xmdm}_${kfdm}`]; - const currentProject = this.projectsObj[xmdm] - this.kfArr.push({ - //扣分项目名称 - xmmcStr: currentProject.name, - //@ts-ignore - xmdm, - desc: currentKf.markshow, - score: currentKf.markreal, - markcatalog: currentKf.markcatalog, - markserial: currentKf.markserial, - kfxh: currentKf.kfxh - }) - this.totalScore += currentKf.markreal * 1; - }) - this.projectsObj['1'].type = kfdm.length ? '4':'3'; - this.projectsObj = { - ...this.projectsObj - } - } - this.judgeConfigObj[sys.v_no] = value }); this.judgeConfig = syssetJudgeConfigArr; @@ -253,8 +300,7 @@ struct Index { //初始化systemParam表 async initSystemKm3Param(sysParam?: SYSTEMPARMARR[]) { const systemParms: any = sysParam || await getSyncData('MA_SYSTEMPARM') - let currentParams: any = router.getParams(); - this.wayno = currentParams.wayno + const {isTrajectoryOpen} = judgeConfig systemParms.forEach((systemParm) => { @@ -492,7 +538,7 @@ struct Index { if (this.examSubject == 3) { Row() { Text('考试路线:').fontColor('#E5CCA1').fontSize(this.FONTSIZE) - Text(`线路${this.wayno}`).fontColor('#FFAD33').fontSize(this.FONTSIZE) + Text(`线路${globalThis.carInfo.wayno}`).fontColor('#FFAD33').fontSize(this.FONTSIZE) } } @@ -532,6 +578,7 @@ struct Index { Row() { Flex({ direction: FlexDirection.Column }) { + if (this.kfArr.length) { List({}) { ForEach(this.kfArr, (item) => { @@ -858,7 +905,6 @@ struct Index { if (this.isDeductedPopShow) { DeductedPopup({ currentItems: Reflect.ownKeys(this.projectsObj).map(projectKey => { - //@ts-ignore const project = this.projectsObj[projectKey] return project.type == '2' ? project.projectCode : '' }).filter(project => project !== ''), @@ -915,13 +961,11 @@ struct Index { // 获取是否能人工进项目 getIsExitManualProject = (index: number) => { const {judgeConfigObj,artSubject3ProjectsCodesArr,projectsObj} = this; - //不允许人工触发的项目列表,以","分隔 + const unExitManualProjects = judgeConfigObj['332'].split(',') || []; - //直线行驶中不进其他考试项目(0-否 1-是) const param348 = judgeConfigObj['348'] || '0'; - //里程不够允许手工点靠边停车(0-否 1-是) const param387 = judgeConfigObj['387'] || '0'; - //车上是否能进行人工操作(0-能1-不能人工评判2-不能人工进项目3-都不能) + if (judgeConfigObj['342'] === '3' || judgeConfigObj['342'] === '2') { return false } @@ -930,7 +974,6 @@ struct Index { return false } - //@ts-ignore if (param348 == '0' && projectsObj['9']?.type == 2) { return index === 0 ? true : false } @@ -942,76 +985,4 @@ struct Index { return true } - - scroller: Scroller = new Scroller() - //页面通用字体大小 - @State wayno:number = 0 - @State FONTSIZE: number = 28 - @State BIGFONTSIZE: number = 28 - //结束考试弹窗 - @State endPopupVisible: boolean = false - //等待弹窗(考试及格,考试不及格使用) - @State loadingPopupVisible: boolean = false - //实时轨迹弹窗 - @State signDisplayComVisible: boolean = false - @State isDdxk: boolean = false; - @State time: string = '' - //考试用时 - @State examTime: number = 0 - //开始时间 - @State startTime: string = '00:00:00' - @State startFullTime: string = '' - @State startHourTime: string = '' - //科目类型 - @State examSubject: 2 | 3 = 3; - @State ddxkTime: number = 0; - @State ddxkKsxmArr: string[] = [''] - @State ddxkKfArr: string[] = [''] - @State xmmcStr: string = '' - @State carztStr: string = '' - @State kfArr: { - xmmcStr?: string, - score: string, - desc: string - }[] = [] - @State name: string = '' - @State idCard: string = '' - @State totalScore: number = 100 - //模拟考试项目 - @State projects: Project[] = [] - @State projectsObj: ProjectObj = {} - @State projectsCenterObj: ProjectObj = {} - @State markRuleListObj: MarkRule = {} - @State cdsbInfoObj: CDSBInfo = {} - @State timer: number = 0 - @State judgeConfig: { [k: string]: string }[] = [] - @State judgeConfigObj: { [k: string]: any } = defaultJudgeConfigObj - //流水号 - @State lsh: string = '' - @State kszp: string = '' - @State ksdd: string = '' - @State kssycs: string = '' - @State kslx: string = '' - //监管接口序列号 - @State serialNumber: number = 0 - @State carType: string = '' - @State carName: string = '' - @State isDeductedPopShow: boolean = false - @State isAmplifyPopShow: boolean = false - @State amplifiedImgIndex: number = 0 - @State judge: any = {} - //行驶距离 - @State jl: number = 0 - //应考里程 - @State examMileage: string = '0' - @State artSubject3Projects: string[] = ['直线', '会车', '变道', '超车', '掉头', '停车'] - @State artSubject3ProjectsCodesArr: string[] = ['3', '9', '4', '10', '12', '11'] - @State manualMarkRules: MarkRule[] = [] - //科目三评判初始化数据 - @State systemparmArr: SYSTEMPARMARR[] = [] - @State mapPointItemArr: MAPITEMPOINTITEM[] = [] - @State carinfoArrr: CARINFO[] = [] - @State mapPointArr: MAPPOINT[] = [] - private context = getContext(this) as common.UIAbilityContext; - //已考的考试项目 } diff --git a/entry/src/main/ets/pages/Roads.ets b/entry/src/main/ets/pages/Roads.ets index ee85a8ba..3d0e2cf1 100644 --- a/entry/src/main/ets/pages/Roads.ets +++ b/entry/src/main/ets/pages/Roads.ets @@ -24,6 +24,7 @@ export default struct Index { const {no1,no2,no3,txt1,txt2} = systemParm; if (no1 == 4) { const temp = { no2, no3, txt1: decodeURI(txt1), txt2 } + console.info('surenjun', JSON.stringify(temp)) this.roadObj[no2] = no2 } }) @@ -56,8 +57,10 @@ export default struct Index { const roadArr = Reflect.ownKeys(this.roadObj).map((roadKey) => { return this.roadObj[roadKey] }); - const wayno = roadArr[Math.floor(Math.random()*roadArr.length)]; - this.goJudge(wayno) + globalThis.carInfo.wayno = roadArr[Math.floor(Math.random()*roadArr.length)]; + router.pushUrl({ + url: 'pages/Judge', + }, router.RouterMode.Single); }) ForEach(Reflect.ownKeys(this.roadObj), (roadIndex) => { ListItem() { @@ -78,7 +81,10 @@ export default struct Index { .height(220) .margin({ left: 5, bottom: 10 }) .onClick(async () => { - this.goJudge(this.roadObj[roadIndex]) + globalThis.carInfo.wayno = this.roadObj[roadIndex]; + router.pushUrl({ + url: 'pages/Judge', + }, router.RouterMode.Single); }) }) }.lanes(8).margin({ top: 50, left: 15 }) @@ -89,18 +95,6 @@ export default struct Index { } - goJudge(wayno) { - let currentParams: any = router.getParams() || {}; - const {sczb,kfdm} = currentParams; - router.replaceUrl({ - url: 'pages/Judge', - params:{ - sczb, - kfdm, - wayno - } - }, router.RouterMode.Single); - + outClick() { } - outClick(){} } \ No newline at end of file diff --git a/entry/src/main/ets/pages/TerminalInfos.ets b/entry/src/main/ets/pages/TerminalInfos.ets index dc26aa07..2564d567 100644 --- a/entry/src/main/ets/pages/TerminalInfos.ets +++ b/entry/src/main/ets/pages/TerminalInfos.ets @@ -4,8 +4,8 @@ import ethernet from '@ohos.net.ethernet'; import prompt from '@ohos.prompt' import { upDateTableByArray} from '../common/service/initable' import { getSyncData} from '../common/service/initable' -// import { getUDP, getUDP2 } from '../common/utils/GlobleUdp'; -// import { getTCP } from '../common/utils/GlobleTcp'; + + @Entry @Component struct Index { diff --git a/entry/src/main/ets/pages/UserInfo.ets b/entry/src/main/ets/pages/UserInfo.ets index d78c8ac0..dff3136f 100644 --- a/entry/src/main/ets/pages/UserInfo.ets +++ b/entry/src/main/ets/pages/UserInfo.ets @@ -14,9 +14,8 @@ import common from '@ohos.app.ability.common'; import { User } from './interfaces'; import WebRTCVoice from './webRTC/'; import promptAction from '@ohos.promptAction'; -import { getSyncData } from '../common/service/initable'; import { CandidateData, EmptyCandidateObject } from '../mock/CandidateData'; -import BoardPrePareSetPopup from './compontents/judge/BoardPrePareSetPopup' + @Entry @Component struct UserInfo { @@ -35,10 +34,6 @@ struct UserInfo { @State url: string = '' @State lsh: string = '' @State qkFlag: boolean = false - @State isBoardPrePareSetPopupOpen: boolean = false - @State isFirstBoardPrePareSetPopupBtnShow: boolean = false - @State isBoardPrePareSetPopupShow: boolean = false - @State sczbkf:{xmdm:number,kfdm:string}[] = [] @State currentUser: User = EmptyCandidateObject @State dataList: Array = [] @State list: Array = [] @@ -199,9 +194,7 @@ struct UserInfo { this.qkFn() } - async initData() { - this.sczbkf = [] - this.isFirstBoardPrePareSetPopupBtnShow = false; + initData() { this.stepFlag = false this.faceCompareSucess = 0 this.showFaceCompare = false @@ -223,15 +216,6 @@ struct UserInfo { } else { // this.getExaminationStudentInfoFn() } - const syssetParams = await getSyncData('MA_SYSSET'); - //@ts-ignore - syssetParams.forEach(sys => { - //364 绕车一周评判时机(1-开始考试后判 2-开始考试前判) - if(sys.v_no === '364'){ - this.isBoardPrePareSetPopupOpen = true; - } - }) - } async heartMsg() { @@ -262,7 +246,7 @@ struct UserInfo { placeId: globalThis.carInfo.examinationRoomId } - globalThis.udpClient2.sendMsg(param, this.context) + globalThis.udpClient2.sendMsgExt(param, this.context) } async initSysset() { @@ -413,7 +397,7 @@ struct UserInfo { placeId: globalThis.carInfo.examinationRoomId } - globalThis.udpClient2.sendMsg(param, this.context) + globalThis.udpClient2.sendMsgExt(param, this.context) if (res.examinationStuAbsentRsp.head.resultCode == '0') { this.pageIndex = 0 this.qkFlag = false @@ -547,7 +531,6 @@ struct UserInfo { build() { Column() { - TopLogo({ outFlag: $outFlag }).margin({ bottom: 10 }) Row() { Row() { @@ -644,72 +627,54 @@ struct UserInfo { .onClick(() => { this.qkFlag = true }) - - if( this.isBoardPrePareSetPopupOpen && !this.isFirstBoardPrePareSetPopupBtnShow){ - //上车准备 - Image($r('app.media.sczb_btn')).commStyle().onClick(()=>{ - this.isBoardPrePareSetPopupShow = true; - this.isFirstBoardPrePareSetPopupBtnShow = true; + Image($r('app.media.ksks_btn')) + .commStyle() + .onClick(() => { + this.faceCompareSucess = 0 + globalThis.statue = 2 + if (!this.currentUser.xm) { + return + } + // if(globalThis.spzdFlag){ + // promptAction.showToast({ + // message: '摄像头被遮挡', + // duration: 2000 + // }); + // return + // } + //TODO 科目三先写死 + globalThis.carInfo.examSubject = 3; + if (globalThis.singlePlay) { + const {examSubject} = globalThis.carInfo; + this.AccountTable.query('0', (result) => { + if (result.length == 0) { + this.AccountTable.insertData(this.currentUser, (id) => { + this.AccountTable.query('0', (result) => { + router.pushUrl({ + url: examSubject == 3 ? 'pages/Roads':'pages/Judge', + }, router.RouterMode.Single); + this.stopDeviceById() + }) + }) + } else { + this.AccountTable.updateData(this.currentUser, (id) => { + this.AccountTable.query('0', (result) => { + router.pushUrl({ + url: examSubject == 3?'pages/Roads':'pages/Judge', + }, router.RouterMode.Single); + this.stopDeviceById() + }) + }) + } + }) + return + } + if (this.FaceOpenStatue != '0') { + this.showFaceCompare = true + } else { + this.sfbdinterfaceFn() + } }) - }else{ - Image($r('app.media.ksks_btn')) - .commStyle() - .onClick(() => { - this.faceCompareSucess = 0 - globalThis.statue = 2 - if (!this.currentUser.xm) { - return - } - // if(globalThis.spzdFlag){ - // promptAction.showToast({ - // message: '摄像头被遮挡', - // duration: 2000 - // }); - // return - // } - //TODO 科目三先写死 - globalThis.carInfo.examSubject = 3; - if (globalThis.singlePlay) { - const {examSubject} = globalThis.carInfo; - this.AccountTable.query('0', (result) => { - if (result.length == 0) { - this.AccountTable.insertData(this.currentUser, (id) => { - this.AccountTable.query('0', (result) => { - router.pushUrl({ - url: examSubject == 3 ? 'pages/Roads':'pages/Judge', - params:{ - sczb:Number(this.isBoardPrePareSetPopupOpen), - kfdm:this.sczbkf - } - }, router.RouterMode.Single); - this.stopDeviceById() - }) - }) - } else { - this.AccountTable.updateData(this.currentUser, (id) => { - this.AccountTable.query('0', (result) => { - router.pushUrl({ - url: examSubject == 3?'pages/Roads':'pages/Judge', - params:{ - sczb:Number(this.isBoardPrePareSetPopupOpen), - kfdm:this.sczbkf - } - }, router.RouterMode.Single); - this.stopDeviceById() - }) - }) - } - }) - return - } - if (this.FaceOpenStatue != '0') { - this.showFaceCompare = true - } else { - this.sfbdinterfaceFn() - } - }) - } - } } @@ -754,19 +719,6 @@ struct UserInfo { .backgroundColor('#E6E3DF') .borderRadius(19 * this.ratio) } - - // 上车准备 - if(this.isBoardPrePareSetPopupShow){ - BoardPrePareSetPopup({ - closePopup:()=>{ - this.isBoardPrePareSetPopupShow = false - }, - confirmMark:(kfdm)=>{ - this.sczbkf= kfdm - } - }) - } - } .height('100%') .width('100%') diff --git a/entry/src/main/ets/pages/compontents/FaceCompare.ets b/entry/src/main/ets/pages/compontents/FaceCompare.ets index 01d5796c..33f9f505 100644 --- a/entry/src/main/ets/pages/compontents/FaceCompare.ets +++ b/entry/src/main/ets/pages/compontents/FaceCompare.ets @@ -172,7 +172,7 @@ export default struct FaceCompare { carNo: globalThis.carInfo.carNo, placeId: globalThis.carInfo.examinationRoomId } - globalThis.udpClient2.sendMsg(param, this.context) + globalThis.udpClient2.sendMsgExt(param, this.context) } async faceComparFn() { @@ -229,7 +229,7 @@ export default struct FaceCompare { this.callBackFlag = true } } - globalThis.udpClient2 && globalThis.udpClient2.sendMsg(param, this.context) + globalThis.udpClient2 && globalThis.udpClient2.sendMsgExt(param, this.context) clearInterval(this.interval) this.interval = setInterval(() => { if (this.callBackFlag) { @@ -239,7 +239,7 @@ export default struct FaceCompare { carNo: globalThis.carInfo.carNo, placeId: globalThis.carInfo.examinationRoomId, } - globalThis.udpClient2 && globalThis.udpClient2.sendMsg(param2, this.context) + globalThis.udpClient2 && globalThis.udpClient2.sendMsgExt(param2, this.context) } }, 1000) globalThis.udpClient2.setMsgCallBack((val) => { diff --git a/entry/src/main/ets/pages/compontents/SignDisplayCom.ets b/entry/src/main/ets/pages/compontents/SignDisplayCom.ets index 934bec84..fb142cc6 100644 --- a/entry/src/main/ets/pages/compontents/SignDisplayCom.ets +++ b/entry/src/main/ets/pages/compontents/SignDisplayCom.ets @@ -1,6 +1,5 @@ import router from '@ohos.router'; -import UdpClient from '../../common/utils/UdpClient'; -import FileLog from '../judgeSDK/utils/fileLog'; +import FileLog from '../judgeSDK/utils/file-log'; import RealTime from '../compontents/judge/RealTime'; import { GPSData, SignalData } from '../../mock'; import { SignalDataType } from '../../model'; @@ -21,7 +20,6 @@ export default struct SignDisplayCom { @State @Watch('outClick') outFlag: boolean = false; @State url: string = '' private timer = null - private udpClient: UdpClient = null private FileLog: FileLog private vocObj = null; @@ -308,13 +306,15 @@ export default struct SignDisplayCom { if (showBack) { - globalThis.udpClient.onMessage((msg) => { + this.ratio=1.2 + globalThis.udpClient&&globalThis.udpClient.onMessage_1((msg) => { console.log('msgmsg', msg) if (msg) { getSignal(msg) } }) } else { + this.ratio=1 clearInterval(globalThis.signalTimer) globalThis.signalTimer = setInterval(() => { const msgStr = globalThis.msgStr @@ -333,7 +333,7 @@ export default struct SignDisplayCom { const that = this const showBack = this.showBack; if (showBack) { - globalThis.udpClient.onMessage((msg) => { + globalThis.udpClient.onMessage_1((msg) => { getSignal(msg) }) } else { diff --git a/entry/src/main/ets/pages/compontents/judge/RealTime.ets b/entry/src/main/ets/pages/compontents/judge/RealTime.ets index 7f17973a..9a69e4b2 100644 --- a/entry/src/main/ets/pages/compontents/judge/RealTime.ets +++ b/entry/src/main/ets/pages/compontents/judge/RealTime.ets @@ -1,5 +1,5 @@ import apiJudgeSdk from 'libJudgeSdk.so'; -import Judge from '../../judgeSDK/utils/judgeReal'; +import Judge from '../../judgeSDK/utils/judge-real'; import { MarkRule, Project, ProjectObj } from '../../judgeSDK/api/judgeSDK.d'; import common from '@ohos.app.ability.common'; diff --git a/entry/src/main/ets/pages/judgeSDK/api/index.ts b/entry/src/main/ets/pages/judgeSDK/api/index.ts index 00b59907..6ca305c4 100644 --- a/entry/src/main/ets/pages/judgeSDK/api/index.ts +++ b/entry/src/main/ets/pages/judgeSDK/api/index.ts @@ -131,7 +131,6 @@ export function handleLog(level,infoStr, len){ * */ export async function examJudgeEndExam(){ - console.info('surenjun','考试结束调用') const temp = libJudgeSdk.examJudgeEndExam(); return await handle(temp,'examJudgeEndExam') } @@ -171,26 +170,6 @@ export async function examJudgeSetPerformCallback(fn){ const temp = libJudgeSdk.examJudgeSetPerformCallback(fn); return await handle(temp,'examJudgeSetPerformCallback') } - -/** - * - * @desc 语音播报结束 - * / - */ - -export async function examJudgeSoundEnd(param:{ - //项目代码 - itemno:number, - //语音码 - code:string, - //语音类型 - type:number, -}){ - const {itemno,code,type} = param; - const temp = libJudgeSdk.examJudgeSoundEnd(itemno,code,type); - return await handle(temp,'examJudgeSoundEnd') -} - /* * @desc通用处理函数 * diff --git a/entry/src/main/ets/pages/judgeSDK/api/judgeSDK.d.ts b/entry/src/main/ets/pages/judgeSDK/api/judgeSDK.d.ts index ba4eace8..4a49c751 100644 --- a/entry/src/main/ets/pages/judgeSDK/api/judgeSDK.d.ts +++ b/entry/src/main/ets/pages/judgeSDK/api/judgeSDK.d.ts @@ -16,8 +16,7 @@ export interface MarkRule{ itemno?:number markcatalog?:string markshow?:string - markserial?:string - markstandard?:number, + markserial?:number markreal?:number kfxh?:string onlyoneid?:number @@ -119,8 +118,7 @@ export interface EXAMDATA{ sound:{ xmdm:number, //语音播放文件代码 - code:string, - type:number + code:string }, //模拟灯光 mndg:string @@ -140,9 +138,7 @@ export interface SOUND { //项目代码 xmdm:number //语音播放提示代码 - code:string, - //0:普通,1:模拟灯光 - type:number + code:string } export interface SYSSET { v_no:string, @@ -151,7 +147,7 @@ export interface SYSSET { } export interface ProjectObj { - [k:string]:Project + [k:any]:Project } diff --git a/entry/src/main/ets/pages/judgeSDK/judge.ts b/entry/src/main/ets/pages/judgeSDK/judge.ts index 1428733c..c16d8f3c 100644 --- a/entry/src/main/ets/pages/judgeSDK/judge.ts +++ b/entry/src/main/ets/pages/judgeSDK/judge.ts @@ -2,16 +2,19 @@ import systemTime from '@ohos.systemDateTime'; import router from '@ohos.router'; import util from '@ohos.util'; import buffer from '@ohos.buffer'; + import { testKmItems, testMarkRules } from './dataTest/index'; import { EXAMDATA, SOUND } from './api/judgeSDK'; -import VoiceAnnounce from './utils/voiceAnnouncements'; -import FileModel from './utils/fileModel'; -import FilePhoto from './utils/filePhoto'; -import FileUtil from '../../common/utils/File'; -import FileLog from './utils/fileLog'; -import JudgeTask from './utils/judgeTask'; -import { judgeConfig } from './utils/judgeConfig'; +import VoiceAnnounce from './utils/voice-announcements'; +import FileModel from './utils/file-model'; +import FilePhoto from './utils/file-photo'; +import FileUtil from '../../common/utils/File'; +import FileLog from '../judgeSDK/utils/file-log'; + +import JudgeTask from './utils/judge-task'; +import SimulateLights from './utils/simulate-lights'; +import { judgeConfig } from './utils/judge-config'; import { uploadExamProgressData, writeObjectOut } from '../../api/judge'; import { @@ -33,33 +36,35 @@ import { plcStrToWXJson, promptWxCode, senorToWXDataStr -} from './utils/judgeCommon'; +} from './utils/judge-common'; import { examJudgeArtificialItem, examJudgeArtificialMark, examJudgeBeginExam, examJudgeEndExam, examJudgeInit, - examJudgeSoundEnd, + examJudgeMapSetParam, + examJudgeMapSetScaling, examJudgeRealExam, examJudgeSetLogCallback, examJudgeSetPerformCallback, examJudgeSetRealExamCallback } from './api/index'; import UsbService from '../../common/service/usbService'; - import Prompt from '@system.prompt'; const judgeTag = 'SURENJUN_JUDGE' export default class Judge { + constructor(judgeUI) { this.serialIndex = 1; this.judgeUI = judgeUI //语音播放工具 this.avPlayer = new VoiceAnnounce(); + new SimulateLights(this.avPlayer) //模型工具 this.fileModel = new FileModel(judgeUI.context); //文件工具 @@ -128,7 +133,7 @@ export default class Judge { console.info(judgeTag, '2.注册日志回调完成') let initInfo = isTrajectoryOpen ? JSON.parse(strArr[0]) : await this.getJudgeInitData(); - + console.log('SURENJUN_JUDGE',isJudgeInitBool,isTrajectoryOpen,JSON.stringify(initInfo)) //相关评判初始化只做一次 if (!isJudgeInitBool) { await fileLog.setExamJudgeData(initInfo) @@ -136,7 +141,6 @@ export default class Judge { globalThis.isJudgeInitBool = true console.info(judgeTag, '4.评判初始化完成') } else { - await fileLog.setExamJudgeData(initInfo) } globalThis.isJudge = true @@ -153,19 +157,24 @@ export default class Judge { this.performInfo = performInfo this.judgeUI.jl = Math.ceil((performInfo.qjjl + performInfo.dcjl) / 100) }) - // 3.开始考试 let beginExamInfo = isTrajectoryOpen ? { ...JSON.parse(strArr[1]), replay: 1 } : await getJudgeBeginData() - + console.log(judgeTag,'22222',JSON.stringify(beginExamInfo),strArr[1]) await fileLog.setExamJudgeData(beginExamInfo) + console.log(judgeTag,'333333') await examJudgeBeginExam(beginExamInfo); + console.log(judgeTag,'4444444') + console.info(judgeTag, '6.开始考试注册完成') avPlayer.playAudio(['voice/ksks.WAV']) + await examJudgeMapSetParam(640, 480); //设置参数宽、高 + await examJudgeMapSetScaling(120); //设置缩放比例,一般默认填100(就是100%的意思) ,数字越大视野越大,数字越小视野越小,不能为0 + this.judgeUI.draw = true // 处理轨迹plc信息 @@ -176,117 +185,13 @@ export default class Judge { // 处理实时udp里的plc信号 - globalThis.udpClient.onMessage(async (msg) => { + globalThis.udpClient.onMessage_1(async (msg) => { handleUdp(msg) }) + } - // 获取评判初始化数据 - getJudgeInitData = async () => { - const {getModelData,getKm3JudgeInitConfig} = this - const carInfo = globalThis.carInfo; - const { examSubject,plateNo,carId } = carInfo; - const {fileLog} = this - const judgeUI = this.judgeUI - const {projectsObj,cdsbInfoObj,markRuleListObj,carType,carName} = judgeUI - const examType = examSubject == 2 ? 'km2' : 'km3' - - let allitems = []; - - if (examSubject == 2) { - allitems = Reflect.ownKeys(cdsbInfoObj).map(cdsbKey => { - const cdsb = cdsbInfoObj[cdsbKey]; - const {xmdm,xmxh,modelKey} = cdsb - return { - xmdm, xmxh, model: getModelData(`${examType}/${modelKey}.txt`) - } - }) - } - const initInfo = { - kskm: examSubject * 1, - kchp: plateNo, - kchm: carId * 1, - kscx: carType, - cxcode: '1', - name: carName, - carmodel: getModelData(`${examType}/${carType}.txt`), - allitems, - mark: Reflect.ownKeys(markRuleListObj).map(ruleKey => (markRuleListObj[ruleKey])) || testMarkRules, - sysset: judgeUI.judgeConfig, - }; - - let km3Config = {} - - if (examSubject) { - km3Config = await getKm3JudgeInitConfig(); - } - // 获取科目三的评判配置 - console.info(judgeTag, '3.获取评判初始化数据完成') - return { - ...initInfo, - ...km3Config, - } - } - // 获取开始考试数据 - getJudgeBeginData = async () => { - const {code,name:examinerName} = globalThis.examinerInfo; - let currentParams: any = router.getParams(); - const {sczb,kfdm} = currentParams; - const {isExam} = this; - const judgeUI = this.judgeUI - const {projects,carType,isDdxk,ddxkTime,projectsCenterObj,ddxkKsxmArr,ddxkKfArr} = judgeUI; - const beginInfo = { - kgid: '012', - kgxm: decodeURI(examinerName || ''), - exam: isExam ? 1 : 0, - //是否回放 - replay: 0, - //生成的轨迹文件 - track: '', - xm: judgeUI.name, - sex: 0, - kslsh: judgeUI.lsh, - sfzmhm: judgeUI.idCard, - ksyy: '', - kscx: carType, - kkcs: 1, - sfyk: 0, - ykkkcs: 1, - wayno: judgeUI.wayno * 1, - czlx: 0, - kskssj: await systemTime.getCurrentTime(), - ksxm: projects.map(project => { - return { - xmdm: project.projectCode * 1, - xmxh: '', - } - }), - //断点续考 - ddxk: isDdxk ? 1 : 0, - ddkssj: ddxkTime, - ykxm: isDdxk ? (ddxkKsxmArr?.map(projectCenterCode => (projectsCenterObj[projectCenterCode]?.projectCode) * 1)) : [], - kfxm: isDdxk ? (ddxkKfArr?.map(kf => { - const [xmdm, kfdm] = kf.split(',') - return { - xmdm: xmdm * 1, - kfdm - } - })) : [], - yklc: 0, - special: [], - //TODO 科目三参数临时写死 - sczb: (sczb === undefined || sczb == 0)?0:1, - sczbkf:kfdm, - dmndg: false, - nitem1: false, - nitem41: false, - mfxx: false, - mfxxn: false - } - console.info(judgeTag, '5.获取开始考试数据完成') - return beginInfo - } // 项目开始接口同步 beginProject = async (ksxm) => { const carInfo = globalThis.carInfo; @@ -427,28 +332,28 @@ export default class Judge { fileLog.setExamJudgeWuxiData(data) console.info(judgeTag, '上传照片 end') } + // 评判语音提示 goJudgeVoice = async (sound: SOUND) => { - const {avPlayer,fileLog} = this; - const {xmdm,code,type} = sound; + const {avPlayer} = this; + const {xmdm,code} = sound; //判断是不是模拟灯光语音 - console.info(judgeTag,JSON.stringify(sound)) - if(type == 1){ + const isLight = code.slice(0, 3) === '417'; + if (isLight) { console.info(judgeTag, '模拟灯光开始播放:' + code) } avPlayer.playAudio([`voice/${code}.mp3`], true, () => { - if (type == 1) { + if (isLight) { console.info(judgeTag, '播放结束:' + code) - examJudgeSoundEnd({itemno:xmdm,code,type}) - fileLog.setExamJudgeData({ - method: 'examJudgeSoundEnd', - itemno: xmdm, - code, - type, + setTimeout(() => { + this.wav = 1; }) } }) + + } + // 处理考试结束 public handEndExam = async (isManual?: Boolean) => { const {isExam,judgeUI,endExam,handleSEP,avPlayer} = this; @@ -481,6 +386,26 @@ export default class Judge { } } + + // 当前项目转换 + getDqxmStr = (type) => { + const projectsObj = this.judgeUI.projectsObj + return projectsObj[type]?.abbreviation || '通用评判' + } + + // 扣分项目转换 + getKfStr = (code) => { + const markRuleListObj = this.judgeUI.markRuleListObj; + const thisMark = markRuleListObj[code] + return { + desc: thisMark.markshow, + score: thisMark.markreal, + markcatalog: thisMark.markcatalog, + markserial: thisMark.markserial, + kfxh: thisMark.kfxh + } + } + // 考试结束 public endExam = async (isManual?: Boolean) => { const carInfo = globalThis.carInfo; @@ -530,23 +455,55 @@ export default class Judge { }, 3000) } - // 当前项目转换 - getDqxmStr = (type) => { - const projectsObj = this.judgeUI.projectsObj - return projectsObj[type]?.abbreviation || '通用评判' - } - // 扣分项目转换 - getKfStr = (code) => { - const markRuleListObj = this.judgeUI.markRuleListObj; - const thisMark = markRuleListObj[code] + + // 获取评判初始化数据 + getJudgeInitData = async () => { + const {getModelData,getKm3JudgeInitConfig} = this + const carInfo = globalThis.carInfo; + const { examSubject,plateNo,carId } = carInfo; + const {fileLog} = this + const judgeUI = this.judgeUI + const {projectsObj,cdsbInfoObj,markRuleListObj,carType,carName} = judgeUI + + const examType = examSubject == 2 ? 'km2' : 'km3' + + let allitems = []; + + if (examSubject == 2) { + allitems = Reflect.ownKeys(cdsbInfoObj).map(cdsbKey => { + const cdsb = cdsbInfoObj[cdsbKey]; + const {xmdm,xmxh,modelKey} = cdsb + return { + xmdm, xmxh, model: getModelData(`${examType}/${modelKey}.txt`) + } + }) + } + const initInfo = { + kskm: examSubject * 1, + kchp: plateNo, + kchm: carId * 1, + kscx: carType, + cxcode: '1', + name: carName, + carmodel: getModelData(`${examType}/${carType}.txt`), + allitems, + mark: Reflect.ownKeys(markRuleListObj).map(ruleKey => (markRuleListObj[ruleKey])) || testMarkRules, + sysset: judgeUI.judgeConfig, + }; + + let km3Config = {} + + if (examSubject) { + km3Config = await getKm3JudgeInitConfig(); + } + // 获取科目三的评判配置 + console.info(judgeTag, '3.获取评判初始化数据完成') return { - desc: thisMark.markshow, - score: thisMark.markreal, - markcatalog: thisMark.markcatalog, - markserial: thisMark.markserial, - kfxh: thisMark.kfxh + ...initInfo, + ...km3Config, } } + // 消息心跳发送 getMessageHeartbeat = async (isEnd?: Boolean) => { const carInfo = globalThis.carInfo; @@ -646,6 +603,66 @@ export default class Judge { this.serialIndex += 1; return Array2Byte(tempArr) } + + // 获取开始考试数据 + getJudgeBeginData = async () => { + console.log('globalThis.carInfo.wayno',globalThis.carInfo.wayno) + const {code,name:examinerName} = globalThis.examinerInfo; + const {isExam,isTrajectoryOpen} = this; + const judgeUI = this.judgeUI + const {projects,carType,isDdxk,ddxkTime,projectsCenterObj,ddxkKsxmArr,ddxkKfArr} = judgeUI; + const beginInfo = { + kgid: '012', + kgxm: decodeURI(examinerName || ''), + exam: isExam ? 1 : 0, + //是否回放 + replay: 0, + //生成的轨迹文件 + track: '', + xm: judgeUI.name, + sex: 0, + kslsh: judgeUI.lsh, + sfzmhm: judgeUI.idCard, + ksyy: '', + kscx: carType, + kkcs: 1, + sfyk: 0, + ykkkcs: 1, + wayno: Number(globalThis.carInfo.wayno)|| 0, + czlx: 0, + kskssj: await systemTime.getCurrentTime(), + ksxm: projects.map(project => { + return { + xmdm: project.projectCode * 1, + xmxh: '', + } + }), + //断点续考 + ddxk: isDdxk ? 1 : 0, + ddkssj: ddxkTime, + ykxm: isDdxk ? (ddxkKsxmArr?.map(projectCenterCode => (projectsCenterObj[projectCenterCode]?.projectCode) * 1)) : [], + kfxm: isDdxk ? (ddxkKfArr?.map(kf => { + const [xmdm, kfdm] = kf.split(',') + return { + xmdm: xmdm * 1, + kfdm + } + })) : [], + yklc: 0, + special: [], + //TODO 科目三参数临时写死 + sczb: 0, + sczbkf: [], + dmndg: false, + nitem1: false, + nitem41: false, + mfxx: false, + mfxxn: false + } + console.info(judgeTag, '5.获取开始考试数据完成') + return beginInfo + } + //获取场地序号 getSbxh = (ksxm, xmxh) => { const {judgeUI} = this; @@ -660,6 +677,7 @@ export default class Judge { const sbxh = currentCdsb.sbbh || '00000000' return sbxh } + getSbbm = (ksxm, xmxh) => { const {judgeUI} = this; const {cdsbInfoObj,projectsObj} = judgeUI; @@ -672,6 +690,7 @@ export default class Judge { const sbxh = currentCdsb.sbbm || '00000000' return sbxh } + // 中心所有项目转换 getTranslateProject = () => { // const {testKmItems} = this; @@ -694,11 +713,13 @@ export default class Judge { } return arr.map(numStr => parseInt(numStr, 2)); } + // 获取考试项目详情 getProjectInfo = (projectCode) => { const judgeUI = this.judgeUI; return judgeUI.projectsObj[projectCode] } + // 获取模型数据 getModelData = (modelName) => { const modelPath = this.modelPath @@ -729,6 +750,7 @@ export default class Judge { itemno: itemno * 1, type: 1 }) + console.info(judgeTag, `人工评判进入项目-${itemno}`) } @@ -848,6 +870,8 @@ export default class Judge { } } + public plcStr: string + private judgeUI // 更改考试状态 goVoiceAnnounce = async (event, xmdm, kf, xmjs) => { const {projectsObj,judgeConfigObj} = this.judgeUI; @@ -913,14 +937,17 @@ export default class Judge { break } } + // 获取plc数据 getPlcData = async (plc: string) => { - const {fileLog,mndgStr,rmndg} = this; + const {fileLog,mndgStr,rmndg,wav} = this; await fileLog.setPlcProgressData(plc) //plc字符串转化成评判初始化数据 const tempData = await plcStrToJson(plc); //模拟灯光回放时刻 tempData.sensor.rmndg = rmndg; + //模拟灯光单个灯光结束时刻 + tempData.sensor.wav = wav; //模拟灯灯光灯光项目 tempData.sensor.mndg = mndgStr; //plc字符串转化成无锡所过程数据 @@ -931,6 +958,7 @@ export default class Judge { this.plcStr = plc; this.mndgStr = ''; this.rmndg = 0; + this.wav = 0; globalThis.msgStr = plc return tempData @@ -938,6 +966,7 @@ export default class Judge { // 处理轨迹plc信号 handleTrajectoryUdp = async (strArr) => { const {fileLog} = this; + console.log('kkkkk') let num = 2; const {usbService} = this; const judgeTimer = setInterval(async () => { @@ -1065,8 +1094,7 @@ export default class Judge { judgeUI.projectsObj = deepClone(copyProjectsObj) } } - public plcStr: string - private judgeUI + private fileLog private totalScore: number private folderPath: string @@ -1074,6 +1102,7 @@ export default class Judge { private avPlayer private carztStr: string private rmndg: 0 | 1 + private wav: 0 | 1 private mndgStr: string | undefined // 模拟灯光 setMndg = async (mndgStr: string) => { diff --git a/entry/src/main/ets/pages/judgeSDK/utils/file-photo.ts b/entry/src/main/ets/pages/judgeSDK/utils/file-photo.ts index fe7d8890..2cfbba54 100644 --- a/entry/src/main/ets/pages/judgeSDK/utils/file-photo.ts +++ b/entry/src/main/ets/pages/judgeSDK/utils/file-photo.ts @@ -3,7 +3,6 @@ import onvifclient from '@ohos.onvifclient'; import fs from '@ohos.file.fs' import util from '@ohos.util'; import FileUtil from '../../../common/utils/File' -import { takePhoto } from '../../../common/service/videoService'; interface Params{ userName:string @@ -33,10 +32,5 @@ export default class FilePhoto{ } public async getPhoto(){ - const {params,context,fileUtil} = this; - return new Promise(async (reslove)=>{ - const data=await takePhoto(params,context,'jt/',1) - reslove(data.base64) - }) } } \ No newline at end of file diff --git a/entry/src/main/ets/workers/worker.ts b/entry/src/main/ets/workers/worker.ts index 9262fb2f..b7a22f6f 100644 --- a/entry/src/main/ets/workers/worker.ts +++ b/entry/src/main/ets/workers/worker.ts @@ -35,6 +35,7 @@ workerPort.onmessage = (e: MessageEvents): void => { workerPort.postMessage({ isComplete: true }); }else{ workerPort.postMessage({ isComplete: false }); + } }) }else if(param.mode=='3'){ @@ -42,6 +43,10 @@ workerPort.onmessage = (e: MessageEvents): void => { getDoubleCeneterTable(param).then((ret)=>{ if (ret) { workerPort.postMessage({ isComplete: true }); + + }else{ + workerPort.postMessage({ isComplete: false }); + } }) }