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

View File

@ -53,6 +53,7 @@ export async function GetCarInfo(): Promise<CarInfoType> {
if (res.obtainCarExamInfoRsp && res.obtainCarExamInfoRsp.body) { if (res.obtainCarExamInfoRsp && res.obtainCarExamInfoRsp.body) {
const carInfo: ObtainCarExamInfoRspBody = res?.obtainCarExamInfoRsp?.body! const carInfo: ObtainCarExamInfoRspBody = res?.obtainCarExamInfoRsp?.body!
carInfo.plateNo = decodeURIComponent(carInfo.plateNo) carInfo.plateNo = decodeURIComponent(carInfo.plateNo)
console.log("Worker received message car", JSON.stringify(carInfo))
AppStorage.setOrCreate('carInfo', carInfo) AppStorage.setOrCreate('carInfo', carInfo)
return 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() { private bindEvent() {
this.udp?.on("message", value => { this.udp?.on("message", value => {
let result = this.dealMethod?.(value.message) let result = this.dealMethod?.(value.message)
console.log(UDPTag, "中心返回消息", result)
this.messageEvents.forEach(cb => { this.messageEvents.forEach(cb => {
cb(result) cb(result)
}) })

View File

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

View File

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