//import UdpClient from './UdpClient'; import UdpClientByCenter from './UdpClientByCenter'; import { getSyncData } from '../service/initable'; import { getChuankouFn } from '../../common/service/indexService'; import FileUtil from '../../common/utils/File'; import { GlobalConfig } from '../../config/index'; import { Array2Byte, string2Bytes } from './tools'; export async function sendMsg(val) { // globalThis.udpClient1&&globalThis.udpClient1.sendMsg(val) } // obj export async function getUDP(context, errorFlag?) { return new Promise(async (reslove, reject) => { const fileUtil = new FileUtil(context) const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt'); console.log('ttttt', data) if (data === '' || data === undefined) { console.log(` getUDP has no IPConfigTable `); globalThis.udpClient = {} reslove('') } else { const result = JSON.parse(data) 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.udplocalIp, result.udplocalIpPort, result.udpOppositeIp, result.udpOppositeIpPort) globalThis.udpClient.sendMsg('111', null) AppStorage.setOrCreate('host',`http://${result.centerIp}:${result.centerPort}`) globalThis.udpClient.onError_Callback(() => { console.log('getUDPgetUDPgetUDP') getUDP(context, true) if (errorFlag && globalThis.udpClient && globalThis.udpClient.onMessage_1) { globalThis.udpClient.onMessage_1 = globalThis.udpClient.onMessage_1 } }) reslove(`http://${result.centerIp}:${result.centerPort}`) // globalThis.udpClient.onError_resend(globalThis.udpClient.onMessage_1?globalThis.udpClient.onMessage_1:()=>{}) }, 1000) }) } else { // 未绑定 console.log(` getUDP has no udclent and bind `); console.log('ttttttdata', JSON.stringify(result)) const udpClient: UdpClientByCenter = new UdpClientByCenter(result.udplocalIp, result.udplocalIpPort, result.udpOppositeIp, result.udpOppositeIpPort) udpClient.bindUdp() udpClient.sendMsg('111') AppStorage.setOrCreate('host',`http://${result.centerIp}:${result.centerPort}`) globalThis.udpClient = udpClient globalThis.udpClient.onMessage_1(() => { console.log('getUDPonMessage_1msgmsgByGloalUdp') }) globalThis.udpClient.onError_Callback(() => { getUDP(context, true) if (errorFlag && globalThis.udpClient && globalThis.udpClient.onMessage_1) { globalThis.udpClient.onMessage_1 = globalThis.udpClient.onMessage_1 } }) getChuankouFn() reslove(`http://${result.centerIp}:${result.centerPort}`) } } }) } // 中心 export async function getUDP2(context, errorFlag?) { const fileUtil = new FileUtil(context) const carInfo=AppStorage.get('carInfo') const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt'); if (data === '' || data === undefined) { globalThis.udpClient2 = {} globalThis.udpClient2.setMsgCallBack = () => { } } else { const result = JSON.parse(data) console.log(` getUDP2 has IPConfigTable `); if (globalThis.udpClient2 && globalThis.udpClient2.closeUdp) { console.log(` getUDP2 has udclent ,close and rebind `); globalThis.udpClient2.closeUdp(async () => { setTimeout(() => { globalThis.udpClient2.rebindUdp(result.udplocalIp, '8800', carInfo?.udpAddress, carInfo?.messagePort) globalThis.udpClient2.onError_Callback(() => { getUDP2(context, true); if (errorFlag && globalThis.udpClient2 && globalThis.udpClient2.onMessage_2) { globalThis.udpClient2.onMessage_2 = globalThis.udpClient2.onMessage_2 } }) }, 1000) }) } else { // 未绑定 console.log(` getUDP2 has no udclent and bind `); const udpClient2: UdpClientByCenter = new UdpClientByCenter(result.udplocalIp, '8800', carInfo?.udpAddress, carInfo?.messagePort) console.info('surenjun udp2=> ', carInfo?.messagePort) await udpClient2.bindUdp() await udpClient2.onError_Callback(() => { getUDP2(context, true); if (errorFlag && globalThis.udpClient2 && globalThis.udpClient2.onMessage_2) { globalThis.udpClient2.onMessage_2 = globalThis.udpClient2.onMessage_2 } }) if (!errorFlag) { await udpClient2.onMessage_2((val) => { if (val.id == '32') { AppStorage.setOrCreate('signNum',val.body[1]) if (val.body[0] == 5) { console.info('surenjun', `接收到平台扣分请求,请求指令为:${val.body[1]}`) globalThis.udpEvent.sendOnKf(val.body[1]) } if (val.body[0] == 11) { console.info('surenjun', 'GlobalUdp收到beginExam事件') globalThis.udpEvent.sendBeginExam(val.body[1]) } if (val.body[0] == 12) { console.info('surenjun', 'GlobalUdp收到endExam事件') globalThis.udpEvent.sendEndExam(val.body[1]) } } if (val.id == '36') { //获取远程扣分内容 console.info('surenjun', '考车收到远程扣分项目内容,扣分代码:' + val.body[0]) globalThis.udpEvent.sendKfContent(val.body[0]) } else if (val.id == '46') { let tmpList = [] const str = AppStorage.get('lsh') for (let i = 0; i < str.length; i++) { tmpList.push(this.string2Bytes(str.charCodeAt(i), 1 * 8)[0]) } const param = { id: 47, list: tmpList, carNo: carInfo.carNo, placeId: carInfo.examinationRoomId } globalThis.udpClient2.send(param) } }) } globalThis.udpClient2 = udpClient2 } } } // 灯光 export async function setTopLineUdp() { const context=AppStorage.get('context') const fileUtil = new FileUtil(context) const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt'); const config = JSON.parse(data) // const config = await getSyncData('IpConfigTable'); if (config && config.udplocalIp) { const { udplocalIp, udpOppositeIp, udpOppositeIpPort } = config; const udpClient: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '55509', udpOppositeIp, udpOppositeIpPort) udpClient.bindUdp() return { send(bytes) { udpClient.sendHeadMsg(bytes) } } } } // let judgeUdpTimer // 评判 export async function setJudgeUdp() { const context=AppStorage.get('context') const fileUtil = new FileUtil(context) const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt'); const config = JSON.parse(data) const carInfo=AppStorage.get('carInfo') // // const config = await getSyncData('IpConfigTable'); let udpIndex = 0; let currentUdpIndex = 0; clearInterval(judgeUdpTimer) judgeUdpTimer = setInterval(() => { udpIndex += 1; }, 1000); if (config && config.udplocalIp) { const { udplocalIp } = config; const udpClientbyCenter: UdpClientByCenter = new UdpClientByCenter( udplocalIp, '8080', carInfo?.udpAddress, carInfo?.hintPort ) console.info('surenjun hintPort=> ', carInfo?.hintPort) await udpClientbyCenter.onError_Callback(() => { }) await udpClientbyCenter.bindUdp() await udpClientbyCenter.onMessage_2((val) => { }) //远程监听开始考试、结束考试、扣分指令 // globalThis.judgeUdpClient = udpClientbyCenter; return { send(bytes) { if (udpIndex > currentUdpIndex) { udpClientbyCenter.sendMsgExt({ id: 45, list: bytes, carNo: carInfo.carNo, placeId: carInfo.examinationRoomId }) currentUdpIndex = udpIndex } }, //申请远程扣分查询 askKf(directives) { globalThis.udpClient2.sendMsgExt({ id: 35, list: [directives], carNo: carInfo.carNo, placeId: carInfo.examinationRoomId, }) console.info('surenjun', `考车查询扣分项目内容,请求指令为:${directives}`) }, //确定远程扣分 confirmKf(directives, code) { globalThis.udpClient2.sendMsgExt({ id: 37, list: Array2Byte([string2Bytes(directives, 8), string2Bytes(code, 8)]), carNo: carInfo.carNo, placeId: carInfo.examinationRoomId }) console.info('surenjun', `考车发送确定扣分指令,指令为:${directives}`) }, } } } // globalThis.udpClient.bindUdp()