diff --git a/entry/src/main/ets/common/utils/UdpByOne.ts b/entry/src/main/ets/common/utils/UdpByOne.ts index b834ac62..b6a5cd56 100644 --- a/entry/src/main/ets/common/utils/UdpByOne.ts +++ b/entry/src/main/ets/common/utils/UdpByOne.ts @@ -11,7 +11,7 @@ export default class UdpByOne { // PLC oppositeIpPort private PLCOppositeIpPort: string; // PLC消息 - private PLCMsg: string; + private PLCMsg: number[]; // GPS udp private GPSUDP: any; // GPS localIp @@ -72,35 +72,150 @@ $PTNL,AVR,021126.00,+47.3119,Yaw,+0.4832,Tilt,,,0.817,3,1.7,25*09` this.GPSMsg = `$GPGGA,021126.00,2955.5885178,N,11953.8931034,E,5,12,0.8,13.191,M,6.838,M,2.000,0000*49$GPRMC,021126.00,A,2955.5885178,N,11953.8931034,E,4.881,318.3,170623,0.0,E,F*37$GPGST,021126.00,3.30,1.77,3.30,0.0000,1.77,1.25,3.30*67$PTNL,AVR,021126.00,+47.3119,Yaw,+0.4832,Tilt,,,0.817,3,1.7,25*09`; // 使用正则表达式提取$GPGGA消息 let GPGGAMsg = this.GPSMsg.match(/\$GPGGA[^$]*/)[0]; - let GPGGAMsgArr = GPGGAMsg.split(',').slice(0, 15); + let GPGGAMsgArr = GPGGAMsg.split(",").slice(0, 15); // 使用正则提取$GPRMC消息 let GPRMCMsg = this.GPSMsg.match(/\$GPRMC[^$]*/)[0]; - let GPRMCMsgArr = GPRMCMsg.split(',').slice(0, 14); + let GPRMCMsgArr = GPRMCMsg.split(",").slice(0, 14); // 使用正则表达式提取$GPGST消息] let GPGSTMsg = this.GPSMsg.match(/\$GPGST[^$]*/)[0]; - let GPGSTMsgArr = GPGSTMsg.split(',').slice(0, 9); + let GPGSTMsgArr = GPGSTMsg.split(",").slice(0, 9); // 使用正则提取$PTNL消息 let PTNLMsg = this.GPSMsg.match(/\$PTNL[^$]*/)[0]; - let PTNLMsgArr = PTNLMsg.split(',').slice(0, 14); + let PTNLMsgArr = PTNLMsg.split(",").slice(0, 14); // 组合GPS数据 - // 状态 - // 收星数 - // 海拔高 - - // 高度差 - // 龄期 - // 维度因子 - // 经度因子 - // 航向角 - // 俯仰角 - // 航向角状态-收星数 - // 年月日 - // 时分秒 - // 经度 - // 纬度 - // 速度 - + // 状态83 + newMessage[83] = GPRMCMsgArr[6]; + // 收星数84 + newMessage[84] = PTNLMsgArr[10]; + // 海拔高85 + newMessage[80] = GPGGAMsgArr[9]; + // 高度差86 + // 龄期87 + newMessage[87] = GPGSTMsgArr[11]; + // 维度因子88 + // 经度因子89 + // 航向角90 + newMessage[90] = PTNLMsgArr[3]; + // 俯仰角91 + newMessage[91] = PTNLMsgArr[5]; + // 航向角状态-收星数92 + newMessage[92] = PTNLMsgArr[8]; + // 年月日93 RMCMsgArr[9]为ddmmyy 日月年 转换为年月日 + newMessage[93] = + GPRMCMsgArr[9].slice(4, 6) + + GPRMCMsgArr[9].slice(2, 4) + + GPRMCMsgArr[9].slice(0, 2); + // 时分秒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]; + let PLCByteArr = this.PLCMsg.map((num) => num.toString(2).padStart(8, "0")); + console.log(PLCByteArr[1][2]); + // 左方向灯 2 + newMessage[2] = PLCByteArr[6][2]; + // 右方向灯 3 + newMessage[3] = PLCByteArr[6][3]; + // 喇叭 4 + newMessage[4] = PLCByteArr[8][2]; + // 点火1 5 + newMessage[5] = PLCByteArr[8][0]; + // 点火2 6 + newMessage[6] = PLCByteArr[8][1]; + // 近光灯 7 + newMessage[7] = PLCByteArr[6][0]; + // 远光灯 8 + newMessage[8] = PLCByteArr[6][1]; + // 示廓灯 9 + newMessage[9] = PLCByteArr[6][5]; + // 雾灯 10 + // 雨刮器 11 + newMessage[11] = PLCByteArr[8][2]; + // 脚刹 12 + newMessage[12] = PLCByteArr[7][2]; + // 手刹 13 + newMessage[13] = PLCByteArr[7][3]; + // 主驾驶门 14 + newMessage[14] = PLCByteArr[7][0]; + // NC 15 + // TODO + // SA15 16 + // TODO + // 离合 17 + newMessage[17] = PLCByteArr[7][1]; + // 副刹车 18 + newMessage[18] = PLCByteArr[7][4]; + // 安全带 19 + newMessage[19] = PLCByteArr[7][7]; + // 双跳灯 20 + newMessage[20] = PLCByteArr[6][4]; + // 其他门 21 + // TODO + // 转速过高 22 + newMessage[22] = PLCByteArr[9][7]; + // 车速 23 + newMessage[23] = PLCByteArr[11]; + // 累计脉冲 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] = PLCByteArr[33]; + // 方向盘角度 27 + // 档位 28 + newMessage[27] = PLCByteArr[15]; + // 超声波1 29 + let Data52 = parseInt(PLCByteArr[52], 2); + let Data53 = parseInt(PLCByteArr[53], 2); + newMessage[29] = ((Data52 << 8) + Data53).toString(); + // 超声波2 30 + let Data54 = parseInt(PLCByteArr[54], 2); + let Data55 = parseInt(PLCByteArr[55], 2); + newMessage[30] = ((Data54 << 8) + Data55).toString(); + // 超声波3 31 + // 超声波4 32 + // 触摸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 } // PLC接收消息