feat: 一代机协议更新
This commit is contained in:
		
							parent
							
								
									d5ddd183e4
								
							
						
					
					
						commit
						c3bccb98f8
					
				| @ -27,6 +27,8 @@ export default class UdpByOne { | |||||||
|   // GPS消息
 |   // GPS消息
 | ||||||
|   private GPSMsg: any; |   private GPSMsg: any; | ||||||
| 
 | 
 | ||||||
|  |   private timer: number; | ||||||
|  | 
 | ||||||
|   constructor() { |   constructor() { | ||||||
|     this.init() |     this.init() | ||||||
|   } |   } | ||||||
| @ -49,51 +51,12 @@ export default class UdpByOne { | |||||||
|     this.GPSUDP.bind({ |     this.GPSUDP.bind({ | ||||||
|       address: this.LocalIp, port: parseInt(this.GPSLocalIpPort), family: 1 |       address: this.LocalIp, port: parseInt(this.GPSLocalIpPort), family: 1 | ||||||
|     }); |     }); | ||||||
|   } |  | ||||||
|   //   重新绑定
 |  | ||||||
|   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) { |  | ||||||
|     console.log('heartMsg', 'getCallback') |  | ||||||
|     this.sendPLCMsg('1111') |  | ||||||
|     this.sendGPSMsg('1111') |  | ||||||
|     this.PLCUDP.on("message", (res, remoteInfo) => { |     this.PLCUDP.on("message", (res, remoteInfo) => { | ||||||
|       console.log('heartMsg', 'getPlc') |  | ||||||
|       console.log('heartMsg', 'getGps') |  | ||||||
|       this.PLCMsg = res.message; |       this.PLCMsg = res.message; | ||||||
|       //   组合数据
 |  | ||||||
|       let newMessage = this.handleMsg() |  | ||||||
|       callback(newMessage) |  | ||||||
|     }) |     }) | ||||||
|  | 
 | ||||||
|     this.GPSUDP.on("message", (res1, remoteInfo) => { |     this.GPSUDP.on("message", (res1, remoteInfo) => { | ||||||
|       console.log('heartMsg', 'getGps') |  | ||||||
|       let dataView = new DataView(res1.message) |       let dataView = new DataView(res1.message) | ||||||
|       let str = "" |       let str = "" | ||||||
|       for (let i = 0; i < dataView?.byteLength; ++i) { |       for (let i = 0; i < dataView?.byteLength; ++i) { | ||||||
| @ -103,18 +66,57 @@ export default class UdpByOne { | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       this.GPSMsg = str; |       this.GPSMsg = str; | ||||||
|       if(str.length < 10){ |  | ||||||
|         return |  | ||||||
|       } |  | ||||||
|       let newMessage = this.handleMsg() |  | ||||||
|       callback(newMessage) |  | ||||||
|     }) |     }) | ||||||
|   } |   } | ||||||
|  |   //   重新绑定
 | ||||||
|  |   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() { |   public handleMsg() { | ||||||
|     let newMessage = PLCGPSData; |     let newMessage = PLCGPSData; | ||||||
|     console.log('heartMsg000', PLCGPSData) |  | ||||||
|     if (this.GPSMsg) { |     if (this.GPSMsg) { | ||||||
|       // 使用正则表达式提取$GPGGA消息
 |       // 使用正则表达式提取$GPGGA消息
 | ||||||
|       let GPGGAMsg = this.GPSMsg.match(/\$GPGGA[^$]*/)[0]; |       let GPGGAMsg = this.GPSMsg.match(/\$GPGGA[^$]*/)[0]; | ||||||
| @ -169,7 +171,6 @@ export default class UdpByOne { | |||||||
|       if (PLCByteArr.length < 55) { |       if (PLCByteArr.length < 55) { | ||||||
|         return newMessage.join(",") |         return newMessage.join(",") | ||||||
|       } |       } | ||||||
|       console.log("heartMsgheartMsg1", PLCByteArr.toString()); |  | ||||||
|       // 左方向灯 2
 |       // 左方向灯 2
 | ||||||
|       newMessage[2] = PLCByteArr[6][5]; |       newMessage[2] = PLCByteArr[6][5]; | ||||||
|       // 右方向灯 3 .
 |       // 右方向灯 3 .
 | ||||||
| @ -229,17 +230,18 @@ export default class UdpByOne { | |||||||
|       newMessage[26] = parseInt(PLCByteArr[33], 2) + ''; |       newMessage[26] = parseInt(PLCByteArr[33], 2) + ''; | ||||||
|       // 方向盘角度 27
 |       // 方向盘角度 27
 | ||||||
|       // TODO 档位 磁档位为外接信号
 |       // TODO 档位 磁档位为外接信号
 | ||||||
|       newMessage[28] = parseInt(PLCByteArr[13], 2) + ''; |       newMessage[28] = globalThis.chuankoMsg == '0'?(parseInt(PLCByteArr[13], 2) + ''): globalThis.chuankoMsg; | ||||||
|  | 
 | ||||||
|       // newMessage[27] = globalThis.chuankoMsg
 |       // newMessage[27] = globalThis.chuankoMsg
 | ||||||
|       // 超声波1 29
 |       // 超声波1 29
 | ||||||
|       let Data52 = parseInt(PLCByteArr[52], 2); |       newMessage[29] = (PLCByteArr[4][1] >0 ? '300' : '1200') | ||||||
|       let Data53 = parseInt(PLCByteArr[53], 2); |  | ||||||
| 
 |  | ||||||
|       newMessage[29] = (PLCByteArr[4][1] >0 ? 800 : 0) +'' |  | ||||||
|       // 超声波2 30
 |       // 超声波2 30
 | ||||||
|       newMessage[30] =  (PLCByteArr[4][0] >0 ? 800:0 )+'' |       newMessage[30] =  (PLCByteArr[4][0] >0 ? '300': '1200' ) | ||||||
|       // 超声波3 31
 | 
 | ||||||
|       // 超声波4 32
 |       //TODO 超声波3 临时写死
 | ||||||
|  |       newMessage[31] = '1200' | ||||||
|  |       //TODO 超声波4 临时写死
 | ||||||
|  |       newMessage[32] = '1200' | ||||||
|       // 触摸1 33
 |       // 触摸1 33
 | ||||||
|       // 触摸2 34
 |       // 触摸2 34
 | ||||||
|       // 触摸3 35
 |       // 触摸3 35
 | ||||||
| @ -271,9 +273,6 @@ export default class UdpByOne { | |||||||
|       // 已工作时长/设定的工作时长 61
 |       // 已工作时长/设定的工作时长 61
 | ||||||
|       // 改正数数据长度*数据长度-基准站RTCM改正数类型 62
 |       // 改正数数据长度*数据长度-基准站RTCM改正数类型 62
 | ||||||
|     } |     } | ||||||
| 
 |  | ||||||
|     console.log('heartMsgend', newMessage.join(",")) |  | ||||||
| 
 |  | ||||||
|     return newMessage.join(",") |     return newMessage.join(",") | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user