diff --git a/entry/src/main/ets/model/Other.ets b/entry/src/main/ets/model/Other.ets index f92cf2e9..cc1d8f0c 100644 --- a/entry/src/main/ets/model/Other.ets +++ b/entry/src/main/ets/model/Other.ets @@ -4,11 +4,10 @@ export interface TakePhotoCallbackData { } export interface ObtainSignalDataConfigType { - // UDP配置 + // 三代机后置机UDP配置 udpLocalIp?: string udpLocalIpPort?: string udpOppositeIp?: string udpOppositeIpPort?: string - } \ No newline at end of file diff --git a/entry/src/main/ets/utils/TcpUtils.ets b/entry/src/main/ets/utils/TcpUtils.ets index 4d060e06..88e8f85b 100644 --- a/entry/src/main/ets/utils/TcpUtils.ets +++ b/entry/src/main/ets/utils/TcpUtils.ets @@ -4,7 +4,8 @@ import { BusinessError } from '@ohos.base' const TAG = '[TcpClient]' -class TcpClient { +export default class TcpClient { + private static instance: TcpClient private localIp: string = '' private localIpPort: string = '' private oppositeIp: string = '' @@ -12,7 +13,6 @@ class TcpClient { private tcpSendNum: number = 0 private tcp: socket.TCPSocket = null private events: Array = [] - private static instance: TcpClient constructor() { if (!TcpClient.instance) { @@ -31,9 +31,13 @@ class TcpClient { } bindTcp(): Promise { - return this.tcp.bind({ address: this.localIp, port: parseInt(this.localIpPort), family: 1 }).then(() => { + return this.tcp.bind({ + address: this.localIp, port: parseInt(this.localIpPort), family: 1 + }).then(() => { return this.tcp.connect({ - address: { address: this.oppositeIp, port: parseInt(this.oppositeIpPort) }, + address: { + address: this.oppositeIp, port: parseInt(this.oppositeIpPort) + }, timeout: 6000 }) }).then(() => { @@ -66,7 +70,9 @@ class TcpClient { } sendMsg(data: string): Promise { - return this.tcp?.send({ data }).catch(async (err: BusinessError) => { + return this.tcp?.send({ + data + }).catch(async (err: BusinessError) => { this.tcpSendNum++ if (this.tcpSendNum > 10) { this.tcpSendNum = 0 @@ -77,4 +83,4 @@ class TcpClient { } } -export const tcpClient = new TcpClient() \ No newline at end of file +// export const tcpClient = new TcpClient() \ No newline at end of file diff --git a/entry/src/main/ets/utils/UdpUtils.ets b/entry/src/main/ets/utils/UdpUtils.ets index 72d335b6..b3222b05 100644 --- a/entry/src/main/ets/utils/UdpUtils.ets +++ b/entry/src/main/ets/utils/UdpUtils.ets @@ -91,25 +91,25 @@ export default class UdpClient { } // 获取后置机信号 -class ObjUdpClient extends UdpClient { - async init(context: common.UIAbilityContext) { - try { - const fileUtil = new FileUtils(context) - const data = await fileUtil.readFile("" + '/config/ipConfig.txt'); - if (data?.length > 0) { - const result: IPConfig = JSON.parse(data) - this.create(result.udplocalIp, result.udplocalIpPort, result.udpOppositeIp, result.udpOppositeIpPort) - } - } catch (e) { - promptAction.showToast({ - message: "初始化obj udp失败" - }) - } - } -} +// class ObjUdpClient extends UdpClient { +// async init(context: common.UIAbilityContext) { +// try { +// const fileUtil = new FileUtils(context) +// const data = await fileUtil.readFile("" + '/config/ipConfig.txt'); +// if (data?.length > 0) { +// const result: IPConfig = JSON.parse(data) +// this.create(result.udplocalIp, result.udplocalIpPort, result.udpOppositeIp, result.udpOppositeIpPort) +// } +// } catch (e) { +// promptAction.showToast({ +// message: "初始化obj udp失败" +// }) +// } +// } +// } -// 给中心发送消息 -class CenterUDPClient extends UdpClient { +// 给中心发送GPS消息 +class centerUDPClient extends UdpClient { async init(context: common.UIAbilityContext) { try { const fileUtil = new FileUtils(context) @@ -146,10 +146,10 @@ class LightUDPClient extends UdpClient { } // obj -export const objUDPClient = new ObjUdpClient() +// export const objUDPClient = new ObjUdpClient() -// 中心 -export const centerUDPClient = new CenterUDPClient() +// 中心GPS +export const CenterUDPClient = new centerUDPClient() // 顶灯 export const lightUDPClient = new LightUDPClient() diff --git a/entry/src/main/ets/utils/business/CentralHeartbeat.ets b/entry/src/main/ets/utils/business/CentralHeartbeat.ets new file mode 100644 index 00000000..8555a68e --- /dev/null +++ b/entry/src/main/ets/utils/business/CentralHeartbeat.ets @@ -0,0 +1,45 @@ +// 中心心跳/发送消息 +import { EnvironmentConfigurationType } from '../../model'; +import UdpClient from '../UdpUtils'; + +class centralHeartbeat { + private centralHeartbeatUdp: UdpClient; + private timer: number = -1 + + constructor() { + } + + // 初始化 + init() { + let config: EnvironmentConfigurationType = + AppStorage.get("EnvironmentConfiguration") + this.centralHeartbeatUdp = new UdpClient(); + this.centralHeartbeatUdp.create(config.udplocalIp, config.udplocalIpPort, config.udpOppositeIp, + config.udpOppositeIpPort); + } + + // 接受中心远程指令 + getData(callback: (data: ArrayBuffer) => void) { + this.centralHeartbeatUdp.onMessage((data: ArrayBuffer) => { + + callback(data); + }); + } + + // 发送消息 + sendData() { + // 组装消息,一秒发送一次 + let data = "1"; + this.timer = setInterval(() => { + this.centralHeartbeatUdp.sendMsg(data); + }, 1000); + } + + // 关闭所有动作 + close() { + clearInterval(this.timer); + this.centralHeartbeatUdp.close() + } +} + +export const CentralHeartbeat = new centralHeartbeat(); \ No newline at end of file diff --git a/entry/src/main/ets/utils/business/DifferentialSignal.ets b/entry/src/main/ets/utils/business/DifferentialSignal.ets new file mode 100644 index 00000000..58db87d9 --- /dev/null +++ b/entry/src/main/ets/utils/business/DifferentialSignal.ets @@ -0,0 +1,45 @@ +//差分信号 +import { EnvironmentConfigurationType } from '../../model'; +import TcpClient from '../TcpUtils'; + +class differentialSignal { + private differentialSignalTcp: TcpClient; + private timer: number = -1 + + constructor() { + } + + init() { + this.differentialSignalTcp = new TcpClient(); + let config: EnvironmentConfigurationType = + AppStorage.get("EnvironmentConfiguration") + this.differentialSignalTcp.init(config.tcplocalIp, config.tcplocalIpPort, config.tcpOppositeIp, + config.tcpOppositePort); + + } + + // 发送消息 + sendData() { + // 组装消息,一秒发送五次 + let data = "1"; + this.timer = setInterval(() => { + this.differentialSignalTcp.sendMsg(data); + }, 200); + + } + + // 获取消息 + getData(callback: (data: ArrayBuffer) => void) { + this.differentialSignalTcp.onMessage((data: ArrayBuffer) => { + callback(data); + }); + } + + // 关闭所有动作 + close() { + clearInterval(this.timer); + this.differentialSignalTcp.close() + } +} + +export const DifferentialSignal = new differentialSignal(); \ No newline at end of file diff --git a/entry/src/main/ets/utils/business/ObtainSignalData.ets b/entry/src/main/ets/utils/business/ObtainSignalData.ets index e95654ef..ca705641 100644 --- a/entry/src/main/ets/utils/business/ObtainSignalData.ets +++ b/entry/src/main/ets/utils/business/ObtainSignalData.ets @@ -1,12 +1,11 @@ import { GlobalConfig } from '../../config' -import { ObtainSignalDataConfigType } from '../../model' +import { EnvironmentConfigurationType } from '../../model' import UdpClient from '../UdpUtils' +// 获取PLC GPS信号 class obtainSignalData { // 三代机UDP private thirdGenerationMachineUdp: UdpClient - // 三代机UDP配置 - private thirdGenerationMachineUdpConfig: ObtainSignalDataConfigType // 几代机 private modelNo: string = "3" @@ -15,16 +14,16 @@ class obtainSignalData { } // 一些初始化 - init(config: ObtainSignalDataConfigType) { - this.thirdGenerationMachineUdpConfig = config + init() { if (this.modelNo === "0") { } else if (this.modelNo === "1") { - } else if (this.modelNo === "2") { } else if (this.modelNo === "3") { // 初始化UDP + let config: EnvironmentConfigurationType = + AppStorage.get("EnvironmentConfiguration") this.thirdGenerationMachineUdp = new UdpClient() - this.thirdGenerationMachineUdp.create(config.udpLocalIp, config.udpLocalIpPort, config.udpOppositeIp, + this.thirdGenerationMachineUdp.create(config.udplocalIp, config.udplocalIpPort, config.udpOppositeIp, config.udpOppositeIpPort) } @@ -35,7 +34,7 @@ class obtainSignalData { // 一代机 // 二代机 - + // 三代机 通过UDP onMessage获取信号 if (this.modelNo === "3") { this.thirdGenerationMachineUdp.onMessage((data: ArrayBuffer) => { @@ -52,6 +51,20 @@ class obtainSignalData { } // 一体机 } + + // 发送数据 + sendData(data: string) { + // 一代机 + + // 二代机 + + // 三代机 通过UDP发送数据 + if (this.modelNo === "3") { + this.thirdGenerationMachineUdp.sendMsg(data) + } + // 一体机 + + } } export const ObtainSignalData = new obtainSignalData() \ No newline at end of file