fix: 完善worker关闭性能优化,完善读取串口代码
This commit is contained in:
parent
fd2f75d1fe
commit
078ec1afd4
@ -12,6 +12,7 @@ import FileUtils from '../utils/FileUtils';
|
||||
import { EntryTag } from '../config';
|
||||
import { dConsole } from '../utils/LogWorker';
|
||||
import { UseAuth } from '../utils/Common';
|
||||
import { DifferentialAndSignal } from '../utils/business/DifferentialAndSignalWorker';
|
||||
|
||||
export default class EntryAbility extends UIAbility {
|
||||
async onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
|
||||
@ -92,6 +93,8 @@ export default class EntryAbility extends UIAbility {
|
||||
onWindowStageDestroy() {
|
||||
// Main window is destroyed, release UI related resources
|
||||
console.log(EntryTag, "onWindowStageDestroy", "窗口销毁完成")
|
||||
DifferentialAndSignal.close()
|
||||
|
||||
}
|
||||
|
||||
onForeground() {
|
||||
|
||||
@ -6,6 +6,8 @@ export interface WorkerMessage {
|
||||
centerUdpParam?: UDPParamType;
|
||||
otherMessage: OtherMessageType;
|
||||
singlePlay?: boolean
|
||||
// 关闭
|
||||
close?: boolean;
|
||||
}
|
||||
|
||||
export interface OtherMessageType {
|
||||
|
||||
@ -50,6 +50,18 @@ class differentialAndSignal {
|
||||
this.events = this.events.filter((cb) => cb !== callback);
|
||||
}
|
||||
|
||||
// 关闭
|
||||
close() {
|
||||
const config: EnvironmentConfigurationType = AppStorage.get<EnvironmentConfigurationType>("EnvironmentConfiguration") || {
|
||||
}
|
||||
this.workerInstance.postMessage(JSON.stringify({
|
||||
config: config,
|
||||
close: true
|
||||
}));
|
||||
// 关闭线程
|
||||
this.workerInstance.terminate()
|
||||
}
|
||||
|
||||
// 获取Worker消息
|
||||
getMessage() {
|
||||
this.workerInstance.onmessage = (e: MessageEvents): void => {
|
||||
|
||||
@ -88,6 +88,23 @@ class ObtainUdpBusiness {
|
||||
}
|
||||
}
|
||||
|
||||
// 关闭
|
||||
close() {
|
||||
switch (this.modelNo) {
|
||||
case "0":
|
||||
break
|
||||
case "1":
|
||||
break
|
||||
case "2":
|
||||
break
|
||||
case "3":
|
||||
this.thirdGenerationMachineUdp!.close()
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
private initSecondaryBoard() {
|
||||
|
||||
}
|
||||
|
||||
@ -45,6 +45,7 @@ class serialPortService {
|
||||
if (this.fd !== -1) {
|
||||
await InitSerialPortData(this.fd, Number(this.baudRate))
|
||||
ReceiveSerialPortDataBySelf(this.fd, (res1: number, res2: number, res3: number[]) => {
|
||||
console.log(SerialPortTag, "串口接收数据", res1, res2, res3)
|
||||
this.events.forEach((callback) => {
|
||||
callback(res3);
|
||||
});
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
// 处理worker线程的消息tcp拿差分改正数,udp给后置机
|
||||
import worker, { ErrorEvent, MessageEvents, ThreadWorkerGlobalScope } from '@ohos.worker';
|
||||
import { WorkerTag } from '../config';
|
||||
import { SerialPortTag, WorkerTag } from '../config';
|
||||
import { CenterCallBackMsgType, WorkerBackMessage, WorkerBackMessageType, WorkerMessage } from '../model';
|
||||
import { CenterUDPBusinessInstance } from '../utils/business/CenterUdpBusiness';
|
||||
import { DifferentialSignal } from '../utils/business/DifferentialSignal';
|
||||
import { ObtainUdpBusinessInstance } from '../utils/business/ObtainUdpBusiness';
|
||||
import { SerialPortService } from '../utils/business/SerialPortService';
|
||||
|
||||
const workerPort: ThreadWorkerGlobalScope = worker.workerPort;
|
||||
|
||||
@ -23,6 +24,10 @@ workerPort.onmessage = (e: MessageEvents) => {
|
||||
// CenterUDPBusinessInstance.sendData(result.centerUdpParam);
|
||||
// }
|
||||
getDataFn()
|
||||
// 必传环境配置
|
||||
if (result.close) {
|
||||
closedFn(result)
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化函数
|
||||
@ -39,6 +44,10 @@ function initFn(result: WorkerMessage) {
|
||||
CenterUDPBusinessInstance.startHeartBeat()
|
||||
// 初始化考试过程UDP
|
||||
// JudgeUdpBusinessInstance.init(result.config, result.carInfo, result?.singlePlay || false, result.otherMessage.lsh)
|
||||
// 初始化档位信号串口
|
||||
if (result.config.carType !== "2") {
|
||||
SerialPortService.init()
|
||||
}
|
||||
}
|
||||
|
||||
function getDataFn() {
|
||||
@ -53,7 +62,11 @@ function getDataFn() {
|
||||
// TODO
|
||||
// 需要观察
|
||||
console.log(WorkerTag, "后置机消息", data)
|
||||
// 这里面还需要处理一下档位信号
|
||||
// 收到后置机消息传出去提供给业务,data应该是个string
|
||||
SerialPortService.onMsg((data: number[]) => {
|
||||
console.log(SerialPortTag, "需要处理档位信号:", data);
|
||||
})
|
||||
workerPort.postMessage(
|
||||
JSON.stringify({
|
||||
type: WorkerBackMessageType.ObtainUdpData,
|
||||
@ -75,6 +88,16 @@ function getDataFn() {
|
||||
})
|
||||
}
|
||||
|
||||
// 关闭函数
|
||||
function closedFn(result: WorkerMessage) {
|
||||
ObtainUdpBusinessInstance.close()
|
||||
CenterUDPBusinessInstance.close()
|
||||
// 关闭串口
|
||||
if (result.config.carType !== "2") {
|
||||
SerialPortService.closed()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
workerPort.onmessageerror = (e: MessageEvents) => {
|
||||
console.log(WorkerTag, `Worker received message error: ${e.data}`);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user