246 lines
8.6 KiB
TypeScript
Raw Normal View History

2024-01-05 11:11:15 +08:00
import UdpClientByCenter from './UdpClientByCenter';
2024-07-09 13:13:59 +08:00
import { getChuankouFn } from '../../common/service/indexService'
2024-08-10 14:00:18 +08:00
import FileUtil from '../../common/utils/File'
import { GlobalConfig } from '../../config/index'
2025-05-09 15:07:00 +08:00
import { Array2Byte, string2Bytes } from './tools'
2024-07-09 13:13:59 +08:00
export async function sendMsg(val) {
2024-01-05 11:11:15 +08:00
}
2024-07-09 13:13:59 +08:00
2025-05-09 15:07:00 +08:00
export async function getUDP(context, errorFlag?) {
return new Promise(async (resolve, reject) => {
2025-05-13 20:16:39 +08:00
if (globalThis.udpClient && globalThis.udpClient.closeUdp && !errorFlag) {
resolve(true)
return
}
2024-08-10 14:00:18 +08:00
const fileUtil = new FileUtil(context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
if (data === '' || data === undefined) {
console.log(` getUDP has no IPConfigTable `);
globalThis.udpClient = {}
globalThis.host = ''
2025-05-09 15:07:00 +08:00
resolve('')
2024-08-10 14:00:18 +08:00
} else {
2025-05-09 15:07:00 +08:00
const result = JSON.parse(data)
2025-05-13 20:16:39 +08:00
// 未绑定
console.log(` getUDP has no udp clent and bind `);
const udpClient: UdpClientByCenter = new UdpClientByCenter(result.udplocalIp, result.udplocalIpPort, result.udpOppositeIp, result.udpOppositeIpPort)
udpClient.bindUdp()
udpClient.sendMsg('111')
globalThis.host = `http://${result.centerIp}:${result.centerPort}`
globalThis.udpClient = udpClient
globalThis.udpClient.onMessage_1(() => {
console.log('getUDPonMessage_1msgmsgByGloalUdp')
})
globalThis.udpClient.onError_Callback(() => {
getUDP(context, true)
if (errorFlag && globalThis.udpClient && globalThis.udpClient.onMessage_1) {
globalThis.udpClient.onMessage_1 = globalThis.udpClient.onMessage_1
}
})
getChuankouFn()
resolve(`http://${result.centerIp}:${result.centerPort}`)
2024-08-10 14:00:18 +08:00
}
2025-05-09 15:07:00 +08:00
})
}
2024-08-07 08:57:40 +08:00
2025-05-09 15:07:00 +08:00
export async function getUDPGps2(context, errorFlag?) {
return new Promise(async (resolve, reject) => {
2025-05-13 20:16:39 +08:00
if (globalThis.udpClientGps2 && globalThis.udpClientGps2.closeUdp && !errorFlag) {
resolve(true)
return
}
2025-05-09 15:07:00 +08:00
const fileUtil = new FileUtil(context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
console.log('ttttt', data)
if (data === '' || data === undefined) {
globalThis.udpClientGps2 = {}
resolve('')
} else {
const result = JSON.parse(data)
2025-05-13 20:16:39 +08:00
// 未绑定
console.log(` getUDPGPS2 has no udclent and bind `);
const udpClient: UdpClientByCenter = new UdpClientByCenter(result.udplocalIp, (Number(result.udplocalIpPort) + 1).toString(), result.udpOppositeIp2, (Number(result.udpOppositeIpPort) + 1).toString())
udpClient.bindUdp()
udpClient.sendMsg('111')
globalThis.udpClientGps2 = udpClient
2024-07-19 09:21:47 +08:00
2025-05-13 20:16:39 +08:00
globalThis.udpClientGps2.onMessage_1(() => {
console.log('getUDPGPS2 onMessage_1 MsgByGlobalUdpGPS2')
})
globalThis.udpClientGps2.onError_Callback(() => {
getUDPGps2(context, true)
if (errorFlag && globalThis.udpClientGps2 && globalThis.udpClientGps2.onMessage_1) {
globalThis.udpClientGps2.onMessage_1 = globalThis.udpClientGps2.onMessage_1
}
})
resolve(`http://${result.centerIp}:${result.centerPort}`)
2025-05-09 15:07:00 +08:00
}
2024-01-05 11:11:15 +08:00
})
}
2025-05-09 15:07:00 +08:00
export async function getUDP2(context, errorFlag?) {
2025-05-13 20:16:39 +08:00
if (globalThis.udpClient2 && globalThis.udpClient2.closeUdp && !errorFlag) {
return
}
2024-08-10 14:00:18 +08:00
const fileUtil = new FileUtil(context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
if (data === '' || data === undefined) {
globalThis.udpClient2 = {}
globalThis.udpClient2.setMsgCallBack = () => {
}
2025-05-09 15:07:00 +08:00
} else {
const result = JSON.parse(data)
2024-08-10 14:00:18 +08:00
console.log(` getUDP2 has IPConfigTable `);
2025-05-13 20:16:39 +08:00
// 未绑定
console.log(` getUDP2 has no udclent and bind `);
const udpClient2: UdpClientByCenter = new UdpClientByCenter(result.udplocalIp, '8800', globalThis.carInfo?.udpAddress, globalThis.carInfo?.messagePort)
console.info('surenjun udp2=> ', globalThis.carInfo?.messagePort)
udpClient2.bindUdp()
udpClient2.onError_Callback(() => {
getUDP2(context, true);
if (errorFlag && globalThis.udpClient2 && globalThis.udpClient2.onMessage_2) {
globalThis.udpClient2.onMessage_2 = globalThis.udpClient2.onMessage_2
}
})
if (!errorFlag) {
udpClient2.onMessage_2((val) => {
if (val.id == '32') {
globalThis.signNum = val.body[1]
if (val.body[0] == 5) {
console.info('surenjun', `接收到平台扣分请求,请求指令为:${val.body[1]}`)
globalThis.udpEvent.sendOnKf(val.body[1])
}
if (val.body[0] == 11) {
console.info('surenjun', 'GlobalUdp收到beginExam事件')
globalThis.udpEvent.sendBeginExam(val.body[1])
}
if (val.body[0] == 12) {
console.info('surenjun', 'GlobalUdp收到endExam事件')
globalThis.udpEvent.sendEndExam(val.body[1])
}
2024-08-10 14:00:18 +08:00
}
2025-05-13 20:16:39 +08:00
if (val.id == '36') {
//获取远程扣分内容
console.info('surenjun', '考车收到远程扣分项目内容,扣分代码:' + val.body[0])
globalThis.udpEvent.sendKfContent(val.body[0])
} else if (val.id == '46') {
let tmpList = []
const str = globalThis.lsh
for (let i = 0; i < str.length; i++) {
tmpList.push(this.string2Bytes(str.charCodeAt(i), 1 * 8)[0])
2025-05-09 15:07:00 +08:00
}
2025-05-13 20:16:39 +08:00
const param = {
id: 47,
list: tmpList,
carNo: globalThis.carInfo.carNo,
placeId: globalThis.carInfo.examinationRoomId
2024-08-10 14:00:18 +08:00
}
2025-05-13 20:16:39 +08:00
globalThis.udpClient2.send(param)
}
})
2024-08-10 14:00:18 +08:00
}
2025-05-13 20:16:39 +08:00
globalThis.udpClient2 = udpClient2
2024-08-10 14:00:18 +08:00
}
2024-01-05 11:11:15 +08:00
}
2024-02-20 10:22:33 +08:00
2024-07-09 13:13:59 +08:00
export async function setTopLineUdp() {
2024-08-10 14:00:18 +08:00
const fileUtil = new FileUtil(globalThis.context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
const config = JSON.parse(data)
if (config && config.udplocalIp) {
const {udplocalIp,udpOppositeIp,udpOppositeIpPort} = config;
2024-07-09 13:13:59 +08:00
const udpClient: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '55509', udpOppositeIp, udpOppositeIpPort)
2024-01-05 11:11:15 +08:00
udpClient.bindUdp()
return {
2024-07-09 13:13:59 +08:00
send(bytes) {
2024-01-05 11:11:15 +08:00
udpClient.sendHeadMsg(bytes)
}
}
}
}
2024-05-09 13:42:56 +08:00
//
2024-07-09 13:13:59 +08:00
export async function setJudgeUdp() {
2024-08-10 14:00:18 +08:00
const fileUtil = new FileUtil(globalThis.context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
const config = JSON.parse(data)
2024-05-09 13:42:56 +08:00
2024-08-10 14:00:18 +08:00
//
// const config = await getSyncData('IpConfigTable');
2024-05-09 13:42:56 +08:00
let udpIndex = 0;
let currentUdpIndex = 0;
2024-08-15 09:01:09 +08:00
clearInterval(globalThis.judgeUdpTimer)
globalThis.judgeUdpTimer = setInterval(() => {
2024-05-09 13:42:56 +08:00
udpIndex += 1;
2024-07-09 13:13:59 +08:00
}, 1000);
2024-05-09 13:42:56 +08:00
2024-08-10 14:00:18 +08:00
if (config && config.udplocalIp) {
const {udplocalIp} = config;
2024-09-03 19:28:07 +08:00
const udpClientbyCenter: UdpClientByCenter = new UdpClientByCenter(
udplocalIp, '8080',
globalThis.carInfo?.udpAddress,
globalThis.carInfo?.hintPort
)
2025-05-09 15:07:00 +08:00
console.info('surenjun hintPort=> ', globalThis.carInfo?.hintPort)
2024-09-02 19:23:56 +08:00
2025-05-09 15:07:00 +08:00
udpClientbyCenter.onError_Callback(() => {
})
udpClientbyCenter.bindUdp()
udpClientbyCenter.onMessage_2((val) => {
})
2024-09-03 19:28:07 +08:00
//远程监听开始考试、结束考试、扣分指令
2024-07-09 13:13:59 +08:00
// globalThis.judgeUdpClient = udpClientbyCenter;
2024-01-05 11:11:15 +08:00
return {
2024-07-09 13:13:59 +08:00
send(bytes) {
if (udpIndex > currentUdpIndex) {
2024-08-15 09:01:09 +08:00
udpClientbyCenter.sendMsgExt({
id: 45,
2024-07-09 13:13:59 +08:00
list: bytes,
carNo: globalThis.carInfo.carNo,
2024-08-15 09:01:09 +08:00
placeId: globalThis.carInfo.examinationRoomId
})
2024-05-09 13:42:56 +08:00
currentUdpIndex = udpIndex
}
2024-09-03 19:28:07 +08:00
},
2024-11-18 15:16:42 +08:00
//申请远程扣分查询
2025-05-09 15:07:00 +08:00
askKf(directives) {
2024-11-18 15:16:42 +08:00
globalThis.udpClient2.sendMsgExt({
id: 35,
list: [directives],
carNo: globalThis.carInfo.carNo,
placeId: globalThis.carInfo.examinationRoomId,
})
console.info('surenjun', `考车查询扣分项目内容,请求指令为:${directives}`)
},
2024-09-03 19:28:07 +08:00
2024-11-18 15:16:42 +08:00
//确定远程扣分
2025-05-09 15:07:00 +08:00
confirmKf(directives, code) {
2024-11-18 15:16:42 +08:00
globalThis.udpClient2.sendMsgExt({
id: 37,
2025-05-09 15:07:00 +08:00
list: Array2Byte([string2Bytes(directives, 8), string2Bytes(code, 8)]),
2024-11-18 15:16:42 +08:00
carNo: globalThis.carInfo.carNo,
placeId: globalThis.carInfo.examinationRoomId
})
console.info('surenjun', `考车发送确定扣分指令,指令为:${directives}`)
2024-09-03 19:28:07 +08:00
},
2025-04-25 13:46:12 +08:00
//申请语音对讲
askVoice() {
globalThis.udpClient2.sendMsgExt({
id: 49,
list: [],
carNo: globalThis.carInfo.carNo,
placeId: globalThis.carInfo.examinationRoomId,
})
}
2024-01-05 11:11:15 +08:00
}
}
}
2025-05-09 15:07:00 +08:00