fix: TCP UDP中心优化带阿米
This commit is contained in:
parent
0f95021737
commit
46244ac980
@ -3,7 +3,7 @@ import { CarInfoType, CenterCallBackMsgType, EnvironmentConfigurationType, UDPPa
|
||||
export interface WorkerMessage {
|
||||
config: EnvironmentConfigurationType;
|
||||
carInfo: CarInfoType;
|
||||
udpParam?: UDPParamType;
|
||||
centerUdpParam?: UDPParamType;
|
||||
otherMessage: OtherMessageType;
|
||||
}
|
||||
|
||||
|
||||
@ -139,25 +139,25 @@ async function obtainSerialNumber(data: string) {
|
||||
}
|
||||
|
||||
//设置流水号
|
||||
export async function SetSerialNumber() {
|
||||
const data = AppStorage.get<string>("liushuiNo") || "";
|
||||
const serialNumberTime = AppStorage.get<string>("liushuiDate");
|
||||
obtainSerialNumber(data);
|
||||
const date = dayTs().format('YYYY-MM-DD HH:mm:ss');
|
||||
|
||||
if (data && serialNumberTime) {
|
||||
const diffDays = dayTs().diff(serialNumberTime, 'day');
|
||||
if (diffDays === 0) {
|
||||
AppStorage.setOrCreate<string>('liushuiDate', date);
|
||||
AppStorage.setOrCreate<string>('liushuiNo', '0');
|
||||
} else {
|
||||
AppStorage.setOrCreate<string>('liushuiNo', (Number(data) + 1).toString());
|
||||
}
|
||||
} else {
|
||||
AppStorage.setOrCreate('liushuiNo', '0');
|
||||
AppStorage.setOrCreate('liushuiDate', date);
|
||||
}
|
||||
}
|
||||
// export async function SetSerialNumber() {
|
||||
// const data = AppStorage.get<string>("liushuiNo") || "";
|
||||
// const serialNumberTime = AppStorage.get<string>("liushuiDate");
|
||||
// obtainSerialNumber(data);
|
||||
// const date = dayTs().format('YYYY-MM-DD HH:mm:ss');
|
||||
//
|
||||
// if (data && serialNumberTime) {
|
||||
// const diffDays = dayTs().diff(serialNumberTime, 'day');
|
||||
// if (diffDays === 0) {
|
||||
// AppStorage.setOrCreate<string>('liushuiDate', date);
|
||||
// AppStorage.setOrCreate<string>('liushuiNo', '0');
|
||||
// } else {
|
||||
// AppStorage.setOrCreate<string>('liushuiNo', (Number(data) + 1).toString());
|
||||
// }
|
||||
// } else {
|
||||
// AppStorage.setOrCreate('liushuiNo', '0');
|
||||
// AppStorage.setOrCreate('liushuiDate', date);
|
||||
// }
|
||||
// }
|
||||
|
||||
export function CreateAlbum(fileHelper: FileHelper) {
|
||||
const date = dayTs().format("YYYY-MM-DD")
|
||||
|
||||
@ -10,7 +10,7 @@ import { fillZero, string2Bytes } from '../../pages/judgeSDK/utils/Common';
|
||||
import { NumberToByteArray } from '../Common';
|
||||
import UdpClient from '../UdpUtils';
|
||||
import { UDPTag } from '../../config';
|
||||
import { SetSerialNumber } from '../../pages/Index/utils';
|
||||
import { SerialNumberInstance } from '../SerialNumber';
|
||||
|
||||
// 中心UDP业务逻辑
|
||||
class CenterUDPBusiness {
|
||||
@ -20,8 +20,11 @@ class CenterUDPBusiness {
|
||||
private headLength: number = 9
|
||||
private sendId: number = 0
|
||||
private carInfo: CarInfoType = {}
|
||||
// 指令
|
||||
private signNum: number = -1
|
||||
// 状态
|
||||
private statue: string = ""
|
||||
// 学员流水号
|
||||
private lsh: string = ""
|
||||
|
||||
constructor() {
|
||||
@ -41,11 +44,14 @@ class CenterUDPBusiness {
|
||||
console.log("心跳")
|
||||
// 组装消息,一秒发送一次
|
||||
this.timer = setInterval(() => {
|
||||
SetSerialNumber()
|
||||
// 生成流水号
|
||||
SerialNumberInstance.generate()
|
||||
// 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])
|
||||
@ -70,12 +76,15 @@ class CenterUDPBusiness {
|
||||
this.udp.offMsg(cb)
|
||||
}
|
||||
|
||||
changeKeyValue(value: OtherMessageType) {
|
||||
value.signNum && (this.signNum = value.signNum)
|
||||
value.lsh && (this.lsh = value.lsh)
|
||||
value.statue && (this.statue = value.statue)
|
||||
}
|
||||
|
||||
// 初始化
|
||||
async init(config: EnvironmentConfigurationType, carInfo: CarInfoType, otherMessage: OtherMessageType) {
|
||||
try {
|
||||
// let result: EnvironmentConfigurationType =
|
||||
// AppStorage.get<EnvironmentConfigurationType>("EnvironmentConfiguration")!
|
||||
// const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')!
|
||||
this.signNum = otherMessage.signNum || 0
|
||||
this.statue = otherMessage.statue || '1'
|
||||
this.lsh = otherMessage.lsh || '0000000000000'
|
||||
@ -137,8 +146,10 @@ class CenterUDPBusiness {
|
||||
}
|
||||
|
||||
private setMsgHead(params: UDPParamType) {
|
||||
// 自增流水号
|
||||
const lshNo = SerialNumberInstance.get()
|
||||
let a = string2Bytes(Number(`${params.id}${fillZero(params.placeId, 3)}`), 2 * 8);
|
||||
let b = string2Bytes(Number(`${fillZero(params.carNo, 4)}${AppStorage.get('lshNo')}`), 4 * 8);
|
||||
let b = string2Bytes(Number(`${fillZero(params.carNo, 4)}${lshNo}`), 4 * 8);
|
||||
let c = string2Bytes(params.list.length, 2 * 8);
|
||||
let result: number[] = []
|
||||
a?.forEach(item => result.push(item))
|
||||
|
||||
@ -1,13 +1,14 @@
|
||||
import { CarInfoType, EnvironmentConfigurationType, Gps, Sensor, UDPParamType } from '../../model'
|
||||
import { CarInfoType, EnvironmentConfigurationType, Gps, Sensor, UDPParamType } from '../../model';
|
||||
import { testKm2Items, testKm3Items } from '../../pages/judgeSDK/dataTest';
|
||||
import { fillZero, } from '../../pages/judgeSDK/utils/Common';
|
||||
import { JudgeConfig } from "../../config";
|
||||
import { JudgeConfig } from '../../config';
|
||||
import { FillZero, StringToASCII } from '../Common';
|
||||
import UdpClient from '../UdpUtils'
|
||||
import UdpClient from '../UdpUtils';
|
||||
import { CenterUDPBusinessInstance } from './CenterUdpBusiness';
|
||||
import { ObtainUdpBusinessInstance } from './ObtainUdpBusiness';
|
||||
import systemTime from '@ohos.systemDateTime';
|
||||
import { examCalcGpsDistance } from '../../pages/judgeSDK/api';
|
||||
import { SerialNumberInstance } from '../SerialNumber';
|
||||
|
||||
interface PLCDataType {
|
||||
sensor: Sensor,
|
||||
@ -48,9 +49,9 @@ function string2Bytes(num: number | string, len: number) {
|
||||
|
||||
class JudgeUdpBusiness {
|
||||
private static instance: JudgeUdpBusiness
|
||||
public udpIndex = 0;
|
||||
private udp: UdpClient = new UdpClient()
|
||||
private currentUdpIndex = 0;
|
||||
public udpIndex = 0;
|
||||
|
||||
constructor() {
|
||||
if (!JudgeUdpBusiness.instance) {
|
||||
@ -59,181 +60,6 @@ class JudgeUdpBusiness {
|
||||
return JudgeUdpBusiness.instance
|
||||
}
|
||||
|
||||
private setWholeMsg(params: UDPParamType) {
|
||||
let head: Array<number> = this.setMsgHead(params);
|
||||
let headJudge = this.setMessageExclusive(head);
|
||||
let bodyJudge = this.setMessageExclusive(params.list);
|
||||
let end = [13, 10];
|
||||
const arr: Array<number> = [...head, ...headJudge, ...params.list, ...bodyJudge, ...end]
|
||||
return this.array2Byte(arr).buffer
|
||||
}
|
||||
|
||||
private array2Byte(array: Array<number>) {
|
||||
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;
|
||||
}
|
||||
|
||||
private setMsgHead(params: UDPParamType) {
|
||||
let a = string2Bytes(Number(`${params.id}${fillZero(params.placeId, 3)}`), 2 * 8);
|
||||
let b = string2Bytes(Number(`${fillZero(params.carNo, 4)}${AppStorage.get('lshNo')}`), 4 * 8);
|
||||
let c = string2Bytes(params.list.length, 2 * 8);
|
||||
let result: number[] = []
|
||||
a?.forEach(item => result.push(item))
|
||||
b?.forEach(item => result.push(item))
|
||||
c?.forEach(item => result.push(item))
|
||||
return result;
|
||||
}
|
||||
|
||||
private setMessageExclusive(tmpList: Array<number>) {
|
||||
let result: number = tmpList[0];
|
||||
for (let i = 1; i < tmpList.length; i++) {
|
||||
result = result ^ tmpList[i]
|
||||
}
|
||||
return [result];
|
||||
}
|
||||
|
||||
private convertGpsCoord2(num: number) {
|
||||
const tempNum = Math.floor(num);
|
||||
const du = Math.floor(tempNum / 100);
|
||||
const fen = tempNum % 100 + num - tempNum;
|
||||
return du + fen / 60
|
||||
}
|
||||
|
||||
// 中心plc实时信号转换成字节
|
||||
private getTranslateSignals(tempItems: number[]) {
|
||||
const len = Math.floor(tempItems.length / 8);
|
||||
const arr: string[] = [];
|
||||
for (let i = 0; i < len; i++) {
|
||||
arr.push(tempItems.slice(i * 8, (i + 1) * 8).join(''));
|
||||
}
|
||||
return arr.map(numStr => parseInt(numStr, 2)).map(item => string2Bytes(item, 8)[0])
|
||||
}
|
||||
|
||||
// 中心所有项目转换
|
||||
private getTranslateProject(): string[] {
|
||||
const examSubject = AppStorage.get<string>("examSubject");
|
||||
const tempItems: ProjectItemType[] =
|
||||
(examSubject === '2' ? testKm2Items : testKm3Items).map((code: ProjectDataType) => {
|
||||
let data: ProjectItemType = {
|
||||
code,
|
||||
status: '0'
|
||||
}
|
||||
return data
|
||||
})
|
||||
const arr: string[] = [];
|
||||
for (let i = 0; i <= 4; i++) {
|
||||
const temp = tempItems.slice(i * 4, (i + 1) * 4);
|
||||
let tempArr = temp.map(item => item.status)
|
||||
if (i === 4) {
|
||||
tempArr = examSubject === '2'
|
||||
//bit36-bit39保留
|
||||
? tempArr.concat(['00', '00'])
|
||||
//bit30-bit39保留
|
||||
: tempArr.concat(['00', '00', '00'])
|
||||
}
|
||||
|
||||
arr.push(tempArr.join(''));
|
||||
}
|
||||
return arr
|
||||
}
|
||||
|
||||
// plc数据转换成对象
|
||||
private async getPlcData(plc: string): Promise<PLCDataType> {
|
||||
const time = await systemTime.getCurrentTime()
|
||||
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],
|
||||
dh1: p[5],
|
||||
dh2: p[6],
|
||||
fdjzs: p[25],
|
||||
dw: p[28],
|
||||
cs: p[23],
|
||||
fxp: Number(origin[27].split('_')[0]),
|
||||
//累计脉冲 溜车脉冲 超声波左后 超声波右后 超声波右前 超声波左前 座椅 仪表盘 后视镜 倒车镜 光照 雨量
|
||||
ljmc: p[24],
|
||||
lcmc: 0,
|
||||
csbzh: p[32],
|
||||
csbyh: p[30],
|
||||
csbyq: p[31],
|
||||
csbzq: p[29],
|
||||
zy: 0,
|
||||
tbp: 0,
|
||||
hsj: 0,
|
||||
dcj: 0,
|
||||
gx: 0,
|
||||
yl: 0,
|
||||
yy: 0,
|
||||
sde: 0,
|
||||
xhd: '',
|
||||
rmndg: 0,
|
||||
wav: 0,
|
||||
mndg: ''
|
||||
}
|
||||
let gps: Gps = {
|
||||
bklx: p[56],
|
||||
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])
|
||||
}
|
||||
return {
|
||||
sensor,
|
||||
gps,
|
||||
}
|
||||
}
|
||||
|
||||
private getDwStatusType(dw: number) {
|
||||
switch (dw) {
|
||||
case 0:
|
||||
return [0, 0, 0, 0]
|
||||
case 1:
|
||||
return [0, 0, 0, 1]
|
||||
case 2:
|
||||
return [0, 0, 1, 0]
|
||||
case 3:
|
||||
return [0, 0, 1, 1]
|
||||
case 4:
|
||||
return [0, 1, 0, 0]
|
||||
case 5:
|
||||
return [0, 1, 0, 1]
|
||||
case 9:
|
||||
return [1, 0, 0, 1]
|
||||
default:
|
||||
return [0, 0, 0, 0]
|
||||
}
|
||||
}
|
||||
|
||||
async getMessageHeartbeat(msg: string): Promise<number[]> {
|
||||
const carInfo: CarInfoType = AppStorage.get<CarInfoType>('carInfo')!
|
||||
let gpsDigit = JudgeConfig.fourInOneScreen.gpsDigit
|
||||
@ -412,6 +238,182 @@ class JudgeUdpBusiness {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private setWholeMsg(params: UDPParamType) {
|
||||
let head: Array<number> = this.setMsgHead(params);
|
||||
let headJudge = this.setMessageExclusive(head);
|
||||
let bodyJudge = this.setMessageExclusive(params.list);
|
||||
let end = [13, 10];
|
||||
const arr: Array<number> = [...head, ...headJudge, ...params.list, ...bodyJudge, ...end]
|
||||
return this.array2Byte(arr).buffer
|
||||
}
|
||||
|
||||
private array2Byte(array: Array<number>) {
|
||||
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;
|
||||
}
|
||||
|
||||
private setMsgHead(params: UDPParamType) {
|
||||
const lshNo = SerialNumberInstance.get()
|
||||
let a = string2Bytes(Number(`${params.id}${fillZero(params.placeId, 3)}`), 2 * 8);
|
||||
let b = string2Bytes(Number(`${fillZero(params.carNo, 4)}${lshNo}`), 4 * 8);
|
||||
let c = string2Bytes(params.list.length, 2 * 8);
|
||||
let result: number[] = []
|
||||
a?.forEach(item => result.push(item))
|
||||
b?.forEach(item => result.push(item))
|
||||
c?.forEach(item => result.push(item))
|
||||
return result;
|
||||
}
|
||||
|
||||
private setMessageExclusive(tmpList: Array<number>) {
|
||||
let result: number = tmpList[0];
|
||||
for (let i = 1; i < tmpList.length; i++) {
|
||||
result = result ^ tmpList[i]
|
||||
}
|
||||
return [result];
|
||||
}
|
||||
|
||||
private convertGpsCoord2(num: number) {
|
||||
const tempNum = Math.floor(num);
|
||||
const du = Math.floor(tempNum / 100);
|
||||
const fen = tempNum % 100 + num - tempNum;
|
||||
return du + fen / 60
|
||||
}
|
||||
|
||||
// 中心plc实时信号转换成字节
|
||||
private getTranslateSignals(tempItems: number[]) {
|
||||
const len = Math.floor(tempItems.length / 8);
|
||||
const arr: string[] = [];
|
||||
for (let i = 0; i < len; i++) {
|
||||
arr.push(tempItems.slice(i * 8, (i + 1) * 8).join(''));
|
||||
}
|
||||
return arr.map(numStr => parseInt(numStr, 2)).map(item => string2Bytes(item, 8)[0])
|
||||
}
|
||||
|
||||
// 中心所有项目转换
|
||||
private getTranslateProject(): string[] {
|
||||
const examSubject = AppStorage.get<string>("examSubject");
|
||||
const tempItems: ProjectItemType[] =
|
||||
(examSubject === '2' ? testKm2Items : testKm3Items).map((code: ProjectDataType) => {
|
||||
let data: ProjectItemType = {
|
||||
code,
|
||||
status: '0'
|
||||
}
|
||||
return data
|
||||
})
|
||||
const arr: string[] = [];
|
||||
for (let i = 0; i <= 4; i++) {
|
||||
const temp = tempItems.slice(i * 4, (i + 1) * 4);
|
||||
let tempArr = temp.map(item => item.status)
|
||||
if (i === 4) {
|
||||
tempArr = examSubject === '2'
|
||||
//bit36-bit39保留
|
||||
? tempArr.concat(['00', '00'])
|
||||
//bit30-bit39保留
|
||||
: tempArr.concat(['00', '00', '00'])
|
||||
}
|
||||
|
||||
arr.push(tempArr.join(''));
|
||||
}
|
||||
return arr
|
||||
}
|
||||
|
||||
// plc数据转换成对象
|
||||
private async getPlcData(plc: string): Promise<PLCDataType> {
|
||||
const time = await systemTime.getCurrentTime()
|
||||
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],
|
||||
dh1: p[5],
|
||||
dh2: p[6],
|
||||
fdjzs: p[25],
|
||||
dw: p[28],
|
||||
cs: p[23],
|
||||
fxp: Number(origin[27].split('_')[0]),
|
||||
//累计脉冲 溜车脉冲 超声波左后 超声波右后 超声波右前 超声波左前 座椅 仪表盘 后视镜 倒车镜 光照 雨量
|
||||
ljmc: p[24],
|
||||
lcmc: 0,
|
||||
csbzh: p[32],
|
||||
csbyh: p[30],
|
||||
csbyq: p[31],
|
||||
csbzq: p[29],
|
||||
zy: 0,
|
||||
tbp: 0,
|
||||
hsj: 0,
|
||||
dcj: 0,
|
||||
gx: 0,
|
||||
yl: 0,
|
||||
yy: 0,
|
||||
sde: 0,
|
||||
xhd: '',
|
||||
rmndg: 0,
|
||||
wav: 0,
|
||||
mndg: ''
|
||||
}
|
||||
let gps: Gps = {
|
||||
bklx: p[56],
|
||||
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])
|
||||
}
|
||||
return {
|
||||
sensor,
|
||||
gps,
|
||||
}
|
||||
}
|
||||
|
||||
private getDwStatusType(dw: number) {
|
||||
switch (dw) {
|
||||
case 0:
|
||||
return [0, 0, 0, 0]
|
||||
case 1:
|
||||
return [0, 0, 0, 1]
|
||||
case 2:
|
||||
return [0, 0, 1, 0]
|
||||
case 3:
|
||||
return [0, 0, 1, 1]
|
||||
case 4:
|
||||
return [0, 1, 0, 0]
|
||||
case 5:
|
||||
return [0, 1, 0, 1]
|
||||
case 9:
|
||||
return [1, 0, 0, 1]
|
||||
default:
|
||||
return [0, 0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const JudgeUdpBusinessInstance = new JudgeUdpBusiness()
|
||||
@ -1,83 +1,84 @@
|
||||
// 处理worker线程的消息tcp拿差分改正数,udp给后置机
|
||||
import worker, { ErrorEvent, MessageEvents, ThreadWorkerGlobalScope } from '@ohos.worker';
|
||||
import { WorkerTag } from '../config';
|
||||
import { WorkerMessage } from '../model';
|
||||
import { CenterCallBackMsgType, WorkerBackMessage, WorkerMessage } from '../model';
|
||||
import { CenterUDPBusinessInstance } from '../utils/business/CenterUdpBusiness';
|
||||
import { DifferentialSignal } from '../utils/business/DifferentialSignal';
|
||||
import { ObtainUdpBusinessInstance } from '../utils/business/ObtainUdpBusiness';
|
||||
|
||||
const workerPort: ThreadWorkerGlobalScope = worker.workerPort;
|
||||
|
||||
/**
|
||||
* Defines the event handler to be called when the worker thread receives a message sent by the host thread.
|
||||
* The event handler is executed in the worker thread.
|
||||
*
|
||||
* @param e message data
|
||||
*/
|
||||
|
||||
workerPort.onmessage = (e: MessageEvents) => {
|
||||
console.log(WorkerTag, `Worker received message: ${e.data}`);
|
||||
const result: WorkerMessage = JSON.parse(e.data);
|
||||
// 初始化TCP
|
||||
initFn(result)
|
||||
// TODO 内部已经实现,外部未实现
|
||||
// 如果外部有这个值就去更新中心这个值
|
||||
if (result.otherMessage) {
|
||||
CenterUDPBusinessInstance.changeKeyValue(result.otherMessage)
|
||||
}
|
||||
// 如果外部有这个消息进来就开始给中心发送,暂时看不需要
|
||||
// if (result.centerUdpParam) {
|
||||
// CenterUDPBusinessInstance.sendData(result.centerUdpParam);
|
||||
// }
|
||||
getDataFn()
|
||||
}
|
||||
|
||||
// 初始化函数
|
||||
function initFn(result: WorkerMessage) {
|
||||
// 初始化差分校正TCP
|
||||
DifferentialSignal.init(result.config);
|
||||
// 定时发送TCP消息
|
||||
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);
|
||||
// }
|
||||
}
|
||||
|
||||
function getDataFn() {
|
||||
// 获取TCP差分改正数信号
|
||||
DifferentialSignal.getData((data: ArrayBuffer) => {
|
||||
console.log(WorkerTag, "Received differential signal data:", data.byteLength, "bytes")
|
||||
// TCP拿到差分改正数发给后置机
|
||||
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)
|
||||
// )
|
||||
// })
|
||||
// 后置机回执PLC和GPS
|
||||
ObtainUdpBusinessInstance.onMsg((data: string) => {
|
||||
// TODO
|
||||
// 需要观察
|
||||
console.log(WorkerTag, "后置机消息", data)
|
||||
// 收到后置机消息传出去提供给业务,data应该是个string
|
||||
workerPort.postMessage(
|
||||
JSON.stringify({
|
||||
type: 'obtainUdpData',
|
||||
data: data
|
||||
} as WorkerBackMessage))
|
||||
})
|
||||
// 中心UDP回执消息
|
||||
CenterUDPBusinessInstance.onMsg((data: CenterCallBackMsgType) => {
|
||||
// TODO
|
||||
// 需要观察
|
||||
console.log(WorkerTag, "中心消息", data)
|
||||
// 收到中心指令发送出去
|
||||
workerPort.postMessage(
|
||||
JSON.stringify({
|
||||
type: 'centerUdpData',
|
||||
data: data
|
||||
} as WorkerBackMessage)
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines the event handler to be called when the worker receives a message that cannot be deserialized.
|
||||
* The event handler is executed in the worker thread.
|
||||
*
|
||||
* @param e message data
|
||||
*/
|
||||
|
||||
workerPort.onmessageerror = (e: MessageEvents) => {
|
||||
console.log(WorkerTag, `Worker received message error: ${e.data}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines the event handler to be called when an exception occurs during worker execution.
|
||||
* The event handler is executed in the worker thread.
|
||||
*
|
||||
* @param e error message
|
||||
*/
|
||||
|
||||
workerPort.onerror = (e: ErrorEvent) => {
|
||||
console.log(WorkerTag, `Worker error: ${e.message}, filename: ${e.filename}, lineno: ${e.lineno}, colno: ${e.colno}`)
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user