Compare commits
6 Commits
78436c39f7
...
33bb420725
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33bb420725 | ||
|
|
95a6ddec29 | ||
|
|
e22def4691 | ||
|
|
b6f5993e06 | ||
|
|
6584d8e2cb | ||
|
|
94d7ba9194 |
@ -498,6 +498,7 @@ export interface JudgeUI {
|
||||
dw: string
|
||||
endExamDialogController: CustomDialogController
|
||||
generateExamRecordsDialogController: CustomDialogController
|
||||
laneSignal:PerLane,
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -207,9 +207,7 @@ struct Index {
|
||||
DifferentialAndSignal.init()
|
||||
this.initWork = true
|
||||
}
|
||||
DifferentialAndSignal.onMsg(() => {
|
||||
// dConsole.log("外层接受")
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
build() {
|
||||
|
||||
@ -38,14 +38,15 @@ import {
|
||||
SyssetConfig,
|
||||
SYSTEMPARMARR,
|
||||
User,
|
||||
ProcessDataEnumType
|
||||
ProcessDataEnumType,
|
||||
PerLane
|
||||
} from '../model';
|
||||
import { GetSyncData } from '../utils/table/Operation';
|
||||
import dayTs from '../utils/Date';
|
||||
import { GetCurrentTime } from '../utils/Common';
|
||||
import FileUtils from '../utils/FileUtils';
|
||||
import SignalTrajectoryDialog from './Judge/SignalTrajectoryDialog';
|
||||
import { DefaultJudgeConfigData, ProcessDataMock } from '../mock';
|
||||
import { DefaultJudgeConfigData, InitialPerLane, ProcessDataMock } from '../mock';
|
||||
import { dConsole } from '../utils/LogWorker';
|
||||
import ConfirmDialog from './compontents/ConfirmDialog';
|
||||
import CarLoadingDialog from './compontents/CarLoading';
|
||||
@ -146,10 +147,18 @@ struct JudgePage {
|
||||
@State carInfo: CarInfoType = {}
|
||||
@State isErrorMsgEnd: boolean = false
|
||||
@State disConnectErrorOpen: boolean = false
|
||||
@State @Watch("laneSignalChange") laneSignal: PerLane = InitialPerLane
|
||||
|
||||
laneSignalChange() {
|
||||
dConsole.log("车道信号变化1", this.laneSignal)
|
||||
}
|
||||
|
||||
public context = getContext(this) as common.UIAbilityContext;
|
||||
// 信号查看弹窗
|
||||
signalTrajectoryDialogController: CustomDialogController = new CustomDialogController({
|
||||
builder: SignalTrajectoryDialog(),
|
||||
builder: SignalTrajectoryDialog({
|
||||
laneSignal: this.laneSignal
|
||||
}),
|
||||
customStyle: true,
|
||||
autoCancel: true
|
||||
})
|
||||
@ -167,8 +176,7 @@ struct JudgePage {
|
||||
text: "确认结束考试?",
|
||||
onConfirm: async () => {
|
||||
if (this.isErrorMsgEnd) {
|
||||
dConsole.log(JudgeTag, "结束考试")
|
||||
this.judge.closeAllFiles()
|
||||
dConsole.log(JudgeTag, "router back1")
|
||||
router.back()
|
||||
return
|
||||
}
|
||||
@ -187,7 +195,7 @@ struct JudgePage {
|
||||
try {
|
||||
this.judge.checkExamIsEnd(true);
|
||||
} catch (e) {
|
||||
this.judge.closeAllFiles()
|
||||
dConsole.log(JudgeTag, "router back2")
|
||||
router.back()
|
||||
}
|
||||
}
|
||||
@ -505,6 +513,7 @@ struct JudgePage {
|
||||
message: '读取数据库信息失败,请重新联网更新!',
|
||||
duration: 8000
|
||||
});
|
||||
dConsole.log(JudgeTag, "router back3")
|
||||
router.back();
|
||||
}
|
||||
}
|
||||
@ -687,9 +696,13 @@ struct JudgePage {
|
||||
Column() {
|
||||
// 顶部
|
||||
HeaderComponent({
|
||||
logoExpansionBuilder: this.logoExpansionBuilder,
|
||||
logoExpansionBuilder: () => {
|
||||
this.logoExpansionBuilder()
|
||||
},
|
||||
customizeReturnArea: true,
|
||||
backAreaBuilder: this.backAreaBuilder
|
||||
backAreaBuilder: () => {
|
||||
this.backAreaBuilder()
|
||||
}
|
||||
})
|
||||
Row() {
|
||||
Row() {
|
||||
|
||||
@ -1,9 +1,14 @@
|
||||
import { PerLane } from '../../model'
|
||||
import { dConsole } from '../../utils/LogWorker'
|
||||
import SignalDisplayComponent from '../compontents/SignalDisplay'
|
||||
import TabComponent from '../compontents/Tab'
|
||||
|
||||
@CustomDialog
|
||||
export default struct SignalTrajectoryDialog {
|
||||
@State active: number = 0
|
||||
@Link laneSignal: PerLane
|
||||
|
||||
|
||||
private controller?: CustomDialogController
|
||||
|
||||
build() {
|
||||
@ -32,7 +37,8 @@ export default struct SignalTrajectoryDialog {
|
||||
Scroll() {
|
||||
Column() {
|
||||
SignalDisplayComponent({
|
||||
active: this.active
|
||||
active: this.active,
|
||||
laneSignal: this.laneSignal
|
||||
})
|
||||
}.height(890)
|
||||
}.width("100%")
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import SignalDisplayComponent from './compontents/SignalDisplay';
|
||||
import router from '@ohos.router';
|
||||
import TabComponent from './compontents/Tab';
|
||||
import { InitialPerLane } from '../mock';
|
||||
|
||||
@Entry
|
||||
@Component
|
||||
@ -41,7 +42,8 @@ struct SignDisplayPage {
|
||||
}.width("100%").height(100)
|
||||
|
||||
SignalDisplayComponent({
|
||||
active: this.active
|
||||
active: this.active,
|
||||
laneSignal: InitialPerLane
|
||||
})
|
||||
}
|
||||
.width('100%')
|
||||
|
||||
@ -14,6 +14,7 @@ struct TerminalInfoPage {
|
||||
@State config: EnvironmentConfigurationType = {}
|
||||
private fileUtil!: FileUtils
|
||||
private context = getContext(this) as common.UIAbilityContext;
|
||||
@State isProcessing: boolean = false;
|
||||
|
||||
async aboutToAppear() {
|
||||
this.fileUtil = new FileUtils(this.context)
|
||||
@ -39,6 +40,7 @@ struct TerminalInfoPage {
|
||||
Column() {
|
||||
Column() {
|
||||
Button().opacity(1).width(0).height(0)
|
||||
Scroll() {
|
||||
Flex({
|
||||
wrap: FlexWrap.Wrap,
|
||||
}) {
|
||||
@ -146,6 +148,20 @@ struct TerminalInfoPage {
|
||||
this.config.dnsServers = value;
|
||||
}
|
||||
})
|
||||
blockComponent({
|
||||
label: "外壳版本",
|
||||
value: this.config.version,
|
||||
change: (value: string) => {
|
||||
this.config.version = value;
|
||||
}
|
||||
})
|
||||
blockComponent({
|
||||
label: "评判版本",
|
||||
value: this.config.judgeVersion,
|
||||
change: (value: string) => {
|
||||
this.config.judgeVersion = value;
|
||||
}
|
||||
})
|
||||
blockComponent({
|
||||
label: "车型",
|
||||
type: 4,
|
||||
@ -187,24 +203,36 @@ struct TerminalInfoPage {
|
||||
}
|
||||
})
|
||||
blockComponent({
|
||||
label: "是否开启调试",
|
||||
label: "开启调试(重启APP)",
|
||||
type: 6,
|
||||
value: this.config.isOpenDebugger,
|
||||
change: (value: string) => {
|
||||
this.config.isOpenDebugger = value;
|
||||
}
|
||||
})
|
||||
}.margin(20)
|
||||
|
||||
}
|
||||
.backgroundColor("#282828")
|
||||
.height(650)
|
||||
.width("100%")
|
||||
.backgroundColor("#282828")
|
||||
.borderRadius(20)
|
||||
.margin(20)
|
||||
.padding({
|
||||
top: 10
|
||||
})
|
||||
|
||||
|
||||
Row() {
|
||||
Image($r('app.media.bc')).height(80).objectFit(ImageFit.Contain).onClick(() => {
|
||||
if (this.isProcessing) {
|
||||
Prompt.showToast({
|
||||
message: "请勿频繁点击",
|
||||
duration: 3000
|
||||
})
|
||||
return
|
||||
}
|
||||
this.isProcessing = true
|
||||
dConsole.log(TerminalInfoTag, "保存配置", JSON.stringify(this.config))
|
||||
AppStorage.setOrCreate<EnvironmentConfigurationType>("EnvironmentConfiguration", this.config)
|
||||
this.fileUtil.addFile(GlobalConfig.commonFileWriteAddress + '/config/ipConfig.txt', JSON.stringify(this.config))
|
||||
@ -228,8 +256,13 @@ struct TerminalInfoPage {
|
||||
message: '设置成功',
|
||||
duration: 3000
|
||||
});
|
||||
// 延迟几秒
|
||||
setTimeout(() => {
|
||||
this.isProcessing = false
|
||||
}, 3000)
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
}
|
||||
.width("100%")
|
||||
|
||||
@ -28,14 +28,18 @@ export default struct SignalDisplayComponent {
|
||||
// 原始数据
|
||||
@State rawData: string = "$GPS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
|
||||
// 车道信息
|
||||
@State laneSignal: PerLane = InitialPerLane
|
||||
@Link @Watch("laneSignalChange") laneSignal: PerLane
|
||||
|
||||
laneSignalChange(){
|
||||
dConsole.log("车道信号变化3",this.laneSignal)
|
||||
}
|
||||
|
||||
aboutToAppear(): void {
|
||||
DifferentialAndSignal.onMsg(this.getMsg)
|
||||
}
|
||||
|
||||
aboutToDisappear(): void {
|
||||
DifferentialAndSignal.onMsg(this.getMsg)
|
||||
DifferentialAndSignal.offMsg(this.getMsg)
|
||||
}
|
||||
|
||||
getMsg = (data: string) => {
|
||||
@ -162,6 +166,7 @@ export default struct SignalDisplayComponent {
|
||||
struct trajectoryComponent {
|
||||
@State scaleNum: number = 100
|
||||
scaleFn = async (num: number) => {
|
||||
console.log("缩放传入数据", num.toString())
|
||||
const scaleNum = this.scaleNum
|
||||
if (scaleNum > 0 && scaleNum < 5000) {
|
||||
this.scaleNum += num;
|
||||
@ -172,6 +177,7 @@ struct trajectoryComponent {
|
||||
if (scaleNum > 5000 && num < 0) {
|
||||
this.scaleNum += num;
|
||||
}
|
||||
console.log("缩放数据", this.scaleNum.toString())
|
||||
await examJudgeMapSetScaling(this.scaleNum);
|
||||
}
|
||||
getScaleNum = (): number => {
|
||||
@ -187,7 +193,7 @@ struct trajectoryComponent {
|
||||
|
||||
build() {
|
||||
Stack({
|
||||
alignContent: Alignment.TopStart
|
||||
alignContent: Alignment.TopEnd
|
||||
}) {
|
||||
XComponent({
|
||||
id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变
|
||||
@ -206,7 +212,7 @@ struct trajectoryComponent {
|
||||
})
|
||||
Row() {
|
||||
Image($rawfile('judge/big.png')).width(60).onClick(() => {
|
||||
this.scaleFn(this.getScaleNum() - 1)
|
||||
this.scaleFn(-this.getScaleNum())
|
||||
})
|
||||
Image($rawfile('judge/small.png')).width(60).onClick(() => {
|
||||
this.scaleFn(this.getScaleNum())
|
||||
@ -241,6 +247,7 @@ struct LaneComponent {
|
||||
]
|
||||
|
||||
getValues(roadColumn: RoadDataType) {
|
||||
dConsole.log(SignDisplayTag, "车道信息", this.laneSignal)
|
||||
let key = roadColumn.key;
|
||||
let str = ''
|
||||
if (Array.isArray(key)) {
|
||||
|
||||
@ -1,161 +0,0 @@
|
||||
import apiJudgeSdk from 'libJudgeSdk.so';
|
||||
import { examJudgeMapSetScaling } from '../../judgeSDK/api';
|
||||
import { PerLane } from '../../../model';
|
||||
import { InitialPerLane } from '../../../mock';
|
||||
|
||||
interface RoadDataType {
|
||||
name: string,
|
||||
key: string | string[]
|
||||
}
|
||||
|
||||
@Component
|
||||
export default struct RealTime {
|
||||
@State message: string = '开始绘制'
|
||||
// 控制XComponent组件的创建和销毁
|
||||
@State draw: boolean = false
|
||||
//模拟考试项目
|
||||
@State scaleNum: number = 100
|
||||
@State gpsActive: number = 1
|
||||
@State ratio: number = 1
|
||||
@State lane: PerLane = InitialPerLane
|
||||
scaleFn = async (num: number) => {
|
||||
const scaleNum = this.scaleNum
|
||||
if (scaleNum > 0 && scaleNum < 5000) {
|
||||
this.scaleNum += num;
|
||||
}
|
||||
if (scaleNum === 0 && num > 0) {
|
||||
this.scaleNum += num;
|
||||
}
|
||||
if (scaleNum > 5000 && num < 0) {
|
||||
this.scaleNum += num;
|
||||
}
|
||||
await examJudgeMapSetScaling(this.scaleNum);
|
||||
}
|
||||
private widthNumber: string | number | Resource = 0
|
||||
private heightNumber: string | number | Resource = 0
|
||||
private RoadData: Array<RoadDataType> = [
|
||||
{ name: '路段组号', key: 'MapRoad_Code_No' },
|
||||
{ name: '路段编码', key: 'MapRoad_Name' },
|
||||
{ name: '车轮压线', key: ['TouchLineType', 'TouchDir'] },
|
||||
{ name: '车身碰线', key: ['TouchLineTypeCS', 'TouchLineDirCS'] },
|
||||
{ name: '基准车道', key: ['BasePointInLaneNo', 'BaseLaneCount'] },
|
||||
{ name: '前点车道', key: ['FrontPointLaneNo', 'FrontPointLaneCount'] },
|
||||
{ name: '后车点道', key: ['BackPointLaneNo', 'BackPointLaneCount'] },
|
||||
{ name: '左前/后车身距离', key: ['Body_LF_ToLeftEdge', 'Body_LB_ToLeftEdge'] },
|
||||
{ name: '右前/后车身距离', key: ['Body_RF_ToRightEdge', 'Body_RB_ToRightEdge'] },
|
||||
{ name: '右前/后车身边线', key: ['Body_RF_ToBaseLine', 'Body_RB_ToBaseLine'] },
|
||||
{ name: '右前/后轮距离', key: ['Wheel_RF_ToRightEdge', 'Wheel_RB_ToRightEdge'] },
|
||||
{ name: '右前/后轮边线', key: ['Wheel_RF_ToBaseLine', 'Wheel_RB_ToBaseLine'] },
|
||||
{ name: '左前/后轮距离', key: ['Wheel_LF_ToRightEdge', 'Wheel_LB_ToRightEdge'] },
|
||||
{ name: '左前/后轮边线', key: ['Wheel_LF_ToBaseLine', 'Wheel_LB_ToBaseLine'] },
|
||||
{ name: '车道属性', key: ['BasePointInLaneDir', 'CrossLineAttr', 'DirInverse'] },
|
||||
{ name: '形状', key: ['InShapeAttr', 'ShapeNo', 'ShapeNoWheel'] },
|
||||
{ name: '路段点', key: ['CrossPointNo'] },
|
||||
]
|
||||
|
||||
async aboutToDisappear() {
|
||||
// clearInterval(this.timer)
|
||||
}
|
||||
|
||||
async aboutToAppear() {
|
||||
// const judge = new Judge(this)
|
||||
// let timer = setInterval(() => {
|
||||
// this.lane = globalThis.laneData;
|
||||
// }, 1000)
|
||||
// this.timer = timer
|
||||
}
|
||||
|
||||
getScaleNum = (): number => {
|
||||
const scaleNum = this.scaleNum;
|
||||
if (scaleNum < 200) return 10;
|
||||
if (scaleNum < 400) return 30;
|
||||
if (scaleNum < 600) return 50;
|
||||
if (scaleNum < 800) return 70;
|
||||
if (scaleNum < 1000) return 100;
|
||||
if (scaleNum < 2000) return 500;
|
||||
return 1000;
|
||||
}
|
||||
|
||||
getValues(roadColumn: RoadDataType) {
|
||||
const lane = this.lane;
|
||||
let key = roadColumn.key;
|
||||
let str = ''
|
||||
if (Array.isArray(key)) {
|
||||
key.forEach((k, index) => {
|
||||
str += (Reflect.get(lane, k) === undefined ? '' : Reflect.get(lane, k)) + (index == key.length - 1 ? '' : '/')
|
||||
})
|
||||
} else {
|
||||
str = Reflect.get(lane, key) === undefined ? '' : Reflect.get(lane, key)
|
||||
}
|
||||
return str
|
||||
}
|
||||
|
||||
build() {
|
||||
Row() {
|
||||
Column() {
|
||||
Row() {
|
||||
Text('车道信息').fontColor(this.gpsActive == 0 ? '#2D3C5A' : '#fff').fontSize(20)
|
||||
}
|
||||
.width('100%')
|
||||
.height(37)
|
||||
.backgroundColor(this.gpsActive == 0 ? '#fff' : '#1A1A1A')
|
||||
.margin({ top: 10 * this.ratio, right: 10 })
|
||||
.justifyContent(FlexAlign.Center)
|
||||
|
||||
Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Start }) {
|
||||
ForEach(this.RoadData, (item: RoadDataType) => {
|
||||
Column() {
|
||||
Text(`${item.name}:${this.getValues(item)}`)
|
||||
.fontSize(20)
|
||||
.lineHeight(30)
|
||||
.fontColor('#fff')
|
||||
}.height(30).justifyContent(FlexAlign.Start).width('100%')
|
||||
})
|
||||
}.margin({ top: 5 })
|
||||
|
||||
}.width(168 * 1.5)
|
||||
.height(this.heightNumber)
|
||||
.backgroundColor('#282828')
|
||||
.margin({ top: 6 * this.ratio, })
|
||||
|
||||
Column() {
|
||||
if (this.draw) {
|
||||
XComponent({
|
||||
id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变
|
||||
type: 'surface',
|
||||
libraryname: 'JudgeSdk'
|
||||
// libraryname: 'judgesdk'
|
||||
})
|
||||
.width(this.widthNumber)
|
||||
.height(this.heightNumber)
|
||||
.onLoad(() => {
|
||||
apiJudgeSdk.examJudgeMapSetDrawing(true); //停止绘制地图轨迹,false:表示结束绘制
|
||||
})
|
||||
.onDestroy(() => {
|
||||
apiJudgeSdk.examJudgeMapSetDrawing(false); //停止绘制地图轨迹,false:表示结束绘制
|
||||
this.draw = false;
|
||||
// clearInterval(globalThis.realTimer)
|
||||
})
|
||||
} else {
|
||||
Column() {
|
||||
}
|
||||
.width(this.widthNumber)
|
||||
.height(this.heightNumber)
|
||||
}
|
||||
}
|
||||
.width('100%')
|
||||
.backgroundColor('#fff')
|
||||
|
||||
Row() {
|
||||
Image($rawfile('judge/big.png')).width(60).onClick(() => {
|
||||
this.scaleFn(this.getScaleNum() - 1)
|
||||
})
|
||||
Image($rawfile('judge/small.png')).width(60).onClick(() => {
|
||||
this.scaleFn(this.getScaleNum())
|
||||
}).margin({ left: 20 })
|
||||
}.position({ x: '32%', y: 60 })
|
||||
}
|
||||
.height('100%')
|
||||
}
|
||||
}
|
||||
|
||||
@ -285,6 +285,16 @@ export default class Judge {
|
||||
if (stachArr[0] != '#DN_GD' || this.isUdpEnd) {
|
||||
return
|
||||
}
|
||||
const gpsPart = msg.split("#END$GPS,")[1];
|
||||
const gpsStatus = gpsPart.split(",")[0];
|
||||
if (gpsStatus === "4") {
|
||||
dConsole.log(JudgeTag, "差分状态正常", gpsStatus)
|
||||
this.judgeUI.isDwztRight = true
|
||||
} else {
|
||||
dConsole.log(JudgeTag, "差分状态异常", gpsStatus)
|
||||
this.judgeUI.isDwztRight = false
|
||||
}
|
||||
this.judgeUI.isDwztRight
|
||||
const plcData = await this.getPlcData(msg);
|
||||
// 4.过程数据
|
||||
await this.fileLog?.setExamJudgeData(JSON.stringify(plcData))
|
||||
@ -591,7 +601,7 @@ export default class Judge {
|
||||
num++
|
||||
// 4.过程数据
|
||||
this.tempData = msg
|
||||
this.judgeUI.isDwztRight = (msg?.gps?.dwzt == 4 && msg?.gps?.jdzt == 3);
|
||||
// this.judgeUI.isDwztRight = (msg?.gps?.dwzt == 4 && msg?.gps?.jdzt == 3);
|
||||
this.judgeUI.sd = Math.floor(msg?.gps?.sd * 1.852) + '';
|
||||
this.judgeUI.dw = Math.floor(msg?.sensor?.dw) + ''
|
||||
this.plcData = msg
|
||||
@ -1075,7 +1085,6 @@ export default class Judge {
|
||||
const checkExamIsEnd = this.checkExamIsEnd
|
||||
const checkProjectIsStart = this.checkProjectIsStart
|
||||
const lane = this.lane
|
||||
const closeAllFiles = this.closeAllFiles
|
||||
|
||||
const projectsObj: object = judgeUI.projectsObj
|
||||
const judgeConfigObj: object = judgeUI.judgeConfigObj
|
||||
@ -1332,7 +1341,6 @@ export default class Judge {
|
||||
const avPlayer = this.avPlayer
|
||||
const judgeTask = this.judgeTask
|
||||
const isManual = this.isManual
|
||||
const closeAllFiles = this.closeAllFiles
|
||||
|
||||
const judgeConfigObj = judgeUI.judgeConfigObj
|
||||
const examSubject = judgeUI.examSubject
|
||||
@ -1354,7 +1362,7 @@ export default class Judge {
|
||||
if (!singlePlay && isManual && !isAllProjectsEnd) {
|
||||
avPlayer?.playAudio(['voice/empty.mp3'], true, () => {
|
||||
this.isUdpEnd = true;
|
||||
closeAllFiles()
|
||||
dConsole.log(JudgeTag, "router back7")
|
||||
router.back();
|
||||
})
|
||||
return
|
||||
@ -1396,7 +1404,6 @@ export default class Judge {
|
||||
const avPlayer = this.avPlayer
|
||||
const kfArr = this.kfArr
|
||||
const filePath = this.filePath
|
||||
const closeAllFiles = this.closeAllFiles
|
||||
|
||||
const lsh = judgeUI.lsh;
|
||||
const idCard = judgeUI.idCard;
|
||||
@ -1436,6 +1443,7 @@ export default class Judge {
|
||||
drvexam
|
||||
}
|
||||
let backTimeOut = setTimeout(() => {
|
||||
dConsole.log(JudgeTag, "router back6")
|
||||
router.back()
|
||||
}, 90 * 1000)
|
||||
const temp = await this.sendWriteObjectOut(data, filePath);
|
||||
@ -1449,7 +1457,6 @@ export default class Judge {
|
||||
this.judgeUI.errorMsg = '当前的考试过程信息监管审核未通过,程序将退出!'
|
||||
}
|
||||
this.isUdpEnd = true;
|
||||
closeAllFiles()
|
||||
// this.judgeUI.loadingPopupVisible = false;
|
||||
dConsole.log(JudgeTag, ' 关闭车辆loading1')
|
||||
this.judgeUI.generateExamRecordsDialogController.close()
|
||||
@ -1536,7 +1543,7 @@ export default class Judge {
|
||||
if (kfArr && kfArr.length - 1 === index) {
|
||||
avPlayer?.playAudio([`voice/${kf.markcatalog}.mp3`, voiceURL], false, () => {
|
||||
this.isUdpEnd = true;
|
||||
closeAllFiles()
|
||||
dConsole.log(JudgeTag, "router back4")
|
||||
router.back();
|
||||
})
|
||||
throw new Error('End Loop')
|
||||
@ -1545,7 +1552,7 @@ export default class Judge {
|
||||
} else {
|
||||
avPlayer?.playAudio([`voice/${kf.markcatalog}.mp3`, voiceURL], false, () => {
|
||||
this.isUdpEnd = true;
|
||||
closeAllFiles()
|
||||
dConsole.log(JudgeTag, "router back5")
|
||||
router.back();
|
||||
})
|
||||
throw new Error('End Loop')
|
||||
@ -1559,9 +1566,10 @@ export default class Judge {
|
||||
avPlayer?.playAudio([voiceURL], true, () => {
|
||||
setTimeout(() => {
|
||||
this.isUdpEnd = true
|
||||
closeAllFiles()
|
||||
dConsole.log(JudgeTag, ' 关闭车辆loading2')
|
||||
this.judgeUI.generateExamRecordsDialogController.close()
|
||||
dConsole.log(JudgeTag, "router back8")
|
||||
DifferentialAndSignal.clearMsg()
|
||||
router.back();
|
||||
}, param302 == '8' ? 3000 : 0)
|
||||
})
|
||||
@ -1841,11 +1849,6 @@ export default class Judge {
|
||||
break;
|
||||
}
|
||||
}
|
||||
closeAllFiles = () => {
|
||||
setTimeout(() => {
|
||||
this.fileLog?.closeAllFiles()
|
||||
}, 1000)
|
||||
}
|
||||
|
||||
//开始评判
|
||||
private async judging(callBack: Function) {
|
||||
@ -1857,15 +1860,8 @@ export default class Judge {
|
||||
const kssycs = judgeUI.kssycs
|
||||
const manualMarkRules = judgeUI.manualMarkRules
|
||||
|
||||
const fileLog = new FileLog(judgeUI.context);
|
||||
const filePath = await fileLog?.initFileLogo({
|
||||
name, lsh, idCard
|
||||
});
|
||||
this.fileLog = fileLog;
|
||||
this.filePath = filePath;
|
||||
|
||||
const getJudgeBeginData = this.getJudgeBeginData;
|
||||
const handleUdp = this.handleUdp;
|
||||
const handDistance = this.getJudgeBeginData;
|
||||
const handleTrajectoryUdp = this.handleTrajectoryUdp;
|
||||
const isTrajectoryOpen = this.isTrajectoryOpen;
|
||||
@ -1884,7 +1880,7 @@ export default class Judge {
|
||||
await examJudgeSetLogCallback(3, async (level: number, info: string, len: number) => {
|
||||
dConsole.log(JudgeTag, '评判日志:' + info)
|
||||
// await fileLog?.setExamJudgeLogData(info);
|
||||
dConsole.writeProcessData(ProcessDataEnumType.JudgeLogData,info)
|
||||
dConsole.writeProcessData(ProcessDataEnumType.JudgeLogData, info)
|
||||
})
|
||||
|
||||
dConsole.info(JudgeTag, '2.注册日志回调完成')
|
||||
@ -1903,7 +1899,7 @@ export default class Judge {
|
||||
await examJudgeSetRealExamCallback(async (strData: string, len: number) => {
|
||||
// 评判回调日志
|
||||
// await fileLog?.setExamJudgeCallbackData(strData)
|
||||
dConsole.writeProcessData(ProcessDataEnumType.JudgeProgressCallbackData,strData)
|
||||
dConsole.writeProcessData(ProcessDataEnumType.JudgeProgressCallbackData, strData)
|
||||
dConsole.info(JudgeTag, '评判回调数据', strData)
|
||||
await this.handleRealExam(strData, callBack)
|
||||
})
|
||||
@ -1919,6 +1915,8 @@ export default class Judge {
|
||||
this.judgeUI.jl = jl
|
||||
//TODO 待优化 跨组件传值不生效
|
||||
// globalThis.laneData = performInfo.lane;
|
||||
dConsole.log(JudgeTag, "车道信息", performInfo.lane)
|
||||
this.judgeUI.laneSignal = performInfo.lane
|
||||
})
|
||||
|
||||
let beginExamInfo: JudgeBeginObj | undefined = undefined
|
||||
@ -1929,7 +1927,6 @@ export default class Judge {
|
||||
} else {
|
||||
beginExamInfo = await getJudgeBeginData()
|
||||
}
|
||||
await fileLog?.setExamJudgeData(JSON.stringify(beginExamInfo))
|
||||
if (beginExamInfo) {
|
||||
await examJudgeBeginExam(beginExamInfo);
|
||||
}
|
||||
@ -1961,7 +1958,7 @@ export default class Judge {
|
||||
DifferentialAndSignal.onMsg((data: string) => {
|
||||
const result: WorkerBackMessage = JSON.parse(data)
|
||||
if (result.type === WorkerBackMessageType.ObtainUdpData) {
|
||||
handleUdp(result.data as string)
|
||||
this.handleUdp(result.data as string)
|
||||
dConsole.writeProcessData(ProcessDataEnumType.PlcData, result.data as string)
|
||||
}
|
||||
//TODO UDP修改
|
||||
|
||||
@ -29,8 +29,8 @@ export default class FileLog {
|
||||
}
|
||||
// 无锡所接口数据
|
||||
public setExamJudgeWuxiData = async (str: string) => {
|
||||
this.examJudgeWuxiDataFd =
|
||||
await this.fileUtil.editFile(`${this.folderPath}/wuxi_exam_data.txt`, str);
|
||||
// this.examJudgeWuxiDataFd =
|
||||
// await this.fileUtil.editFile(`${this.folderPath}/wuxi_exam_data.txt`, str);
|
||||
}
|
||||
// 无锡所过程数据
|
||||
public setExamJudgeWuxiProgressData = async (str: string) => {
|
||||
|
||||
@ -12,6 +12,8 @@ export default class TcpClient {
|
||||
private tcpSendNum: number = 0
|
||||
private tcp: socket.TCPSocket = socket.constructTCPSocketInstance()
|
||||
private events: Array<Function> = []
|
||||
// 连接状态是否成功
|
||||
private linkStatus: boolean = false
|
||||
|
||||
constructor() {
|
||||
if (!TcpClient.instance) {
|
||||
@ -58,6 +60,7 @@ export default class TcpClient {
|
||||
}, timeout: 1000 * 15
|
||||
})
|
||||
.then(() => {
|
||||
this.linkStatus = true
|
||||
this.getMessage()
|
||||
console.log(TCPTag, "tcp connect success")
|
||||
return this.tcp.setExtraOptions({
|
||||
@ -68,6 +71,7 @@ export default class TcpClient {
|
||||
resolve(true)
|
||||
})
|
||||
.catch((err: BusinessError) => {
|
||||
this.linkStatus = false
|
||||
console.log(TCPTag, "tcp connect or keepAlive error: ", JSON.stringify(err))
|
||||
console.log(TCPTag, "tcp 重启服务")
|
||||
reject(err)
|
||||
@ -76,6 +80,10 @@ export default class TcpClient {
|
||||
}
|
||||
|
||||
getMessage() {
|
||||
if (!this.linkStatus) {
|
||||
console.log(TCPTag, '不允许获取消息: TCP未连接');
|
||||
return;
|
||||
}
|
||||
this.tcp.on("message", value => {
|
||||
let data = new DataView(value.message)
|
||||
this.events.forEach(cb => {
|
||||
@ -88,6 +96,7 @@ export default class TcpClient {
|
||||
|
||||
// 重新绑定tcp
|
||||
async reBind() {
|
||||
console.log(TCPTag, 'tcp rebind')
|
||||
await this.close()
|
||||
this.tcp = socket.constructTCPSocketInstance();
|
||||
await this.bindTcp()
|
||||
@ -109,11 +118,19 @@ export default class TcpClient {
|
||||
|
||||
// 监听tcp消息
|
||||
onMsg(callback: Function) {
|
||||
this.events.push(callback)
|
||||
if (this.events.includes(callback)) {
|
||||
console.log(TCPTag, '已经存在这个获取消息方法了');
|
||||
return;
|
||||
}
|
||||
this.events.push(callback);
|
||||
}
|
||||
|
||||
// 接收tcp消息
|
||||
sendMsg(data: string): Promise<void> {
|
||||
if (!this.linkStatus) {
|
||||
console.log(TCPTag, '不允许发送: TCP未连接');
|
||||
return Promise.reject(new Error('TCP connection is not established'));
|
||||
}
|
||||
return this.tcp?.send({
|
||||
data
|
||||
}).catch(async (err: BusinessError) => {
|
||||
|
||||
@ -37,6 +37,8 @@ export default class UdpClient {
|
||||
private messageEvents: Array<Function> = []
|
||||
private errorEvents: Array<Function> = []
|
||||
private dealMethod?: DealMethod<object>
|
||||
// 连接状态
|
||||
private linkStatus: boolean = false
|
||||
|
||||
// 绑定udp连接
|
||||
bindUdp(): Promise<void> | undefined {
|
||||
|
||||
@ -50,6 +50,11 @@ class differentialAndSignal {
|
||||
this.events = this.events.filter((cb) => cb !== callback);
|
||||
}
|
||||
|
||||
// 清除监听
|
||||
clearMsg() {
|
||||
this.events = []
|
||||
}
|
||||
|
||||
// 关闭
|
||||
close() {
|
||||
this.events = [];
|
||||
@ -67,7 +72,8 @@ class differentialAndSignal {
|
||||
getMessage() {
|
||||
this.workerInstance.onmessage = (e: MessageEvents): void => {
|
||||
if (e.data) {
|
||||
// console.log(WorkerTag, "Worker 收到消息: " + e.data);
|
||||
console.log(WorkerTag, "Worker 收到消息: " + e.data);
|
||||
console.log(WorkerTag, "Worker 目前监听数量: " + this.events.length.toString());
|
||||
this.events.forEach((callback) => {
|
||||
callback(e.data);
|
||||
});
|
||||
|
||||
@ -98,7 +98,40 @@ async function InitExam(dirName: string) {
|
||||
|
||||
// 写过程数据
|
||||
async function WriteProcessData(type: ProcessDataEnumType, data: string) {
|
||||
if (type === ProcessDataEnumType.WuxiExam) {
|
||||
// 改变数据为无锡所需要的数据
|
||||
const plcData = data.split(',');
|
||||
const time = dayTs().format("YYYY-MM-DD HH:mm:ss")
|
||||
const lineData = [
|
||||
/*帧头*/time,
|
||||
/*卫星时间*/time,
|
||||
/*经度*/ plcData[95],
|
||||
/*纬度*/ plcData[95],
|
||||
/*高度*/ plcData[86],
|
||||
/*方位角*/ 0,
|
||||
/*俯仰角*/ plcData[91],
|
||||
/*速度角*/'',
|
||||
/*速度*/ plcData[97],
|
||||
/*横滚*/'',
|
||||
/*卫星定位状态*/'',
|
||||
/*卫星定向状态*/'',
|
||||
/*前天线可用星数*/'',
|
||||
/*后天线可用星数*/'',
|
||||
/*东向位置坐标*/'',
|
||||
/*北向位置坐标*/'',
|
||||
/*天向位置坐标*/'',
|
||||
/*东向速度*/'',
|
||||
/*北向速度*/'',
|
||||
/*评判信号1*/[plcData[14], plcData[19], plcData[5], '', plcData[2], plcData[3], plcData[7], plcData[8],
|
||||
plcData[13], plcData[12], plcData[17], '', plcData[4], plcData[11], plcData[20], plcData[9], 0].join(','),
|
||||
/*评判信号2*/['', plcData[28], '', '', plcData[10], '', '', '', '', '', '', '', '', '', '', '', '', ''].join(','),
|
||||
/*发动机转速*/ plcData[25],
|
||||
/*结束符*/ time,
|
||||
];
|
||||
writeQueue.push({ type, data: JSON.stringify(lineData) });
|
||||
} else {
|
||||
writeQueue.push({ type, data });
|
||||
}
|
||||
|
||||
if (!isProcessing) {
|
||||
processQueue();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user