feat:新科目视觉类代码
This commit is contained in:
		
							parent
							
								
									158f6260db
								
							
						
					
					
						commit
						c06a122de4
					
				| @ -1,13 +1,14 @@ | ||||
| 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' | ||||
| 
 | ||||
| 
 | ||||
| class Lidar { | ||||
|   public localRadarUdp: UdpClient | ||||
|   public localVisionUdp: UdpClient | ||||
|   public localRadarUdp: radarClient | ||||
|   public localVisionUdp: visionClient | ||||
|   //是否新科目三设备
 | ||||
|   private isNewKm3: Boolean | ||||
|   //雷达消息Ids
 | ||||
| @ -27,10 +28,10 @@ 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 }) | ||||
| @ -52,12 +53,16 @@ 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 }) | ||||
|       }) | ||||
|     }) | ||||
| 
 | ||||
|   } | ||||
| @ -66,7 +71,9 @@ class Lidar { | ||||
|   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; | ||||
|     } | ||||
|   } | ||||
| @ -75,7 +82,9 @@ class Lidar { | ||||
|   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; | ||||
|     } | ||||
|   } | ||||
| @ -83,9 +92,9 @@ class Lidar { | ||||
|   //关闭消息
 | ||||
|   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
 | ||||
| @ -1,4 +1,3 @@ | ||||
| 
 | ||||
| interface visionType1 { | ||||
|   sj?: number | ||||
|   //置信度
 | ||||
| @ -10,6 +9,7 @@ interface visionType1{ | ||||
|   //上下点头角度
 | ||||
|   sx?: number | ||||
| } | ||||
| 
 | ||||
| interface visionType2 { | ||||
|   sj?: number | ||||
|   //控制方向盘
 | ||||
| @ -17,6 +17,7 @@ interface visionType2{ | ||||
|   //手伸出窗外
 | ||||
|   ch?: number | ||||
| } | ||||
| 
 | ||||
| interface visionType3 { | ||||
|   sj?: number | ||||
|   //信号灯
 | ||||
| @ -87,12 +88,16 @@ export interface Machine{ | ||||
|     //左前
 | ||||
|     zq: number | ||||
|   }, | ||||
| 
 | ||||
|   //路口前方来车数据
 | ||||
|   lq?: MachineItem, | ||||
| 
 | ||||
|   //路口左侧来车
 | ||||
|   lz?: MachineItem, | ||||
| 
 | ||||
|   //路口右侧来车
 | ||||
|   ly?: MachineItem | ||||
| 
 | ||||
|   [k: string]: any | ||||
| } | ||||
| 
 | ||||
| @ -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') | ||||
|   } | ||||
| @ -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个扣分项序号@考车车型@车牌号 | ||||
|      * @工控机是否在播报语音@安全员姓名 | ||||
|      */ | ||||
|   } | ||||
| 
 | ||||
| } | ||||
| @ -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%') | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user