fix: TCP UDP中心通

This commit is contained in:
wangzhongjie 2025-06-13 13:23:41 +08:00
parent 9e9b34c0b4
commit 0f95021737
6 changed files with 63 additions and 42 deletions

View File

@ -78,13 +78,10 @@ struct Index {
async onPageShow(): Promise<void> {
console.log("首页 onPageShow")
await UseAuth(this.context)
// DifferentialAndSignal.init()
DifferentialAndSignal.onMsg(() => {
console.log("外层接受")
})
this.avPlayer.playAudio(['welcome.wav'])
this.baseInfo = AppStorage.get<BaseInfoType>('baseInfo')!
this.initParams()
AppStorage.setOrCreate('singlePlay', false)
this.num = 0
AppStorage.setOrCreate('lsh', '1111111111111')
@ -181,12 +178,6 @@ struct Index {
console.log("test1111")
await GetDeviceInfo(this.context)
this.carInfo = await GetCarInfo()
// TODO
// CenterUDPBusinessInstance.onMsg((data: CenterCallBackMsgType) => {
// if (data.id == 32) {
// AppStorage.setOrCreate('signNum', data.body[1])
// }
// },)
this.carInfo = AppStorage.get<CarInfoType>('carInfo')!
this.deviceId = this.carInfo.carNo || ""
await SetCurrentTime()
@ -199,6 +190,11 @@ struct Index {
// TODO
// CenterUDPBusinessInstance.startHeartBeat()
CreateAlbum(this.fileHelper)
// 启动worker通道
DifferentialAndSignal.init()
DifferentialAndSignal.onMsg(() => {
console.log("外层接受")
})
}
build() {

View File

@ -53,6 +53,7 @@ export async function GetCarInfo(): Promise<CarInfoType> {
if (res.obtainCarExamInfoRsp && res.obtainCarExamInfoRsp.body) {
const carInfo: ObtainCarExamInfoRspBody = res?.obtainCarExamInfoRsp?.body!
carInfo.plateNo = decodeURIComponent(carInfo.plateNo)
console.log("Worker received message car", JSON.stringify(carInfo))
AppStorage.setOrCreate('carInfo', carInfo)
return carInfo
}

View File

@ -0,0 +1,25 @@
// 流水号生成获取
class SerialNumber {
private serialNumber: string = "000000";
// 生成流水号(外部手动调用)
generate() {
let num = Number(this.serialNumber) + 1;
if (num > 999999) {
num = 0; // 超过 999999 时重置为 000000
}
this.serialNumber = num.toString().padStart(6, "0");
}
// 获取当前流水号
get() {
return this.serialNumber;
}
// 重置流水号(可选)
reset() {
this.serialNumber = "000000";
}
}
export const SerialNumberInstance = new SerialNumber();

View File

@ -139,6 +139,7 @@ export default class UdpClient {
private bindEvent() {
this.udp?.on("message", value => {
let result = this.dealMethod?.(value.message)
console.log(UDPTag, "中心返回消息", result)
this.messageEvents.forEach(cb => {
cb(result)
})

View File

@ -38,12 +38,10 @@ class CenterUDPBusiness {
}
startHeartBeat() {
console.log("心跳")
// 组装消息,一秒发送一次
this.timer = setInterval(() => {
SetSerialNumber()
// const signNum = AppStorage.get<number>('signNum')
// const statue = AppStorage.get<string>('statue')
// const lsh = AppStorage.get<string>('lsh')
const arr = [this.signNum || 0, this.statue || 1]
let tmpList: number[] = [];
tmpList.push(NumberToByteArray(Number(arr[0]), 1 * 8)[0])
@ -52,7 +50,6 @@ class CenterUDPBusiness {
for (let i = 0; i < str.length; i++) {
tmpList.push(NumberToByteArray(str.charCodeAt(i), 1 * 8)[0])
}
// const carInfo = AppStorage.get<CarInfoType>('carInfo')!
const data: UDPParamType = {
id: 31,
list: tmpList,
@ -60,6 +57,7 @@ class CenterUDPBusiness {
placeId: this.carInfo.examinationRoomId!
}
const param = this.setWholeMsg(data)
console.log("查看")
this.udp.sendMsg(param);
}, 1000);
}

View File

@ -1,7 +1,7 @@
// 处理worker线程的消息tcp拿差分改正数,udp给后置机
import worker, { ErrorEvent, MessageEvents, ThreadWorkerGlobalScope } from '@ohos.worker';
import { WorkerTag } from '../config';
import { CenterCallBackMsgType, WorkerBackMessage, WorkerMessage } from '../model';
import { WorkerMessage } from '../model';
import { CenterUDPBusinessInstance } from '../utils/business/CenterUdpBusiness';
import { DifferentialSignal } from '../utils/business/DifferentialSignal';
import { ObtainUdpBusinessInstance } from '../utils/business/ObtainUdpBusiness';
@ -21,15 +21,15 @@ workerPort.onmessage = (e: MessageEvents) => {
DifferentialSignal.init(result.config);
DifferentialSignal.sendData()
// 初始化后置机UDP
ObtainUdpBusinessInstance.init(result.config)
// ObtainUdpBusinessInstance.init(result.config)
// 初始化中心UDP
CenterUDPBusinessInstance.init(result.config, result.carInfo, result.otherMessage)
// 中心心跳
CenterUDPBusinessInstance.startHeartBeat()
// 如果外部有这个消息进来就开始给中心发送
if (result.udpParam) {
CenterUDPBusinessInstance.sendData(result.udpParam);
}
// if (result.udpParam) {
// CenterUDPBusinessInstance.sendData(result.udpParam);
// }
// 获取TCP差分改正数信号
DifferentialSignal.getData((data: ArrayBuffer) => {
console.log(WorkerTag, "Received differential signal data:", data.byteLength, "bytes")
@ -37,29 +37,29 @@ workerPort.onmessage = (e: MessageEvents) => {
ObtainUdpBusinessInstance.sendData(data)
})
// 监听PLC和GPS信号
ObtainUdpBusinessInstance.onMsg((data: string) => {
// TODO
// 需要观察
console.log(WorkerTag, "后置机消息", data)
// 收到后置机消息传出去提供给业务,data应该是个string
workerPort.postMessage(
JSON.stringify({
type: 'obtainUdpData',
data: data
} as WorkerBackMessage))
})
CenterUDPBusinessInstance.onMsg((data: CenterCallBackMsgType) => {
// TODO
// 需要观察
console.log(WorkerTag, "中心消息", data)
// 收到中心指令发送出去
workerPort.postMessage(
JSON.stringify({
type: 'centerUdpData',
data: data
} as WorkerBackMessage)
)
})
// ObtainUdpBusinessInstance.onMsg((data: string) => {
// // TODO
// // 需要观察
// console.log(WorkerTag, "后置机消息", data)
// // 收到后置机消息传出去提供给业务,data应该是个string
// workerPort.postMessage(
// JSON.stringify({
// type: 'obtainUdpData',
// data: data
// } as WorkerBackMessage))
// })
// CenterUDPBusinessInstance.onMsg((data: CenterCallBackMsgType) => {
// // TODO
// // 需要观察
// console.log(WorkerTag, "中心消息", data)
// // 收到中心指令发送出去
// workerPort.postMessage(
// JSON.stringify({
// type: 'centerUdpData',
// data: data
// } as WorkerBackMessage)
// )
// })
}
/**