diff --git a/entry/src/main/ets/common/lidar/index.ts b/entry/src/main/ets/common/newkm3/index.ts similarity index 56% rename from entry/src/main/ets/common/lidar/index.ts rename to entry/src/main/ets/common/newkm3/index.ts index a6d09500..402cf699 100644 --- a/entry/src/main/ets/common/lidar/index.ts +++ b/entry/src/main/ets/common/newkm3/index.ts @@ -1,19 +1,20 @@ import emitter from '@ohos.events.emitter'; -import UdpClient from './udpClient/index' +import radarClient from './radar/index' +import visionClient from './vision/index' import FileUtil from '../../common/utils/File'; import { GlobalConfig } from '../../config/index'; -import {messageIds} from './type' +import { messageIds } from './type' class Lidar { - public localRadarUdp: UdpClient - public localVisionUdp: UdpClient + public localRadarUdp: radarClient + public localVisionUdp: visionClient //是否新科目三设备 private isNewKm3: Boolean //雷达消息Ids - private radarMessageIds:messageIds = {} + private radarMessageIds: messageIds = {} ///视觉消息Ids - private senseMessageIds:messageIds = {} + private senseMessageIds: messageIds = {} constructor() { this.init() @@ -27,13 +28,13 @@ class Lidar { //新科目三设备 if (deviceType == '2') { //雷达UDP - this.localRadarUdp = new UdpClient('radar', { + this.localRadarUdp = new radarClient({ deviceIpArr, devicePortArr, udplocalIp }) - this.localRadarUdp.onClientMessage(async (obj) => { + this.localRadarUdp.onRadarClientMessage(async (obj) => { //广播注册的radar消息 - Reflect.ownKeys(this.radarMessageIds).forEach((messageId:string) => { - emitter.emit({eventId:this.radarMessageIds[messageId]},{data:obj}) + Reflect.ownKeys(this.radarMessageIds).forEach((messageId: string) => { + emitter.emit({ eventId: this.radarMessageIds[messageId] }, { data: obj }) }) }) // this.localRadarUdp.onMessage((obj) => { @@ -52,44 +53,52 @@ class Lidar { this.isNewKm3 = true; } //安全员&新科目三均需要视觉 - //TODO 视觉UDP - this.localVisionUdp = new UdpClient('vision', { + this.localVisionUdp = new visionClient({ deviceIpArr, devicePortArr, udplocalIp }) - this.localVisionUdp.onClientMessage(async (obj) => { - + //TODO 初始化视觉设备 + this.localVisionUdp.visionInit(); + this.localVisionUdp.onVisionClientMessage(async (obj) => { + //广播注册的sense消息 + Reflect.ownKeys(this.senseMessageIds).forEach((messageId: string) => { + emitter.emit({ eventId: this.senseMessageIds[messageId] }, { data: obj }) + }) }) } //监听雷达信息 - async onRadarMsg(messageId:string,callback:Function) { - if(this.radarMessageIds[messageId] === undefined){ + async onRadarMsg(messageId: string, callback: Function) { + if (this.radarMessageIds[messageId] === undefined) { const eventId = this.generateRandomNumber(); - emitter.on({ eventId }, (data) => {callback(data)}); + emitter.on({ eventId }, (data) => { + callback(data) + }); this.radarMessageIds[messageId] = eventId; } } //监听视觉信息 - async onSenseMsg(messageId:string,callback:Function) { - if(this.senseMessageIds[messageId] === undefined){ + async onSenseMsg(messageId: string, callback: Function) { + if (this.senseMessageIds[messageId] === undefined) { const eventId = this.generateRandomNumber(); - emitter.on({ eventId }, (data) => {callback(data)}); + emitter.on({ eventId }, (data) => { + callback(data) + }); this.senseMessageIds[messageId] = eventId; } } //关闭消息 - async offMsg(type:'radar'|'vision',messageId:string) { + async offMsg(type: 'radar' | 'vision', messageId: string) { emitter.off( - [type === 'radar'?this.radarMessageIds:this.senseMessageIds][messageId] + [type === 'radar' ? this.radarMessageIds[messageId] : this.senseMessageIds][messageId] ) - delete [type === 'radar'?this.radarMessageIds:this.senseMessageIds][messageId] + delete [type === 'radar' ? this.radarMessageIds[messageId] : this.senseMessageIds][messageId] } //随机生成6位的id - generateRandomNumber(){ + generateRandomNumber() { let num = ''; for (let i = 0; i < 6; i++) { num += Math.floor(Math.random() * 10); diff --git a/entry/src/main/ets/common/lidar/radar/index.ts b/entry/src/main/ets/common/newkm3/radar/index.ts similarity index 100% rename from entry/src/main/ets/common/lidar/radar/index.ts rename to entry/src/main/ets/common/newkm3/radar/index.ts diff --git a/entry/src/main/ets/common/lidar/type.d.ts b/entry/src/main/ets/common/newkm3/type.d.ts similarity index 56% rename from entry/src/main/ets/common/lidar/type.d.ts rename to entry/src/main/ets/common/newkm3/type.d.ts index 44ffae25..dac61073 100644 --- a/entry/src/main/ets/common/lidar/type.d.ts +++ b/entry/src/main/ets/common/newkm3/type.d.ts @@ -1,101 +1,106 @@ - -interface visionType1{ - sj?:number +interface visionType1 { + sj?: number //置信度 - df?:0|1 + df?: 0 | 1 //摇头旋转角度 - yt?:number + yt?: number //左右旋转角度 - zy?:number + zy?: number //上下点头角度 sx?: number } -interface visionType2{ + +interface visionType2 { sj?: number //控制方向盘 fx?: number //手伸出窗外 ch?: number } -interface visionType3{ - sj?:number + +interface visionType3 { + sj?: number //信号灯 - xd?:string + xd?: string //识别前方物体 - wt:0|1|2|3|4 + wt: 0 | 1 | 2 | 3 | 4 //中心隔离设施或中心线 - zx:0|1|-1 + zx: 0 | 1 | -1 //后车超车信号灯 - hc:string + hc: string } -interface MachineItem{ +interface MachineItem { //对象编号 - bh:number + bh: number //车类型 - lx:number + lx: number //纵向距离 - jz:number + jz: number //横向距离 - jh:number + jh: number //速度 - sd:number + sd: number } -export interface Machine{ - sj?:number +export interface Machine { + sj?: number //帧数 - xh?:number + xh?: number //本车道前方数据 - qf?:MachineItem + qf?: MachineItem //本车道后方数据 - hf?:MachineItem + hf?: MachineItem //左侧车道前方 - zq?:MachineItem + zq?: MachineItem //左侧车道后方 - zh?:MachineItem + zh?: MachineItem //右侧车道前方 - yq?:MachineItem + yq?: MachineItem //右侧车道后方 - yh?:MachineItem + yh?: MachineItem //左侧车道 - zc?:MachineItem + zc?: MachineItem //右侧车道 - yc?:MachineItem + yc?: MachineItem //左侧方向车道 - zf?:MachineItem + zf?: MachineItem //前方数据 - wt?:{ + wt?: { //行人距离本车的距离(纵向距离) - xz:number + xz: number //行人距离本车的距离(横向向距离) - xh:number + xh: number //障碍物距离本车的距离(纵向距离) - zz:number + zz: number //障碍物距离本车的距离(横向距离) - zh:number + zh: number } //绕车一车数据 - rc?:{ + rc?: { //左后 - zh:number + zh: number //右后 - yh:number + yh: number //右前 - yq:number + yq: number //左前 - zq:number + zq: number }, + //路口前方来车数据 - lq?:MachineItem, + lq?: MachineItem, + //路口左侧来车 - lz?:MachineItem, + lz?: MachineItem, + //路口右侧来车 - ly?:MachineItem - [k:string]:any + ly?: MachineItem + + [k: string]: any } export interface messageIds { - [k:string]:number; + [k: string]: number; } \ No newline at end of file diff --git a/entry/src/main/ets/common/lidar/udpClient/index.ts b/entry/src/main/ets/common/newkm3/udpClient/index.ts similarity index 75% rename from entry/src/main/ets/common/lidar/udpClient/index.ts rename to entry/src/main/ets/common/newkm3/udpClient/index.ts index 034ca48e..99bcdbfc 100644 --- a/entry/src/main/ets/common/lidar/udpClient/index.ts +++ b/entry/src/main/ets/common/newkm3/udpClient/index.ts @@ -56,14 +56,6 @@ export default class LidaUdpClient{ }); } - // 视觉数据解析 - 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 - } - //arrayBuffer转string arrayBuffetToStr(arrayBuffer){ let dataView = new DataView(arrayBuffer) @@ -89,21 +81,6 @@ export default class LidaUdpClient{ } } - // 初始化指令 - async visionInit(){ - - } - // 开始考试指令 - async visionExamStart(){} - // 结束考试指令 - async visionExamEnd(){} - // 安全员开始录像 - async visionStartRecord(){} - // 安全员结束录像 - async visionEndRecord(){} - // 安全员信号传输 - async visionSignalTransfer(){} - async offMessage(){ this.udpClient.off('message') } diff --git a/entry/src/main/ets/common/lidar/vision/index.ts b/entry/src/main/ets/common/newkm3/vision/index.ts similarity index 68% rename from entry/src/main/ets/common/lidar/vision/index.ts rename to entry/src/main/ets/common/newkm3/vision/index.ts index ee3c5956..37612dec 100644 --- a/entry/src/main/ets/common/lidar/vision/index.ts +++ b/entry/src/main/ets/common/newkm3/vision/index.ts @@ -21,7 +21,7 @@ export default class VisionClient{ } // 视觉信息监听 - async onVisionClientMessage(callback){ + public async onVisionClientMessage(callback){ this.localVisionUdp.onClientMessage((str) => { const data = this.visionStrToObj(str) callback(data) @@ -77,19 +77,30 @@ export default class VisionClient{ //$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(){} + public async visionInit(){ + //车牌号@时间戳@空@空@空@空@空 + } // 开始考试指令 - async visionExamStart(){} + async visionExamStart(){ + //车牌号@考试身份证号@考试状态(1-考试考试0-结束考试)@开始考试时间@考试次数@考车信息@窗户标注信息@方向盘标注信息@考生姓名@安全员编号@是否合格(1-合格0-不合格)@安全员姓名@流水号 + } // 结束考试指令 async visionExamEnd(){} - // 安全员开始录像 - async visionStartRecord(){} - // 安全员结束录像 + // 开始录像 + async visionStartRecord(){ + //考车号_流水号_时间_扣分项目_扣分序号_倒退时长_顺延时长_是否扣分@关键值1_关键字2_关键字3@ + } + // 结束录像 async visionEndRecord(){} // 安全员信号传输 - async visionSignalTransfer(){} + public async visionSignalSend(){ + /* + * 考生号@考试员号@考车车型@车牌号@科目类型+考试开始时间@设备信号状态@速度@发动机转速@GPS 纬度(主天线)@GPS 经度(主天线) + * @主天线位置@GPS 东向距离(主天线)@GPS 北向距离(主天线)@航向角@俯仰角@高程@项目状态@当前项目编号 + * @场地设备编号@本次考试行驶总距离@扣分值@扣分项数量@n个扣分项序号@考车车型@车牌号 + * @工控机是否在播报语音@安全员姓名 + */ + } } \ No newline at end of file diff --git a/entry/src/main/ets/pages/TerminalInfos.ets b/entry/src/main/ets/pages/TerminalInfos.ets index 70dc8402..0f8c4020 100644 --- a/entry/src/main/ets/pages/TerminalInfos.ets +++ b/entry/src/main/ets/pages/TerminalInfos.ets @@ -165,7 +165,8 @@ struct Index { }) }.width('52%').height('14%') - if(this.deviceType == 2){ + // 新科目三设备 + if(this.deviceType == 1 || this.deviceType == 2){ Row() { Text('雷达设备IP') .width('40%') @@ -211,6 +212,9 @@ struct Index { this.devicePortArr[0] = value }) }.width('50%').height('14%') + } + // 安全员设备 + if(this.deviceType == 2){ Row() { Text('视觉设备IP') .width('40%')