feat: 修复一些问题
This commit is contained in:
		
							parent
							
								
									ed60046db6
								
							
						
					
					
						commit
						ed236df1d6
					
				| @ -1,6 +1,6 @@ | ||||
| import UdpClient from './UdpClient'; | ||||
| import UdpClientByCenter from './UdpClientByCenter'; | ||||
| import { getSyncData} from '../service/initable' | ||||
| import { getSyncData } from '../service/initable' | ||||
| import { dateFormat } from '../../common/utils/tools' | ||||
| import prompt from '@ohos.prompt' | ||||
| import TcpClient from './TcpClient'; | ||||
| @ -28,17 +28,18 @@ import TcpClient from './TcpClient'; | ||||
| //  }
 | ||||
| // })
 | ||||
| 
 | ||||
| export async function sendMsg(val){ | ||||
|   globalThis.udpClient1&&globalThis.udpClient1.sendMsg(val) | ||||
| export async function sendMsg(val) { | ||||
|   globalThis.udpClient1 && globalThis.udpClient1.sendMsg(val) | ||||
| } | ||||
| export async function getUDP() { | ||||
|   getSyncData('IpConfigTable').then((result:Array<any>)=>{ | ||||
|     console.log('result222',JSON.stringify(result)) | ||||
|     if(result.length){ | ||||
|       if(globalThis.udpClient&&globalThis.udpClient.closeUdp){ | ||||
|         globalThis.udpClient.closeUdp(()=>{ | ||||
| 
 | ||||
|           globalThis.udpClient.rebindUdp(result[0].udplocalIp, result[0].udplocalIpPort,result[0].udpOppositeIp,result[0].udpOppositeIpPort) | ||||
| export async function getUDP() { | ||||
|   getSyncData('IpConfigTable').then((result: Array<any>) => { | ||||
|     console.log('result222', JSON.stringify(result)) | ||||
|     if (result.length) { | ||||
|       if (globalThis.udpClient && globalThis.udpClient.closeUdp) { | ||||
|         globalThis.udpClient.closeUdp(() => { | ||||
| 
 | ||||
|           globalThis.udpClient.rebindUdp(result[0].udplocalIp, result[0].udplocalIpPort, result[0].udpOppositeIp, result[0].udpOppositeIpPort) | ||||
|           // globalThis.udpClient.rebindUdp('192.168.7.170', '20122','192.168.7.124','20022')
 | ||||
|           // setInterval(()=>{
 | ||||
|           //   globalThis.udpClient.sendMsg('111')
 | ||||
| @ -47,40 +48,41 @@ export async function getUDP() { | ||||
| 
 | ||||
|           // globalThis.udpClient = udpClient
 | ||||
|         }) | ||||
|       }else{ | ||||
|       } else { | ||||
| 
 | ||||
|         const udpClient: UdpClient =new UdpClient(result[0].udplocalIp, result[0].udplocalIpPort,result[0].udpOppositeIp,result[0].udpOppositeIpPort) | ||||
|         const udpClient: UdpClient = new UdpClient(result[0].udplocalIp, result[0].udplocalIpPort, result[0].udpOppositeIp, result[0].udpOppositeIpPort) | ||||
|         udpClient.bindUdp() | ||||
|         udpClient.sendMsg('111') | ||||
|         globalThis.udpClient = udpClient | ||||
|       } | ||||
|       // globalThis.udpClient = new UdpClient(result[0].localIp, result[0].localIpPort,result[0].oppositeIp,result[0].oppositeIpPort)
 | ||||
| 
 | ||||
|     }else{ | ||||
|       globalThis.udpClient={} | ||||
|       globalThis.udpClient.onMessage=()=>{} | ||||
|     } else { | ||||
|       globalThis.udpClient = {} | ||||
|       globalThis.udpClient.onMessage = () => { | ||||
|       } | ||||
|     } | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| export async function getUDP2() { | ||||
|   getSyncData('IpConfigTable').then(async (result:Array<any>)=>{ | ||||
|     console.log('result222',JSON.stringify(result)) | ||||
|     if(result.length){ | ||||
|       if(globalThis.udpClient2&&globalThis.udpClient2.closeUdp){ | ||||
|         globalThis.udpClient2.closeUdp(async ()=>{ | ||||
|   getSyncData('IpConfigTable').then(async (result: Array<any>) => { | ||||
|     console.log('result222', JSON.stringify(result)) | ||||
|     if (result.length) { | ||||
|       if (globalThis.udpClient2 && globalThis.udpClient2.closeUdp) { | ||||
|         globalThis.udpClient2.closeUdp(async () => { | ||||
|           // globalThis.udpClient2.rebindUdp(result[0].udplocalIp, '8800','112.80.35.83','11056')
 | ||||
|           globalThis.udpClient2.rebindUdp(result[0].udplocalIp, '8800',result[0].centerIp,result[0].heartPort) | ||||
|           globalThis.udpClient2.rebindUdp(result[0].udplocalIp, '8800', result[0].centerIp, result[0].heartPort) | ||||
|           // globalThis.udpClient2.rebindUdp(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort)
 | ||||
|           // globalThis.udpClient2.rebindUdp(result[0].udplocalIp, result[0].udpLocalIpByGPS,result[0].udpOppositeIp,result[0].udpOppositeIpPortByGPS)
 | ||||
|           globalThis.udpClient2.onMessage((val)=>{ | ||||
|           globalThis.udpClient2.onMessage((val) => { | ||||
|             // globalThis.udpClnt2.sendMsg(heartMsg(context))
 | ||||
|           }) | ||||
| 
 | ||||
|         }) | ||||
|       }else{ | ||||
|       } else { | ||||
|         // const udpClient: UdpClient =new UdpClient(result[0].udplocalIp, result[0].udpLocalIpByGPS,result[0].udpOppositeIp,result[0].udpOppositeIpPortByGPS)
 | ||||
|         const udpClient: UdpClientByCenter =new UdpClientByCenter(result[0].udplocalIp, '8800',result[0].centerIp,result[0].heartPort) | ||||
|         const udpClient: UdpClientByCenter = new UdpClientByCenter(result[0].udplocalIp, '8800', result[0].centerIp, result[0].heartPort) | ||||
|         // const udpClient: UdpClientByCenter =new UdpClientByCenter(result[0].udplocalIp, '8800','112.80.35.83','11056')
 | ||||
|         // const udpClient: UdpClient =new UdpClient(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort)
 | ||||
| 
 | ||||
| @ -89,20 +91,25 @@ export async function getUDP2() { | ||||
| 
 | ||||
|         // globalThis.udpClient2.sendMsg(heartMsg(context))
 | ||||
| 
 | ||||
|         globalThis.udpClient2.onMessage((val)=>{ | ||||
|         globalThis.udpClient2.onMessage((val) => { | ||||
| 
 | ||||
|           if(val.id=='32'){ | ||||
|             globalThis.signNum=val.body[1] | ||||
|           }else if(val.id=='46'){ | ||||
|           if (val.id == '32') { | ||||
|             globalThis.signNum = val.body[1] | ||||
|           } else if (val.id == '46') { | ||||
| 
 | ||||
|             let tmpList = [] | ||||
|             console.log('lsh',globalThis.lsh) | ||||
|             console.log('lsh', globalThis.lsh) | ||||
|             const str = globalThis.lsh | ||||
|             for (let i = 0;i < str.length; i++) { | ||||
|             for (let i = 0; i < str.length; i++) { | ||||
|               tmpList.push(this.string2Bytes(str.charCodeAt(i), 1 * 8)[0]) | ||||
|             } | ||||
| 
 | ||||
|             const param = { id: 47, list: tmpList, carNo: globalThis.carInfo.carNo, placeId: globalThis.carInfo.examinationRoomId } | ||||
|             const param = { | ||||
|               id: 47, | ||||
|               list: tmpList, | ||||
|               carNo: globalThis.carInfo.carNo, | ||||
|               placeId: globalThis.carInfo.examinationRoomId | ||||
|             } | ||||
|             globalThis.udpClient2.send(param) | ||||
|           } | ||||
| 
 | ||||
| @ -113,12 +120,14 @@ export async function getUDP2() { | ||||
|           // },1000)
 | ||||
|         }) | ||||
|       } | ||||
|     }else{ | ||||
|       globalThis.udpClient2={} | ||||
|       globalThis.udpClient2.onMessage=()=>{} | ||||
|     } else { | ||||
|       globalThis.udpClient2 = {} | ||||
|       globalThis.udpClient2.onMessage = () => { | ||||
|       } | ||||
|     } | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| function fillZero(str, len) { | ||||
|   str = str + ''; | ||||
|   if (str.length > len || !len) { | ||||
| @ -133,6 +142,7 @@ function fillZero(str, len) { | ||||
| 
 | ||||
|   return zeroStr + str; | ||||
| } | ||||
| 
 | ||||
| // function getByteToInt(arr){
 | ||||
| //   let a = list[0];
 | ||||
| //   let b = list[1];
 | ||||
| @ -140,17 +150,17 @@ function fillZero(str, len) { | ||||
| //   let id = Math.floor(+c/1000)
 | ||||
| // }
 | ||||
| export async function getUDPByTopLine() { | ||||
|   getSyncData('IpConfigTable').then((result:Array<any>)=>{ | ||||
|     if(result.length){ | ||||
|       if(globalThis.udpClientByTopLine&&globalThis.udpClientByTopLine.closeUdp){ | ||||
|         globalThis.udpClientByTopLine.closeUdp(()=>{ | ||||
|   getSyncData('IpConfigTable').then((result: Array<any>) => { | ||||
|     if (result.length) { | ||||
|       if (globalThis.udpClientByTopLine && globalThis.udpClientByTopLine.closeUdp) { | ||||
|         globalThis.udpClientByTopLine.closeUdp(() => { | ||||
| 
 | ||||
|           globalThis.udpClientByTopLine.rebindUdp(result[0].udplocalIp,'5509',result[0].udpOppositeIp,result[0].udpOppositeIpPort) | ||||
|           globalThis.udpClientByTopLine.rebindUdp(result[0].udplocalIp, '5509', result[0].udpOppositeIp, result[0].udpOppositeIpPort) | ||||
|           // globalThis.udpClient.rebindUdp('192.168.7.170', '20122','192.168.7.124','20022')
 | ||||
|         }) | ||||
|       }else{ | ||||
|       } else { | ||||
| 
 | ||||
|         const udpClient: UdpClient =new UdpClient(result[0].udplocalIp, '55509',result[0].udpOppositeIp,result[0].udpOppositeIpPort) | ||||
|         const udpClient: UdpClient = new UdpClient(result[0].udplocalIp, '55509', result[0].udpOppositeIp, result[0].udpOppositeIpPort) | ||||
|         // const udpClient: UdpClient =new UdpClient(result[0].udplocalIp, '8800','192.168.36.9','11111')
 | ||||
|         // const udpClient: UdpClient =new UdpClient('192.168.7.170', '20122','192.168.7.124','20022')
 | ||||
|         // globalThis.udpClient2.rebindUdp('192.168.7.170', '20122','192.168.7.124','20022')
 | ||||
| @ -160,22 +170,24 @@ export async function getUDPByTopLine() { | ||||
|       } | ||||
|       // globalThis.udpClient = new UdpClient(result[0].localIp, result[0].localIpPort,result[0].oppositeIp,result[0].oppositeIpPort)
 | ||||
| 
 | ||||
|     }else{ | ||||
|       globalThis.udpClientByTopLine={} | ||||
|       globalThis.udpClientByTopLine.onMessage=()=>{} | ||||
|     } else { | ||||
|       globalThis.udpClientByTopLine = {} | ||||
|       globalThis.udpClientByTopLine.onMessage = () => { | ||||
|       } | ||||
|     } | ||||
|   }) | ||||
| } | ||||
| export async function setTopLineUdp(){ | ||||
| 
 | ||||
| export async function setTopLineUdp() { | ||||
|   const config = await getSyncData('IpConfigTable'); | ||||
|   if(config && config[0] && config[0].udplocalIp){ | ||||
|   if (config && config[0] && config[0].udplocalIp) { | ||||
|     const {udplocalIp,udpOppositeIp,udpOppositeIpPort} = config[0]; | ||||
|     const udpClient: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '55509',udpOppositeIp,udpOppositeIpPort) | ||||
|     const udpClient: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '55509', udpOppositeIp, udpOppositeIpPort) | ||||
|     // const udpClient: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '8800','192.168.36.4','33333')
 | ||||
|     udpClient.bindUdp() | ||||
| 
 | ||||
|     return { | ||||
|       send(bytes){ | ||||
|       send(bytes) { | ||||
|         udpClient.sendHeadMsg(bytes) | ||||
|       } | ||||
|     } | ||||
| @ -183,21 +195,26 @@ export async function setTopLineUdp(){ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| export async function setJudgeUdp(){ | ||||
| export async function setJudgeUdp() { | ||||
|   const config = await getSyncData('IpConfigTable'); | ||||
|   if(config && config[0] && config[0].udplocalIp){ | ||||
|   if (config && config[0] && config[0].udplocalIp) { | ||||
|     const {udplocalIp,centerIp,gpsPort} = config[0]; | ||||
|     // const udpClient: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '8080','192.168.32.167','33333')
 | ||||
|     const udpClient: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '8080',centerIp,gpsPort) | ||||
|     const udpClient: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '8080', centerIp, gpsPort) | ||||
|     // const udpClient: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '8800','192.168.36.4','33333')
 | ||||
|     udpClient.bindUdp() | ||||
|     udpClient.onMessage((val)=>{ | ||||
|     udpClient.onMessage((val) => { | ||||
|     }) | ||||
|     globalThis.judgeUdpClient = udpClient; | ||||
|     return { | ||||
|       send(bytes){ | ||||
|         console.log('carInfo111',JSON.stringify(globalThis.carInfo)) | ||||
|         udpClient.sendMsg({id:45,list:bytes,carNo:globalThis.carInfo.carNo,placeId:globalThis.carInfo.examinationRoomId}) | ||||
|       send(bytes) { | ||||
|         console.log('carInfo111', JSON.stringify(globalThis.carInfo)) | ||||
|         udpClient.sendMsg({ | ||||
|           id: 45, | ||||
|           list: bytes, | ||||
|           carNo: globalThis.carInfo.carNo, | ||||
|           placeId: globalThis.carInfo.examinationRoomId | ||||
|         }) | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -14,164 +14,166 @@ | ||||
|  */ | ||||
| 
 | ||||
| import socket from '@ohos.net.socket'; | ||||
| import {Array2Byte} from '../utils/tools' | ||||
| import { Array2Byte } from '../utils/tools' | ||||
| 
 | ||||
| const TAG = '[PLC.UdpClient]' | ||||
| import prompt from '@ohos.prompt' | ||||
| 
 | ||||
| 
 | ||||
| export default class UdpClient { | ||||
|     private localIp: string = '' | ||||
|     private localIpPort: string = '' | ||||
|     private oppositeIp: string = '' | ||||
|     private oppositeIpPort: string = '' | ||||
|   private localIp: string = '' | ||||
|   private localIpPort: string = '' | ||||
|   private oppositeIp: string = '' | ||||
|   private oppositeIpPort: string = '' | ||||
| 
 | ||||
|     private udp: any = null | ||||
|   private udp: any = null | ||||
| 
 | ||||
|     constructor(udplocalIp: string, udplocalIpPort:string,udpOppositeIp: string,udpOppositeIpPort:string) { | ||||
|         this.localIp = udplocalIp | ||||
|         this.oppositeIp = udpOppositeIp | ||||
|         this.localIpPort = udplocalIpPort | ||||
|         this.oppositeIpPort = udpOppositeIpPort | ||||
|   constructor(udplocalIp: string, udplocalIpPort: string, udpOppositeIp: string, udpOppositeIpPort: string) { | ||||
|     this.localIp = udplocalIp | ||||
|     this.oppositeIp = udpOppositeIp | ||||
|     this.localIpPort = udplocalIpPort | ||||
|     this.oppositeIpPort = udpOppositeIpPort | ||||
| 
 | ||||
|         this.udp = socket.constructUDPSocketInstance(); | ||||
|     } | ||||
|     rebindUdp(localIp: string, localIpPort:string,oppositeIp: string,oppositeIpPort:string){ | ||||
|     this.udp = socket.constructUDPSocketInstance(); | ||||
|   } | ||||
| 
 | ||||
|         this.localIp = localIp | ||||
|         this.oppositeIp = oppositeIp | ||||
|         this.localIpPort = localIpPort | ||||
|         this.oppositeIpPort = oppositeIpPort | ||||
|   rebindUdp(localIp: string, localIpPort: string, oppositeIp: string, oppositeIpPort: string) { | ||||
| 
 | ||||
|         let promise = this.udp.bind({ | ||||
|             // address: '192.168.7.170', port: 20122, family: 1
 | ||||
|             // address: '192.168.7.170', port: 31013, family: 1
 | ||||
|             address: this.localIp, port: parseInt(this.localIpPort), family: 1 | ||||
|         }); | ||||
|         promise.then(() => { | ||||
|             console.log(`${TAG} udp bind success`); | ||||
|         }).catch(err => { | ||||
|     this.localIp = localIp | ||||
|     this.oppositeIp = oppositeIp | ||||
|     this.localIpPort = localIpPort | ||||
|     this.oppositeIpPort = oppositeIpPort | ||||
| 
 | ||||
|             console.log(`${TAG} udp bind failed:${JSON.stringify(err)}`); | ||||
|         }); | ||||
|     } | ||||
|     bindUdp() { | ||||
|         console.log('localIp',this.localIp) | ||||
|         console.log('localIpPort',this.localIpPort) | ||||
|         let promise = this.udp.bind({ | ||||
|             // address: '192.168.7.170', port: 20122, family: 1
 | ||||
|             // address: '192.168.7.170', port: 31013, family: 1
 | ||||
|             address: this.localIp, port: parseInt(this.localIpPort), family: 1 | ||||
|         }); | ||||
|         promise.then(() => { | ||||
|             console.log(`${TAG} udp bind success`); | ||||
|         }).catch(err => { | ||||
|     let promise = this.udp.bind({ | ||||
|       // address: '192.168.7.170', port: 20122, family: 1
 | ||||
|       // address: '192.168.7.170', port: 31013, family: 1
 | ||||
|       address: this.localIp, port: parseInt(this.localIpPort), family: 1 | ||||
|     }); | ||||
|     promise.then(() => { | ||||
|       console.log(`${TAG} udp bind success`); | ||||
|     }).catch(err => { | ||||
| 
 | ||||
|             console.log(`${TAG} udp bind failed:${JSON.stringify(err)}`); | ||||
|         }); | ||||
|     } | ||||
|       console.log(`${TAG} udp bind failed:${JSON.stringify(err)}`); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|     sendMsg(msg: string) { | ||||
|         let promise = this.udp.send({ | ||||
|             data: msg, | ||||
|             address: { | ||||
|                 // address: '192.168.7.124',
 | ||||
|                 // port: 30013,
 | ||||
|                 // address: '192.168.7.124',
 | ||||
|                 // port: 20022,
 | ||||
|                 address: this.oppositeIp, | ||||
|                 port: parseInt(this.oppositeIpPort), | ||||
|                 family: 1 | ||||
|   bindUdp() { | ||||
|     console.log('localIp', this.localIp) | ||||
|     console.log('localIpPort', this.localIpPort) | ||||
|     let promise = this.udp.bind({ | ||||
|       // address: '192.168.7.170', port: 20122, family: 1
 | ||||
|       // address: '192.168.7.170', port: 31013, family: 1
 | ||||
|       address: this.localIp, port: parseInt(this.localIpPort), family: 1 | ||||
|     }); | ||||
|     promise.then(() => { | ||||
|       console.log(`${TAG} udp bind success`); | ||||
|     }).catch(err => { | ||||
| 
 | ||||
|       console.log(`${TAG} udp bind failed:${JSON.stringify(err)}`); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   sendMsg(msg: string) { | ||||
|     let promise = this.udp.send({ | ||||
|       data: msg, | ||||
|       address: { | ||||
|         // address: '192.168.7.124',
 | ||||
|         // port: 30013,
 | ||||
|         // address: '192.168.7.124',
 | ||||
|         // port: 20022,
 | ||||
|         address: this.oppositeIp, | ||||
|         port: parseInt(this.oppositeIpPort), | ||||
|         family: 1 | ||||
|       } | ||||
|     }); | ||||
|     promise.then(() => { | ||||
|       console.log(`${TAG} ${this.oppositeIpPort} udp send success:${msg}`); | ||||
|     }).catch(err => { | ||||
|       console.log(`${TAG} udp send fail:${JSON.stringify(err)}`); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   onMessage(callback) { | ||||
| 
 | ||||
|     this.udp.on('message', value => { | ||||
|       // 收到的是ArrayBuffer 需要进行转换解析
 | ||||
|       globalThis.plcUdpError = false | ||||
|       if (value) { | ||||
| 
 | ||||
|         let dataView = new DataView(value.message) | ||||
|         //            console.log(`${TAG} udp message length:${dataView?.byteLength}`);
 | ||||
|         let str = "" | ||||
|         for (let i = 0; i < dataView?.byteLength; ++i) { | ||||
|           let c = String.fromCharCode(dataView?.getUint8(i)) | ||||
|           if (c !== "\n") { | ||||
|             str += c | ||||
|           } | ||||
|         } | ||||
|         console.log(`${TAG} udp on message array buffer:${str}`); | ||||
|         const strachArr = str.split(',') | ||||
|         if (strachArr[0] != '#DN_GD') { | ||||
|           return | ||||
|         } | ||||
|         callback(str) | ||||
|       } else { | ||||
|         callback('') | ||||
|       } | ||||
|     }); | ||||
| 
 | ||||
|     const arrRed = [0x55, 0xaa, 0x01, 0x01, 0x02, 0x00, 0x03, 0x00]; | ||||
|     const arrBlue = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00]; | ||||
|     const arrGreen = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x00, 0x03, 0x01]; | ||||
|     const arrBlueBuffer = Array2Byte(arrBlue).buffer | ||||
|     const arrRedBuffer = Array2Byte(arrRed).buffer | ||||
|     const arrGreenBugger = Array2Byte(arrGreen).buffer | ||||
| 
 | ||||
|     //监听udp是否断开
 | ||||
|     clearInterval(globalThis.messageTimer) | ||||
|     globalThis.messageTimer = setInterval(() => { | ||||
|       const lightLineUdp = globalThis.lightLineUdp | ||||
|       const isJudge = globalThis.isJudge | ||||
|       setTimeout(() => { | ||||
|         //程序断开
 | ||||
|         lightLineUdp?.send(globalThis.plcUdpError ? arrRedBuffer : (isJudge ? arrGreenBugger : arrBlueBuffer)); | ||||
|         if (globalThis.plcUdpError) { | ||||
|           prompt.showToast({ | ||||
|             message: 'plc udp信号丢失', | ||||
|             duration: 2000 | ||||
|           }); | ||||
|         } | ||||
|         globalThis.plcUdpError = true; | ||||
|       }, 2000) | ||||
|     }, 3000) | ||||
|   } | ||||
| 
 | ||||
|   closeUdp(callback) { | ||||
|     this.udp.close(err => { | ||||
|       if (err) { | ||||
| 
 | ||||
|       } else { | ||||
|         this.udp.getState((err, data) => { | ||||
|           if (err) { | ||||
|             console.log('getState fail'); | ||||
|             return; | ||||
|           } else { | ||||
|             if (!data.isisClose) { | ||||
|               setTimeout(() => { | ||||
|                 callback() | ||||
|               }, 1000) | ||||
|             } | ||||
|         }); | ||||
|         promise.then(() => { | ||||
|             console.log(`${TAG} ${this.oppositeIpPort} udp send success:${msg}`); | ||||
|         }).catch(err => { | ||||
|             console.log(`${TAG} udp send fail:${JSON.stringify(err)}`); | ||||
|         }); | ||||
|     } | ||||
|           } | ||||
|           console.log('getState success:' + JSON.stringify(data)); | ||||
|         }) | ||||
|         // let promise = this.udp.getState({});
 | ||||
|         // promise.then(data => {
 | ||||
|         //
 | ||||
|         //     console.log('getState success:' + JSON.stringify(data));
 | ||||
|         // }).catch(err => {
 | ||||
|         //     callback()
 | ||||
|         //     console.log('getState fail');
 | ||||
|         // });
 | ||||
|       } | ||||
|     }); | ||||
| 
 | ||||
|     onMessage(callback) { | ||||
| 
 | ||||
|         this.udp.on('message', value => { | ||||
|             // 收到的是ArrayBuffer 需要进行转换解析
 | ||||
|             globalThis.plcUdpError = false | ||||
|             if (value) { | ||||
| 
 | ||||
|                 let dataView = new DataView(value.message) | ||||
|                 //            console.log(`${TAG} udp message length:${dataView?.byteLength}`);
 | ||||
|                 let str = "" | ||||
|                 for (let i = 0;i < dataView?.byteLength; ++i) { | ||||
|                     let c = String.fromCharCode(dataView?.getUint8(i)) | ||||
|                     if (c !== "\n") { | ||||
|                         str += c | ||||
|                     } | ||||
|                 } | ||||
|                 console.log(`${TAG} udp on message array buffer:${str}`); | ||||
|                 const strachArr=str.split(',') | ||||
|                 if (strachArr[0] != '#DN_GD') { | ||||
|                     return | ||||
|                 } | ||||
|                 callback(str) | ||||
|             }else{ | ||||
|                 callback('') | ||||
|             } | ||||
|         }); | ||||
| 
 | ||||
|         const arrRed= [0x55, 0xaa, 0x01, 0x01, 0x02, 0x00, 0x03, 0x00]; | ||||
|         const arrBlue = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00]; | ||||
|         const arrGreen =[0x55,  0xaa, 0x01, 0x00, 0x02, 0x00, 0x03, 0x01]; | ||||
|         const arrBlueBuffer= Array2Byte(arrBlue).buffer | ||||
|         const arrRedBuffer = Array2Byte(arrRed).buffer | ||||
|         const arrGreenBugger = Array2Byte(arrGreen).buffer | ||||
| 
 | ||||
|         //监听udp是否断开
 | ||||
|         clearInterval(globalThis.messageTimer) | ||||
|         globalThis.messageTimer =  setInterval(()=>{ | ||||
|             const lightLineUdp = globalThis.lightLineUdp | ||||
|             const isJudge = globalThis.isJudge | ||||
|             setTimeout(()=>{ | ||||
|                 //程序断开
 | ||||
|                 lightLineUdp?.send( globalThis.plcUdpError?arrRedBuffer:(isJudge?arrGreenBugger:arrBlueBuffer)); | ||||
|                 if(globalThis.plcUdpError){ | ||||
|                     prompt.showToast({ | ||||
|                         message: 'plc udp信号丢失', | ||||
|                         duration: 2000 | ||||
|                     }); | ||||
|                 } | ||||
|                 globalThis.plcUdpError = true; | ||||
|             },2000) | ||||
|         },3000) | ||||
|     } | ||||
| 
 | ||||
|     closeUdp(callback) { | ||||
|          this.udp.close(err=>{ | ||||
|                  if(err){ | ||||
| 
 | ||||
|              }else{ | ||||
|                  this.udp.getState((err, data) => { | ||||
|                      if (err) { | ||||
|                          console.log('getState fail'); | ||||
|                          return; | ||||
|                      }else{ | ||||
|                          if(!data.isisClose){ | ||||
|                              setTimeout(()=>{ | ||||
|                                  callback() | ||||
|                              },1000) | ||||
|                          } | ||||
|                      } | ||||
|                      console.log('getState success:' + JSON.stringify(data)); | ||||
|                  }) | ||||
|                  // let promise = this.udp.getState({});
 | ||||
|                  // promise.then(data => {
 | ||||
|                  //
 | ||||
|                  //     console.log('getState success:' + JSON.stringify(data));
 | ||||
|                  // }).catch(err => {
 | ||||
|                  //     callback()
 | ||||
|                  //     console.log('getState fail');
 | ||||
|                  // });
 | ||||
|              } | ||||
|          }); | ||||
| 
 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -18,7 +18,7 @@ const PERMISSIONS: Array<string> = [ | ||||
|   'ohos.permission.CAMERA'] | ||||
| 
 | ||||
| @Component | ||||
| struct FaceCompare { | ||||
| export default struct FaceCompare { | ||||
|   constructor() { | ||||
|     super() | ||||
|   } | ||||
| @ -340,4 +340,4 @@ struct FaceCompare { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export default FaceCompare | ||||
| // export default FaceCompare | ||||
| @ -400,11 +400,11 @@ struct FaceCompare { | ||||
|       return | ||||
|     } | ||||
|     this.param = JSON.parse(data) | ||||
|     this.param.userName = JSON.parse(data).userName | ||||
|     this.param.ip = JSON.parse(data).ip | ||||
|     this.param.pwd = JSON.parse(data).pwd | ||||
|     this.param.port = JSON.parse(data).port | ||||
|     this.param.rlls = JSON.parse(data).rlls | ||||
|     // this.param.userName = JSON.parse(data).userName | ||||
|     // this.param.ip = JSON.parse(data).ip | ||||
|     // this.param.pwd = JSON.parse(data).pwd | ||||
|     // this.param.port = JSON.parse(data).port | ||||
|     // this.param.rlls = JSON.parse(data).rlls | ||||
|     console.log('this.parm', this.param.userName, this.param.pwd, this.param.ip, this.param.port, this.param.rlls) | ||||
|     this.controller.start() | ||||
|     // this.video_url = `rtsp://${this.param.userName}:${this.param.pwd}@${this.param.ip}:${this.param.port}/h264/ch${this.param.rlls}/main/av_stream`; | ||||
|  | ||||
							
								
								
									
										31
									
								
								entry/src/ohosTest/ets/test/GlobleUdp.test.ets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								entry/src/ohosTest/ets/test/GlobleUdp.test.ets
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium' | ||||
| 
 | ||||
| export default function GlobleUdpTest() { | ||||
|   describe('GlobleUdpTest', () => { | ||||
|     // Defines a test suite. Two parameters are supported: test suite name and test suite function. | ||||
|     beforeAll(() => { | ||||
|       // Presets an action, which is performed only once before all test cases of the test suite start. | ||||
|       // This API supports only one parameter: preset action function. | ||||
|     }) | ||||
|     beforeEach(() => { | ||||
|       // Presets an action, which is performed before each unit test case starts. | ||||
|       // The number of execution times is the same as the number of test cases defined by **it**. | ||||
|       // This API supports only one parameter: preset action function. | ||||
|     }) | ||||
|     afterEach(() => { | ||||
|       // Presets a clear action, which is performed after each unit test case ends. | ||||
|       // The number of execution times is the same as the number of test cases defined by **it**. | ||||
|       // This API supports only one parameter: clear action function. | ||||
|     }) | ||||
|     afterAll(() => { | ||||
|       // Presets a clear action, which is performed after all test cases of the test suite end. | ||||
|       // This API supports only one parameter: clear action function. | ||||
|     }) | ||||
|     it('assertEqual', 0, () => { | ||||
|       // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. | ||||
|       let a = 'test' | ||||
|       // Defines a variety of assertion methods, which are used to declare expected boolean conditions. | ||||
|       expect(a).assertEqual('test') | ||||
|     }) | ||||
|   }) | ||||
| } | ||||
| @ -1,5 +1,7 @@ | ||||
| import GlobleUdpTest from './GlobleUdp.test' | ||||
| import abilityTest from './Ability.test' | ||||
| 
 | ||||
| export default function testsuite() { | ||||
|   abilityTest() | ||||
|   GlobleUdpTest() | ||||
| } | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "hvigorVersion": "2.1.1", | ||||
|   "hvigorVersion": "3.0.9", | ||||
|   "dependencies": { | ||||
|     "@ohos/hvigor-ohos-plugin": "2.1.1" | ||||
|     "@ohos/hvigor-ohos-plugin": "3.0.9" | ||||
|   } | ||||
| } | ||||
| } | ||||
							
								
								
									
										3
									
								
								hvigor/hvigor-wrapper.js
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										3
									
								
								hvigor/hvigor-wrapper.js
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user