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