From 5ea66a4bae961b617f9580344e93cdc86737c7ed Mon Sep 17 00:00:00 2001 From: wangzhongjie Date: Wed, 18 Jun 2025 14:15:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E4=B8=AD=E5=BF=83udp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/config/LogEnum.ets | 5 ++- entry/src/main/ets/pages/Index.ets | 6 ++- .../ets/pages/compontents/SignalDisplay.ets | 18 ++++---- .../ets/utils/business/CenterUdpBusiness.ets | 29 ++++++------- .../ets/utils/business/JudgeUdpBusiness.ets | 43 ++++++++++++++++++- .../ets/workers/DifferentialCorrection.ets | 5 +-- 6 files changed, 76 insertions(+), 30 deletions(-) diff --git a/entry/src/main/ets/config/LogEnum.ets b/entry/src/main/ets/config/LogEnum.ets index ed56e93..2aed0d0 100644 --- a/entry/src/main/ets/config/LogEnum.ets +++ b/entry/src/main/ets/config/LogEnum.ets @@ -31,4 +31,7 @@ export const RequestTag = '[Request]'; export const EntryTag = '[Entry]'; //worker tag -export const WorkerTag = '[Worker]'; \ No newline at end of file +export const WorkerTag = '[Worker]'; + +//中心udp +export const CenterUdpTag = '[CenterUdpBusiness]' \ No newline at end of file diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index b5896c2..4c93fe9 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -37,6 +37,7 @@ struct Index { @State fd: number = -1; @State carInfo: CarInfoType = {}; @State num: number = 0; + @State isPlay: boolean = false; // 请求网络表等待弹窗 customDialogController: CustomDialogController = new CustomDialogController({ builder: LoadingComponent(), @@ -77,7 +78,10 @@ struct Index { async onPageShow(): Promise { console.log("首页 onPageShow") await UseAuth(this.context) - this.avPlayer.playAudio(['welcome.wav']) + if (!this.isPlay) { + this.avPlayer.playAudio(['welcome.wav']) + this.isPlay = true + } this.baseInfo = AppStorage.get('baseInfo')! this.initParams() diff --git a/entry/src/main/ets/pages/compontents/SignalDisplay.ets b/entry/src/main/ets/pages/compontents/SignalDisplay.ets index cb2e619..fe364c4 100644 --- a/entry/src/main/ets/pages/compontents/SignalDisplay.ets +++ b/entry/src/main/ets/pages/compontents/SignalDisplay.ets @@ -28,7 +28,8 @@ export default struct SignalDisplayComponent { aboutToAppear(): void { DifferentialAndSignal.onMsg((data: string) => { const result: WorkerBackMessage = JSON.parse(data) - if (result.type === "centerUdpData") { + console.log("wzj", data) + if (result.type === "obtainUdpData") { this.getSignal(result.data as string) this.rawData = result.data as string } @@ -36,11 +37,11 @@ export default struct SignalDisplayComponent { } getSignal = (msg: string) => { - const strachArr = msg.split(',') - if (strachArr[0] != '#DN_GD') { + const newArr = msg.split(',') + if (newArr[0] != '#DN_GD') { return } - this.signArr = strachArr + this.signArr = newArr for (let i = 0; i <= 12; i++) { this.vehicleSignal[i].value = this.signArr[i+2] @@ -155,6 +156,7 @@ export default struct SignalDisplayComponent { CoordinateComponent({ isItHorizontal: false, heightNum: 40, + data: this.GPSColum }) }.width("20%") @@ -358,7 +360,7 @@ struct TabItemComponent { @Component struct GPSComponent { - @State data: Array = [] + @Prop data: Array @State ip: string = "" aboutToAppear(): void { @@ -439,7 +441,7 @@ struct GPSComponent { @Component struct CarComponent { - @State data: Array = SignalData + @Prop data: Array build() { Flex({ @@ -457,7 +459,7 @@ struct CarComponent { @Component struct CoordinateComponent { - @State data: Array = GPSData + @Prop data: Array @State isItHorizontal: boolean = true @State heightNum: number = 65 @@ -490,7 +492,7 @@ struct CoordinateComponent { @Component struct blockComponent { @State label: string = "发送次数" - @State value: string = "1" + @Prop value: string = "1" @State widthNum: number = 130 @State heightNum: number = 65 @State color: string = "#FDF5E7" diff --git a/entry/src/main/ets/utils/business/CenterUdpBusiness.ets b/entry/src/main/ets/utils/business/CenterUdpBusiness.ets index a3045da..3b64084 100644 --- a/entry/src/main/ets/utils/business/CenterUdpBusiness.ets +++ b/entry/src/main/ets/utils/business/CenterUdpBusiness.ets @@ -7,9 +7,9 @@ import { UDPParamType } from '../../model'; import { fillZero, string2Bytes } from '../../pages/judgeSDK/utils/Common'; -import { NumberToByteArray } from '../Common'; +import { ArrayToByteArray, NumberToByteArray } from '../Common'; import UdpClient from '../UdpUtils'; -import { UDPTag } from '../../config'; +import { CenterUdpTag, UDPTag } from '../../config'; import { SerialNumberInstance } from '../SerialNumber'; // 中心UDP业务逻辑 @@ -41,29 +41,33 @@ class CenterUDPBusiness { } startHeartBeat() { - console.log("心跳") + console.log(CenterUdpTag, "心跳", JSON.stringify(this.carInfo)) // 组装消息,一秒发送一次 this.timer = setInterval(() => { // 生成流水号 SerialNumberInstance.generate() + console.log(CenterUdpTag, "流水号生成") // SetSerialNumber() const arr = [this.signNum || 0, this.statue || 1] let tmpList: number[] = []; tmpList.push(NumberToByteArray(Number(arr[0]), 1 * 8)[0]) tmpList.push(NumberToByteArray(Number(arr[1]), 1 * 8)[0]) + // 学员流水号 const str = this.lsh || '0000000000000' for (let i = 0; i < str.length; i++) { tmpList.push(NumberToByteArray(str.charCodeAt(i), 1 * 8)[0]) } + console.log(CenterUdpTag, "学员流水号", JSON.stringify(tmpList)) const data: UDPParamType = { id: 31, list: tmpList, carNo: this.carInfo.carNo!, placeId: this.carInfo.examinationRoomId! } + console.log(CenterUdpTag, "查看生成的", JSON.stringify(data)) const param = this.setWholeMsg(data) - console.log("查看") + console.log(CenterUdpTag, "查看", JSON.stringify(param)) this.udp.sendMsg(param); }, 1000); } @@ -84,12 +88,16 @@ class CenterUDPBusiness { // 初始化 async init(config: EnvironmentConfigurationType, carInfo: CarInfoType, otherMessage: OtherMessageType) { + console.log(CenterUdpTag, "初始化", JSON.stringify(otherMessage), JSON.stringify(carInfo)) try { this.signNum = otherMessage.signNum || 0 this.statue = otherMessage.statue || '1' this.lsh = otherMessage.lsh || '0000000000000' this.carInfo = carInfo - this.udp.create(config.udplocalIp!, '8800', carInfo.udpAddress!, carInfo.messagePort!) + // TODO + // this.udp.create(config.udplocalIp!, '8800', carInfo.udpAddress!, carInfo.messagePort!) + this.udp.create(config.udplocalIp!, '8800', "112.80.35.83", "11056") + this.udp.setDealMethod(this.dealMsg) } catch (e) { console.error(UDPTag, "初始化中心 udp失败") @@ -133,16 +141,7 @@ class CenterUDPBusiness { params.list?.forEach(item => arr.push(item)) bodyJudge.forEach(item => arr.push(item)) end.forEach(item => arr.push(item)) - return this.array2Byte(arr).buffer - } - - private array2Byte(array: Array) { - const buf = new ArrayBuffer(array.length); - const view = new Uint8Array(buf); - for (let i = 0; i = array.length; ++i) { - view[i] = array[i] & 0xFF; - } - return view; + return ArrayToByteArray(arr).buffer } private setMsgHead(params: UDPParamType) { diff --git a/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets b/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets index 94fbd23..45a4ba3 100644 --- a/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets +++ b/entry/src/main/ets/utils/business/JudgeUdpBusiness.ets @@ -304,34 +304,59 @@ class JudgeUdpBusiness { let origin = plc.split(",") let p = origin.map(item => Number(item)) let sensor: Sensor = { + // 安全带 aqd: p[19], + // 主驾驶门 mkg: p[14], + // 手刹 ssc: p[13], + // 脚刹 jsc: p[12], + // 副刹车 fsc: p[18], + // 离合 lhq: p[17], + // 喇叭 lb: p[4], + // 示廓灯 skd: p[9], + // 近光灯 jgd: p[7], + // 远光灯 ygd: p[8], - //左方向灯 右方向灯 双跳灯 雾灯 雨刮器 点火1 点火2 发动机转速 档位 车速 + //左方向灯 zfxd: p[2], + // 右方向灯 yfxd: p[3], + // 双跳灯 shtd: p[20], + // 雾灯 wd: p[10], + // 雨刮器 ygq: p[11], + // 点火1 dh1: p[5], + // 点火2 dh2: p[6], + // 发动机转速 fdjzs: p[25], + // 档位 dw: p[28], + // 车速 cs: p[23], + // 方向盘角度 fxp: Number(origin[27].split('_')[0]), - //累计脉冲 溜车脉冲 超声波左后 超声波右后 超声波右前 超声波左前 座椅 仪表盘 后视镜 倒车镜 光照 雨量 + //累计脉冲 ljmc: p[24], + // 溜车脉冲 lcmc: 0, + // 超声波4 左后 csbzh: p[32], + // 超声波2 右后 csbyh: p[30], + // 超声波3 右前 csbyq: p[31], + // 超声波1 左前 csbzq: p[29], zy: 0, tbp: 0, @@ -347,20 +372,34 @@ class JudgeUdpBusiness { mndg: '' } let gps: Gps = { + // GPS板卡类型 bklx: p[56], + // GPS状态 dwzt: p[83], + //航向角状态-收星数 jdzt: Number(origin[92].split('-')[0]), sj: time, + // 纬度 jd: p[96], + // 经度 wd: p[95], + // 航向角 hxj: p[90], + // 俯仰角 fyj: p[91], + // 海拔高 hbg: p[85], + // 高度差 gdc: p[86], + // 速度 sd: p[97], + // 龄期 age: p[87], + // 经度因子 jdyz: p[89], + // 维度因子 wdyz: p[88], + // 收星数 dwsxs: p[84], jdsxs: Number(origin[92].split('-')[1]) } diff --git a/entry/src/main/ets/workers/DifferentialCorrection.ets b/entry/src/main/ets/workers/DifferentialCorrection.ets index 5c567c6..5025618 100644 --- a/entry/src/main/ets/workers/DifferentialCorrection.ets +++ b/entry/src/main/ets/workers/DifferentialCorrection.ets @@ -4,7 +4,6 @@ import { WorkerTag } from '../config'; import { CenterCallBackMsgType, WorkerBackMessage, WorkerMessage } from '../model'; import { CenterUDPBusinessInstance } from '../utils/business/CenterUdpBusiness'; import { DifferentialSignal } from '../utils/business/DifferentialSignal'; -import { JudgeUdpBusinessInstance } from '../utils/business/JudgeUdpBusiness'; import { ObtainUdpBusinessInstance } from '../utils/business/ObtainUdpBusiness'; const workerPort: ThreadWorkerGlobalScope = worker.workerPort; @@ -39,7 +38,7 @@ function initFn(result: WorkerMessage) { // 中心心跳 CenterUDPBusinessInstance.startHeartBeat() // 初始化考试过程UDP - JudgeUdpBusinessInstance.init(result.config, result.carInfo, result.singlePlay, result.otherMessage.lsh) + // JudgeUdpBusinessInstance.init(result.config, result.carInfo, result?.singlePlay || false, result.otherMessage.lsh) } @@ -48,7 +47,7 @@ function getDataFn() { DifferentialSignal.getData((data: ArrayBuffer) => { console.log(WorkerTag, "Received differential signal data:", data.byteLength, "bytes") // TCP拿到差分改正数发给后置机 - ObtainUdpBusinessInstance.sendData(data) + // ObtainUdpBusinessInstance.sendData(data) }) // 后置机回执PLC和GPS ObtainUdpBusinessInstance.onMsg((data: string) => {