diff --git a/entry/src/main/ets/common/lidar/radar/index.ts b/entry/src/main/ets/common/lidar/radar/index.ts index c75d45ee..dd36bbdf 100644 --- a/entry/src/main/ets/common/lidar/radar/index.ts +++ b/entry/src/main/ets/common/lidar/radar/index.ts @@ -7,7 +7,6 @@ import systemTime from '@ohos.systemDateTime'; export default class RadarClient{ public localRadarUdp: UdpClient - private radarMessageIds:messageIds = {} constructor(params:{ deviceIpArr:string[], @@ -15,18 +14,19 @@ export default class RadarClient{ udplocalIp:string }) { const {deviceIpArr,devicePortArr,udplocalIp} = params; - //雷达UDP this.localRadarUdp = new UdpClient('radar', { deviceIpArr, devicePortArr, udplocalIp }); } - onMessage(callback){ - this.localRadarUdp.onClientMessage((str) => { - const data = this.radarStrToObj(str) - callback( data) - }) + //雷达信息监听 + async onRadarClientMessage(callback){ + this.localRadarUdp.onClientMessage((radarStr)=>{ + const radarObj = this.radarStrToObj(radarStr) + callback(radarObj) + console.log(radarStr+''); + }); } // 雷达数据解析 @@ -47,13 +47,6 @@ export default class RadarClient{ tempObj.rc = this.getMachineRc(machineArr[12]) } - // 视觉数据解析 - async visionStrToObj(str:string){ - //$SBXS,85,20250603115529563,B202,赣A78QK6@360803200602253517@1@20250603115523132@@@@@李从星@001@@001@2506455453517,05,*SBJS - - //$SBXS,213,20250603090553562,B207,邓凯倩@@320250603085259@000000100000001001001000@14@870@28520185@115902060@1@828@4294943473@359.8704@0@0@1111111111011111111111111111111100000000@0@0000000000@3142@0@0@@C1@赣A78QK6@0@001-001@360121200401040528,01,*SBJS - } - getMachineItem(str){ const strArr = str.split('_'); return { @@ -90,4 +83,8 @@ export default class RadarClient{ } } + async offMessage(){ + this.localRadarUdp.closeUdp() + } + } \ No newline at end of file diff --git a/entry/src/main/ets/common/lidar/udpClient/index.ts b/entry/src/main/ets/common/lidar/udpClient/index.ts index f94da548..034ca48e 100644 --- a/entry/src/main/ets/common/lidar/udpClient/index.ts +++ b/entry/src/main/ets/common/lidar/udpClient/index.ts @@ -51,42 +51,11 @@ export default class LidaUdpClient{ this.offMessage() //message this.udpClient.on('message',(buffer)=>{ - const str = this.arrayBuffetToStr(buffer.message); - //解析数据 - switch (this.type){ - //激光雷达 - case 'radar': - const radarObj = this.radarStrToObj(str) - callback(radarObj) - break; - //TODO 视觉 - case 'vision': - const visionObj = this.visionStrToObj(str) - callback(str) - break; - } - console.log(str+''); + const dataStr = this.arrayBuffetToStr(buffer.message); + callback(dataStr) }); } - // 雷达数据解析 - async radarStrToObj(str:string){ - //$MachineVision,30.950^0_-1_1_1,-1^-1_-1_-1_1,-1^-1_-1_-1_1,-1^-1_-1_-1_1,-1^-1_-1_-1_1,-1^-1_-1_-1_1,-1^-1_-1_-1_1,-1^-1_-1_-1_1,-1^-1_-1_-1_1,-1^-1_-1^-1,43083,0_0_0_0,-1^-1_-1_-1_1,-1^-1_-1_-1_1,-1^-1_-1_-1_1,10102264201.69632,1.1.1.2,0*+$VisualInfo,1_-7205_3480_-7300_3350_-7655_3610_-7560_3735_,*+[ { "bodyangle": "1.00", "bodyx": "0.490", "bodyy": "31.300", "elevation": "2.403", "geoangle": "323.90", "geolat": "29.92678975", "geolon": "119.89823128", "id": 1, "type": 2 } ] - const [machine, visual, obj] = str.split('+'); - const machineArr = machine.split(','); - let tempObj:Machine = {}; - tempObj.sj = await systemTime.getCurrentTime(); - tempObj.xh = Number(machineArr[10]); - ['qf', 'hf', 'zq', 'zh', 'yq', 'yh', 'zc', 'yc', 'zf'].forEach((c,index) => { - tempObj[c] = this.getMachineItem(machineArr[index + 1]); - }); - ['lq', 'lz', 'ly'].forEach((c,index) => { - tempObj[c] = this.getMachineItem(machineArr[index + 13]); - }); - tempObj.wt = this.getMachineWt(machineArr[10]) - tempObj.rc = this.getMachineRc(machineArr[12]) - } - // 视觉数据解析 async visionStrToObj(str:string){ //头部姿态 驾驶行为 前方障碍物 @@ -95,42 +64,6 @@ export default class LidaUdpClient{ //$SBXS,213,20250603090553562,B207,邓凯倩@@320250603085259@000000100000001001001000@14@870@28520185@115902060@1@828@4294943473@359.8704@0@0@1111111111011111111111111111111100000000@0@0000000000@3142@0@0@@C1@赣A78QK6@0@001-001@360121200401040528,01,*SBJS } - getMachineItem(str){ - const strArr = str.split('_'); - return { - //对象编号 - bh:strArr[2], - //车类型 - lx:strArr[3], - //纵向距离 - jz:strArr[0].split('^')[0], - //横向距离 - jh:strArr[0].split('^')[1], - //速度 - sd:strArr[1] - } - } - - //获取前方数据 - getMachineWt(str){ - return { - xz:str.split('_')[0].split('^')[0], - xh:str.split('_')[0].split('^')[1], - zz:str.split('_')[1].split('^')[0], - zh:str.split('_')[1].split('^')[1], - } - } - - //获取绕车一周数据 - getMachineRc(str){ - return { - zh:str.split('_')[0], - yh:str.split('_')[1], - yq:str.split('_')[2], - zq:str.split('_')[3] - } - } - //arrayBuffer转string arrayBuffetToStr(arrayBuffer){ let dataView = new DataView(arrayBuffer) diff --git a/entry/src/main/ets/common/lidar/vision/index.ts b/entry/src/main/ets/common/lidar/vision/index.ts index 825a0f67..ee3c5956 100644 --- a/entry/src/main/ets/common/lidar/vision/index.ts +++ b/entry/src/main/ets/common/lidar/vision/index.ts @@ -6,7 +6,6 @@ import systemTime from '@ohos.systemDateTime'; export default class VisionClient{ public localVisionUdp: UdpClient - private visionMessageIds:messageIds = {} constructor(params:{ deviceIpArr:string[], @@ -21,22 +20,76 @@ export default class VisionClient{ }); } - onMessage(callback){ + // 视觉信息监听 + async onVisionClientMessage(callback){ this.localVisionUdp.onClientMessage((str) => { const data = this.visionStrToObj(str) - callback( data) + callback(data) }) } // 视觉数据解析 - async visionStrToObj(str:string){ - //$SBXS,85,20250603115529563,B202,赣A78QK6@360803200602253517@1@20250603115523132@@@@@李从星@001@@001@2506455453517,05,*SBJS + async visionStrToObj(visionStr:string){ + const visionDataArr = visionStr.split(','); + const [dataType, message] = [visionDataArr[3] , visionDataArr[4]]; + const messageArr = (message || '').split('@') + const sj = await systemTime.getCurrentTime(); + switch (dataType){ + //头部姿态 + case 'A204':return { + //系统时间戳 + sj, + //置信度 + df:Number(messageArr[0]), + //摇头旋转角度 + yt:Number(messageArr[1]), + //左右旋转角度 + zy:Number(messageArr[2]), + //上下点头角度 + sx:Number(messageArr[3]), + } + //驾驶行为 + case 'A206':return { + //系统时间戳 + sj, + //控制方向盘 + fx:Number(messageArr[0]), + //手伸出窗外 + ch:Number(messageArr[1]), + } + //前方障碍物 + case 'A205':return { + //系统时间戳 + sj, + //信号灯 + xd:messageArr[0], + //识别前方物体 + wt:Number(messageArr[1]), + //中心隔离设施或中心线 + zx:Number(messageArr[2]), + //后车超车信号 + hc:messageArr[3] + } + } + //头部姿态 驾驶行为 前方障碍物 + //$SBXS,85,20250603115529563,B202,赣A78QK6@360803200602253517@1@20250603115523132@@@@@李从星@001@@001@2506455453517,05,*SBJS //$SBXS,213,20250603090553562,B207,邓凯倩@@320250603085259@000000100000001001001000@14@870@28520185@115902060@1@828@4294943473@359.8704@0@0@1111111111011111111111111111111100000000@0@0000000000@3142@0@0@@C1@赣A78QK6@0@001-001@360121200401040528,01,*SBJS } - //扣分 - //开始考试 - //结束考试 + + + // 初始化指令 + async visionInit(){} + // 开始考试指令 + async visionExamStart(){} + // 结束考试指令 + async visionExamEnd(){} + // 安全员开始录像 + async visionStartRecord(){} + // 安全员结束录像 + async visionEndRecord(){} + // 安全员信号传输 + async visionSignalTransfer(){} } \ No newline at end of file