fix: 优化中心udp
This commit is contained in:
parent
59b95dc609
commit
5ea66a4bae
@ -31,4 +31,7 @@ export const RequestTag = '[Request]';
|
||||
export const EntryTag = '[Entry]';
|
||||
|
||||
//worker tag
|
||||
export const WorkerTag = '[Worker]';
|
||||
export const WorkerTag = '[Worker]';
|
||||
|
||||
//中心udp
|
||||
export const CenterUdpTag = '[CenterUdpBusiness]'
|
||||
@ -37,6 +37,7 @@ struct Index {
|
||||
@State fd: number = -1;
|
||||
@State carInfo: CarInfoType = {};
|
||||
@State num: number = 0;
|
||||
@State isPlay: boolean = false;
|
||||
// 请求网络表等待弹窗
|
||||
customDialogController: CustomDialogController = new CustomDialogController({
|
||||
builder: LoadingComponent(),
|
||||
@ -77,7 +78,10 @@ struct Index {
|
||||
async onPageShow(): Promise<void> {
|
||||
console.log("首页 onPageShow")
|
||||
await UseAuth(this.context)
|
||||
this.avPlayer.playAudio(['welcome.wav'])
|
||||
if (!this.isPlay) {
|
||||
this.avPlayer.playAudio(['welcome.wav'])
|
||||
this.isPlay = true
|
||||
}
|
||||
this.baseInfo = AppStorage.get<BaseInfoType>('baseInfo')!
|
||||
this.initParams()
|
||||
|
||||
|
||||
@ -28,7 +28,8 @@ export default struct SignalDisplayComponent {
|
||||
aboutToAppear(): void {
|
||||
DifferentialAndSignal.onMsg((data: string) => {
|
||||
const result: WorkerBackMessage = JSON.parse(data)
|
||||
if (result.type === "centerUdpData") {
|
||||
console.log("wzj", data)
|
||||
if (result.type === "obtainUdpData") {
|
||||
this.getSignal(result.data as string)
|
||||
this.rawData = result.data as string
|
||||
}
|
||||
@ -36,11 +37,11 @@ export default struct SignalDisplayComponent {
|
||||
}
|
||||
|
||||
getSignal = (msg: string) => {
|
||||
const strachArr = msg.split(',')
|
||||
if (strachArr[0] != '#DN_GD') {
|
||||
const newArr = msg.split(',')
|
||||
if (newArr[0] != '#DN_GD') {
|
||||
return
|
||||
}
|
||||
this.signArr = strachArr
|
||||
this.signArr = newArr
|
||||
|
||||
for (let i = 0; i <= 12; i++) {
|
||||
this.vehicleSignal[i].value = this.signArr[i+2]
|
||||
@ -155,6 +156,7 @@ export default struct SignalDisplayComponent {
|
||||
CoordinateComponent({
|
||||
isItHorizontal: false,
|
||||
heightNum: 40,
|
||||
data: this.GPSColum
|
||||
})
|
||||
}.width("20%")
|
||||
|
||||
@ -358,7 +360,7 @@ struct TabItemComponent {
|
||||
|
||||
@Component
|
||||
struct GPSComponent {
|
||||
@State data: Array<string> = []
|
||||
@Prop data: Array<string>
|
||||
@State ip: string = ""
|
||||
|
||||
aboutToAppear(): void {
|
||||
@ -439,7 +441,7 @@ struct GPSComponent {
|
||||
|
||||
@Component
|
||||
struct CarComponent {
|
||||
@State data: Array<SignalDataType> = SignalData
|
||||
@Prop data: Array<SignalDataType>
|
||||
|
||||
build() {
|
||||
Flex({
|
||||
@ -457,7 +459,7 @@ struct CarComponent {
|
||||
|
||||
@Component
|
||||
struct CoordinateComponent {
|
||||
@State data: Array<SignalDataType> = GPSData
|
||||
@Prop data: Array<SignalDataType>
|
||||
@State isItHorizontal: boolean = true
|
||||
@State heightNum: number = 65
|
||||
|
||||
@ -490,7 +492,7 @@ struct CoordinateComponent {
|
||||
@Component
|
||||
struct blockComponent {
|
||||
@State label: string = "发送次数"
|
||||
@State value: string = "1"
|
||||
@Prop value: string = "1"
|
||||
@State widthNum: number = 130
|
||||
@State heightNum: number = 65
|
||||
@State color: string = "#FDF5E7"
|
||||
|
||||
@ -7,9 +7,9 @@ import {
|
||||
UDPParamType
|
||||
} from '../../model';
|
||||
import { fillZero, string2Bytes } from '../../pages/judgeSDK/utils/Common';
|
||||
import { NumberToByteArray } from '../Common';
|
||||
import { ArrayToByteArray, NumberToByteArray } from '../Common';
|
||||
import UdpClient from '../UdpUtils';
|
||||
import { UDPTag } from '../../config';
|
||||
import { CenterUdpTag, UDPTag } from '../../config';
|
||||
import { SerialNumberInstance } from '../SerialNumber';
|
||||
|
||||
// 中心UDP业务逻辑
|
||||
@ -41,29 +41,33 @@ class CenterUDPBusiness {
|
||||
}
|
||||
|
||||
startHeartBeat() {
|
||||
console.log("心跳")
|
||||
console.log(CenterUdpTag, "心跳", JSON.stringify(this.carInfo))
|
||||
// 组装消息,一秒发送一次
|
||||
this.timer = setInterval(() => {
|
||||
// 生成流水号
|
||||
SerialNumberInstance.generate()
|
||||
console.log(CenterUdpTag, "流水号生成")
|
||||
// SetSerialNumber()
|
||||
const arr = [this.signNum || 0, this.statue || 1]
|
||||
let tmpList: number[] = [];
|
||||
tmpList.push(NumberToByteArray(Number(arr[0]), 1 * 8)[0])
|
||||
tmpList.push(NumberToByteArray(Number(arr[1]), 1 * 8)[0])
|
||||
|
||||
// 学员流水号
|
||||
const str = this.lsh || '0000000000000'
|
||||
for (let i = 0; i < str.length; i++) {
|
||||
tmpList.push(NumberToByteArray(str.charCodeAt(i), 1 * 8)[0])
|
||||
}
|
||||
console.log(CenterUdpTag, "学员流水号", JSON.stringify(tmpList))
|
||||
const data: UDPParamType = {
|
||||
id: 31,
|
||||
list: tmpList,
|
||||
carNo: this.carInfo.carNo!,
|
||||
placeId: this.carInfo.examinationRoomId!
|
||||
}
|
||||
console.log(CenterUdpTag, "查看生成的", JSON.stringify(data))
|
||||
const param = this.setWholeMsg(data)
|
||||
console.log("查看")
|
||||
console.log(CenterUdpTag, "查看", JSON.stringify(param))
|
||||
this.udp.sendMsg(param);
|
||||
}, 1000);
|
||||
}
|
||||
@ -84,12 +88,16 @@ class CenterUDPBusiness {
|
||||
|
||||
// 初始化
|
||||
async init(config: EnvironmentConfigurationType, carInfo: CarInfoType, otherMessage: OtherMessageType) {
|
||||
console.log(CenterUdpTag, "初始化", JSON.stringify(otherMessage), JSON.stringify(carInfo))
|
||||
try {
|
||||
this.signNum = otherMessage.signNum || 0
|
||||
this.statue = otherMessage.statue || '1'
|
||||
this.lsh = otherMessage.lsh || '0000000000000'
|
||||
this.carInfo = carInfo
|
||||
this.udp.create(config.udplocalIp!, '8800', carInfo.udpAddress!, carInfo.messagePort!)
|
||||
// TODO
|
||||
// this.udp.create(config.udplocalIp!, '8800', carInfo.udpAddress!, carInfo.messagePort!)
|
||||
this.udp.create(config.udplocalIp!, '8800', "112.80.35.83", "11056")
|
||||
|
||||
this.udp.setDealMethod(this.dealMsg)
|
||||
} catch (e) {
|
||||
console.error(UDPTag, "初始化中心 udp失败")
|
||||
@ -133,16 +141,7 @@ class CenterUDPBusiness {
|
||||
params.list?.forEach(item => arr.push(item))
|
||||
bodyJudge.forEach(item => arr.push(item))
|
||||
end.forEach(item => arr.push(item))
|
||||
return this.array2Byte(arr).buffer
|
||||
}
|
||||
|
||||
private array2Byte(array: Array<number>) {
|
||||
const buf = new ArrayBuffer(array.length);
|
||||
const view = new Uint8Array(buf);
|
||||
for (let i = 0; i = array.length; ++i) {
|
||||
view[i] = array[i] & 0xFF;
|
||||
}
|
||||
return view;
|
||||
return ArrayToByteArray(arr).buffer
|
||||
}
|
||||
|
||||
private setMsgHead(params: UDPParamType) {
|
||||
|
||||
@ -304,34 +304,59 @@ class JudgeUdpBusiness {
|
||||
let origin = plc.split(",")
|
||||
let p = origin.map(item => Number(item))
|
||||
let sensor: Sensor = {
|
||||
// 安全带
|
||||
aqd: p[19],
|
||||
// 主驾驶门
|
||||
mkg: p[14],
|
||||
// 手刹
|
||||
ssc: p[13],
|
||||
// 脚刹
|
||||
jsc: p[12],
|
||||
// 副刹车
|
||||
fsc: p[18],
|
||||
// 离合
|
||||
lhq: p[17],
|
||||
// 喇叭
|
||||
lb: p[4],
|
||||
// 示廓灯
|
||||
skd: p[9],
|
||||
// 近光灯
|
||||
jgd: p[7],
|
||||
// 远光灯
|
||||
ygd: p[8],
|
||||
//左方向灯 右方向灯 双跳灯 雾灯 雨刮器 点火1 点火2 发动机转速 档位 车速
|
||||
//左方向灯
|
||||
zfxd: p[2],
|
||||
// 右方向灯
|
||||
yfxd: p[3],
|
||||
// 双跳灯
|
||||
shtd: p[20],
|
||||
// 雾灯
|
||||
wd: p[10],
|
||||
// 雨刮器
|
||||
ygq: p[11],
|
||||
// 点火1
|
||||
dh1: p[5],
|
||||
// 点火2
|
||||
dh2: p[6],
|
||||
// 发动机转速
|
||||
fdjzs: p[25],
|
||||
// 档位
|
||||
dw: p[28],
|
||||
// 车速
|
||||
cs: p[23],
|
||||
// 方向盘角度
|
||||
fxp: Number(origin[27].split('_')[0]),
|
||||
//累计脉冲 溜车脉冲 超声波左后 超声波右后 超声波右前 超声波左前 座椅 仪表盘 后视镜 倒车镜 光照 雨量
|
||||
//累计脉冲
|
||||
ljmc: p[24],
|
||||
// 溜车脉冲
|
||||
lcmc: 0,
|
||||
// 超声波4 左后
|
||||
csbzh: p[32],
|
||||
// 超声波2 右后
|
||||
csbyh: p[30],
|
||||
// 超声波3 右前
|
||||
csbyq: p[31],
|
||||
// 超声波1 左前
|
||||
csbzq: p[29],
|
||||
zy: 0,
|
||||
tbp: 0,
|
||||
@ -347,20 +372,34 @@ class JudgeUdpBusiness {
|
||||
mndg: ''
|
||||
}
|
||||
let gps: Gps = {
|
||||
// GPS板卡类型
|
||||
bklx: p[56],
|
||||
// GPS状态
|
||||
dwzt: p[83],
|
||||
//航向角状态-收星数
|
||||
jdzt: Number(origin[92].split('-')[0]),
|
||||
sj: time,
|
||||
// 纬度
|
||||
jd: p[96],
|
||||
// 经度
|
||||
wd: p[95],
|
||||
// 航向角
|
||||
hxj: p[90],
|
||||
// 俯仰角
|
||||
fyj: p[91],
|
||||
// 海拔高
|
||||
hbg: p[85],
|
||||
// 高度差
|
||||
gdc: p[86],
|
||||
// 速度
|
||||
sd: p[97],
|
||||
// 龄期
|
||||
age: p[87],
|
||||
// 经度因子
|
||||
jdyz: p[89],
|
||||
// 维度因子
|
||||
wdyz: p[88],
|
||||
// 收星数
|
||||
dwsxs: p[84],
|
||||
jdsxs: Number(origin[92].split('-')[1])
|
||||
}
|
||||
|
||||
@ -4,7 +4,6 @@ import { WorkerTag } from '../config';
|
||||
import { CenterCallBackMsgType, WorkerBackMessage, WorkerMessage } from '../model';
|
||||
import { CenterUDPBusinessInstance } from '../utils/business/CenterUdpBusiness';
|
||||
import { DifferentialSignal } from '../utils/business/DifferentialSignal';
|
||||
import { JudgeUdpBusinessInstance } from '../utils/business/JudgeUdpBusiness';
|
||||
import { ObtainUdpBusinessInstance } from '../utils/business/ObtainUdpBusiness';
|
||||
|
||||
const workerPort: ThreadWorkerGlobalScope = worker.workerPort;
|
||||
@ -39,7 +38,7 @@ function initFn(result: WorkerMessage) {
|
||||
// 中心心跳
|
||||
CenterUDPBusinessInstance.startHeartBeat()
|
||||
// 初始化考试过程UDP
|
||||
JudgeUdpBusinessInstance.init(result.config, result.carInfo, result.singlePlay, result.otherMessage.lsh)
|
||||
// JudgeUdpBusinessInstance.init(result.config, result.carInfo, result?.singlePlay || false, result.otherMessage.lsh)
|
||||
|
||||
}
|
||||
|
||||
@ -48,7 +47,7 @@ function getDataFn() {
|
||||
DifferentialSignal.getData((data: ArrayBuffer) => {
|
||||
console.log(WorkerTag, "Received differential signal data:", data.byteLength, "bytes")
|
||||
// TCP拿到差分改正数发给后置机
|
||||
ObtainUdpBusinessInstance.sendData(data)
|
||||
// ObtainUdpBusinessInstance.sendData(data)
|
||||
})
|
||||
// 后置机回执PLC和GPS
|
||||
ObtainUdpBusinessInstance.onMsg((data: string) => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user