feat: implement central heartbeat and differential signal classes with UDP/TCP communication
This commit is contained in:
parent
1336100978
commit
8489d70c58
@ -4,11 +4,10 @@ export interface TakePhotoCallbackData {
|
||||
}
|
||||
|
||||
export interface ObtainSignalDataConfigType {
|
||||
// UDP配置
|
||||
// 三代机后置机UDP配置
|
||||
udpLocalIp?: string
|
||||
udpLocalIpPort?: string
|
||||
udpOppositeIp?: string
|
||||
udpOppositeIpPort?: string
|
||||
|
||||
|
||||
}
|
||||
@ -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<Function> = []
|
||||
private static instance: TcpClient
|
||||
|
||||
constructor() {
|
||||
if (!TcpClient.instance) {
|
||||
@ -31,9 +31,13 @@ class TcpClient {
|
||||
}
|
||||
|
||||
bindTcp(): Promise<void> {
|
||||
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<void> {
|
||||
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()
|
||||
// export const tcpClient = new TcpClient()
|
||||
@ -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()
|
||||
|
||||
45
entry/src/main/ets/utils/business/CentralHeartbeat.ets
Normal file
45
entry/src/main/ets/utils/business/CentralHeartbeat.ets
Normal file
@ -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<EnvironmentConfigurationType>("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();
|
||||
45
entry/src/main/ets/utils/business/DifferentialSignal.ets
Normal file
45
entry/src/main/ets/utils/business/DifferentialSignal.ets
Normal file
@ -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<EnvironmentConfigurationType>("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();
|
||||
@ -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<EnvironmentConfigurationType>("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)
|
||||
}
|
||||
|
||||
@ -52,6 +51,20 @@ class obtainSignalData {
|
||||
}
|
||||
// 一体机
|
||||
}
|
||||
|
||||
// 发送数据
|
||||
sendData(data: string) {
|
||||
// 一代机
|
||||
|
||||
// 二代机
|
||||
|
||||
// 三代机 通过UDP发送数据
|
||||
if (this.modelNo === "3") {
|
||||
this.thirdGenerationMachineUdp.sendMsg(data)
|
||||
}
|
||||
// 一体机
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export const ObtainSignalData = new obtainSignalData()
|
||||
Loading…
x
Reference in New Issue
Block a user