diff --git a/entry/src/main/ets/common/rearEndUnitsTool/tool/UdpByOne.ts b/entry/src/main/ets/common/rearEndUnitsTool/tool/UdpByOne.ts index cc8c3462..1385e0f8 100644 --- a/entry/src/main/ets/common/rearEndUnitsTool/tool/UdpByOne.ts +++ b/entry/src/main/ets/common/rearEndUnitsTool/tool/UdpByOne.ts @@ -131,6 +131,7 @@ export default class UdpByOne { let PTNLMsg = this.GPSMsg.match(/\$PTNL[^$]*/)[0]; let PTNLMsgArr = PTNLMsg.split(",")?.slice(0, 14); + // 组合GPS数据 // 状态83 newMessage[83] = GPGGAMsgArr[6]; @@ -230,7 +231,7 @@ export default class UdpByOne { newMessage[26] = parseInt(PLCByteArr[33], 2) + ''; // 方向盘角度 27 // TODO 档位 磁档位为外接信号 - newMessage[28] = globalThis.chuankoMsg == '0'?(parseInt(PLCByteArr[13], 2) + ''): globalThis.chuankoMsg; + newMessage[28] = (globalThis.chuankoMsg == '0' || globalThis.chuankoMsg == '' ||globalThis.chuankoMsg == undefined)?(parseInt(PLCByteArr[13], 2) + ''): globalThis.chuankoMsg; // newMessage[27] = globalThis.chuankoMsg // 超声波1 29 diff --git a/entry/src/main/ets/common/utils/UdpByOne.ts b/entry/src/main/ets/common/utils/UdpByOne.ts deleted file mode 100644 index 9ee24aa3..00000000 --- a/entry/src/main/ets/common/utils/UdpByOne.ts +++ /dev/null @@ -1,294 +0,0 @@ -import socket from '@ohos.net.socket'; -import { PLCGPSData } from '../../mock/PLCGPSData'; -import FileUtil from '../../common/utils/File'; -import { GlobalConfig } from '../../config/index'; - -// import { PLCGPSData } from '../../mock'; - -export default class UdpByOne { - // PLC udp - private PLCUDP: any; - // PLC localIp - private LocalIp: string = '192.168.7.170'; - // PLC localIpPort - private PLCLocalIpPort: string = '31012'; - private OppositeIp: string = '192.168.7.124' - // PLC oppositeIpPort - private PLCOppositeIpPort: string = '30012'; - // PLC消息 - private PLCMsg: ArrayBuffer; - // GPS udp - private GPSUDP: any; - // GPS localIp - // GPS localIpPort - private GPSLocalIpPort: string = '31013'; - // GPS oppositeIpPort - private GPSOppositeIpPort: string = '30013'; - // GPS消息 - private GPSMsg: any; - - private timer: number; - - constructor() { - this.init() - } - - async init(){ - const fileUtil = new FileUtil(globalThis.context) - const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt'); - const result = JSON.parse(data) - this.LocalIp = result.udplocalIp; - this.OppositeIp = result.udpOppositeIp; - - // 初始化UDP - this.PLCUDP = socket.constructUDPSocketInstance(); - // this.PLCUDP.bind(this.PLCLocalIp, this.PLCLocalIpPort); - this.PLCUDP.bind({ - address: this.LocalIp, port: parseInt(this.PLCLocalIpPort), family: 1 - }); - this.GPSUDP = socket.constructUDPSocketInstance(); - // this.GPSUDP.bind(this.GPSLocalIp, this.GPSLocalIpPort); - this.GPSUDP.bind({ - address: this.LocalIp, port: parseInt(this.GPSLocalIpPort), family: 1 - }); - - this.PLCUDP.on("message", (res, remoteInfo) => { - this.PLCMsg = res.message; - }) - - this.GPSUDP.on("message", (res1, remoteInfo) => { - let dataView = new DataView(res1.message) - let str = "" - for (let i = 0; i < dataView?.byteLength; ++i) { - let c = String.fromCharCode(dataView?.getUint8(i)) - if (c !== "\n") { - str += c - } - } - this.GPSMsg = str; - }) - } - // 重新绑定 - public rebind() { - this.PLCUDP.bind(this.LocalIp, this.PLCLocalIpPort); - this.GPSUDP.bind(this.LocalIp, this.GPSLocalIpPort); - } - - // PLC发送消息 - public sendPLCMsg(msg: string) { - this.PLCUDP.send({ - data: '111111', - address: { - address: this.OppositeIp, - port: parseInt(this.PLCOppositeIpPort), - } - }) - } - - // GPS发送消息 - public sendGPSMsg(msg: string) { - this.GPSUDP.send({ - data: '111111', - address: { - address: this.OppositeIp, - port: parseInt(this.GPSOppositeIpPort), - } - }) - } - - // 接受消息 - public receiveMsg(callback):number { - //TODO 临时处理关闭消息接收 - this.cancelMsg(this.timer) - this.timer = setInterval(() => { - let newMessage = this.handleMsg() - callback(newMessage) - }, 200) - return this.timer - } - - //取消订阅 - public cancelMsg(timer:number){ - clearInterval(timer) - } - - - - // 处理消息 - public handleMsg() { - let newMessage = PLCGPSData; - if (this.GPSMsg) { - // 使用正则表达式提取$GPGGA消息 - let GPGGAMsg = this.GPSMsg.match(/\$GPGGA[^$]*/)[0]; - let GPGGAMsgArr = GPGGAMsg ? GPGGAMsg?.split(",").slice(0, 15) : []; - // 使用正则提取$GPRMC消息 - let GPRMCMsg = this.GPSMsg.match(/\$GPRMC[^$]*/)[0]; - let GPRMCMsgArr = GPRMCMsg ? GPRMCMsg?.split(",").slice(0, 14) : []; - // 使用正则表达式提取$GPGST消息 - let GPGSTMatch = this.GPSMsg.match(/\$GPGST[^$]*/); - let GPGSTMsgArr = GPGSTMatch ? GPGSTMatch[0]?.split(",").slice(0, 9) : []; - // 使用正则提取$PTNL消息 - let PTNLMsg = this.GPSMsg.match(/\$PTNL[^$]*/)[0]; - let PTNLMsgArr = PTNLMsg.split(",")?.slice(0, 14); - - // 组合GPS数据 - // 状态83 - newMessage[83] = GPGGAMsgArr[6]; - // 收星数84 - newMessage[84] = GPGGAMsgArr[7]; - // 海拔高85 - newMessage[80] = GPGGAMsgArr[9]; - // 高度差86 - // 龄期87 - newMessage[87] = GPGGAMsgArr[13]; - // 维度因子88 - // 经度因子89 - // 航向角90 - newMessage[90] = PTNLMsgArr[3]; - // 俯仰角91 - newMessage[91] = PTNLMsgArr[5]; - // 航向角状态-收星数92 - newMessage[92] = PTNLMsgArr[10] + '-' + PTNLMsgArr[12].split('*')[0]; - // 年月日93 RMCMsgArr[9]为ddmmyy 日月年 转换为年月日 - newMessage[93] = - GPRMCMsgArr[9].slice(0, 2) + GPRMCMsgArr[9].slice(2, 4) + GPRMCMsgArr[9].slice(4, 6); - // 时分秒94 GPGGAMsgArr[1]为021126.00去掉小数点后的时间 - newMessage[94] = GPGGAMsgArr[1].replace(".", ""); - // 经度95 - newMessage[95] = GPGGAMsgArr[4]; - // 纬度96 - newMessage[96] = GPGGAMsgArr[2]; - // 速度97 - newMessage[97] = GPRMCMsgArr[7]; - } - if (this.PLCMsg) { - let dataView = new DataView(this.PLCMsg) - let PLCByteArr = [] - for (let i = 0; i < dataView?.byteLength; ++i) { - let c = dataView?.getUint8(i).toString(2).padStart(8, "0") - PLCByteArr.push(c.toString()) - } - if (PLCByteArr.length < 55) { - return newMessage.join(",") - } - // 左方向灯 2 - newMessage[2] = PLCByteArr[6][5]; - // 右方向灯 3 . - newMessage[3] = PLCByteArr[6][4]; - // 喇叭 4 - newMessage[4] = PLCByteArr[8][4]; - // 点火1 5 - newMessage[5] = PLCByteArr[8][7]; - // 点火2 6 - newMessage[6] = PLCByteArr[8][6]; - // 近光灯 7 - newMessage[7] = PLCByteArr[6][7]; - // 远光灯 8 - newMessage[8] = PLCByteArr[6][6]; - // 示廓灯 9 - newMessage[9] = PLCByteArr[6][2]; - // 雾灯 10 - // 雨刮器 11 - newMessage[11] = PLCByteArr[8][5]; - // 脚刹 12 - newMessage[12] = PLCByteArr[7][5]; - // 手刹 13 - newMessage[13] = PLCByteArr[7][4]; - // 主驾驶门 14 - newMessage[14] = PLCByteArr[7][7]; - // NC 15 - // TODO - // SA15 16 - // TODO - // 离合 17 - newMessage[17] = PLCByteArr[7][6]; - // 副刹车 18 - newMessage[18] = PLCByteArr[7][3]; - // 安全带 19 - newMessage[19] = PLCByteArr[7][0]; - // 双跳灯 20 - newMessage[20] = PLCByteArr[6][3]; - // 其他门 21 - // TODO - // 转速过高 22 - newMessage[22] = PLCByteArr[9][0]; - // 车速 23 - newMessage[23] = parseInt(PLCByteArr[11], 2)+''; - // 累计脉冲 24 - let Data25 = parseInt(PLCByteArr[25], 2); - let Data26 = parseInt(PLCByteArr[26], 2); - let Data27 = parseInt(PLCByteArr[27], 2); - let Data28 = parseInt(PLCByteArr[28], 2); - newMessage[24] = ((Data25 << 24) + (Data26 << 16) + (Data27 << 8) + Data28).toString(); - // 发动机转速 25 - let Data29 = parseInt(PLCByteArr[29], 2); - let Data30 = parseInt(PLCByteArr[30], 2); - let Data31 = parseInt(PLCByteArr[31], 2); - let Data32 = parseInt(PLCByteArr[32], 2); - newMessage[25] = ((Data29 << 24) + (Data30 << 16) + (Data31 << 8) + Data32).toString(); - // 熄火次数 26 - newMessage[26] = parseInt(PLCByteArr[33], 2) + ''; - // 方向盘角度 27 - // TODO 档位 磁档位为外接信号 - newMessage[28] = globalThis.chuankoMsg == '0'?(parseInt(PLCByteArr[13], 2) + ''): globalThis.chuankoMsg; - - // newMessage[27] = globalThis.chuankoMsg - // 超声波1 29 - newMessage[29] = (PLCByteArr[4][1] >0 ? '300' : '1200') - // 超声波2 30 - newMessage[30] = (PLCByteArr[4][0] >0 ? '300': '1200' ) - - //TODO 超声波3 临时写死 - newMessage[31] = '1200' - //TODO 超声波4 临时写死 - newMessage[32] = '1200' - // 触摸1 33 - // 触摸2 34 - // 触摸3 35 - // SCIO 36 - // SC1A_C 37 - // SC1B_C 38 - // SC2A_C 39 - // SC2B_C 40 - // SC3A_C 41 - // SC3B_C 42 - // SC4A_C 43 - // SC4B_C 44 - // SC5A_C 45 - // SC5B_C 46 - // SC6A_C 47 - // SC6B_C 48 - // 发送次数 49 - // 方向盘类型 50 - // 汽车类型 51 - // 接口心跳 52 - // 本机IP 53 - // 固件版本 54 - // 按键数值 55 - // GPS板卡类型 56 - // GPS板卡软件版本 57 - // 改正数次数/改正数大小 58 - // GPS数据次数/数据长度 59 - // GPS错误次数 60 - // 已工作时长/设定的工作时长 61 - // 改正数数据长度*数据长度-基准站RTCM改正数类型 62 - } - return newMessage.join(",") - } - - // PLC接收消息 - public receivePLCMsg() { - this.PLCUDP.on("message", (message, remoteInfo) => { - console.log(`PLC receive message from ${remoteInfo.address}:${remoteInfo.port} : ${message}`); - this.PLCMsg = message; - }) - } - - // GPS接收消息 - public receiveGPSMsg() { - this.GPSUDP.on("message", (message, remoteInfo) => { - console.log(`GPS receive message from ${remoteInfo.address}:${remoteInfo.port} : ${message}`); - this.GPSMsg = message; - }) - } -} \ No newline at end of file