dev #65
@ -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接收消息
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user