fix: 对接1代协议
This commit is contained in:
		
							parent
							
								
									a86a2a675f
								
							
						
					
					
						commit
						8f6f1b2a77
					
				| @ -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