Compare commits

...

3 Commits

Author SHA1 Message Date
wangzhongjie
f604c1c8f2 fix: 优化评判结构 2025-06-20 16:42:34 +08:00
wangzhongjie
0be3e1b970 fix: 优化考试过程信号查看的界面 2025-06-20 16:00:50 +08:00
wangzhongjie
ee0b96125c fix: 串口获取档位 2025-06-20 15:27:22 +08:00
14 changed files with 367 additions and 385 deletions

View File

@ -402,6 +402,7 @@ export interface SYSSET {
} }
export interface ProjectRoads { export interface ProjectRoads {
param_3?: string[] param_3?: string[]
param_4?: string[] param_4?: string[]
@ -411,7 +412,7 @@ export interface ProjectRoads {
param_12?: string[] param_12?: string[]
} }
interface MAPPOINT { export interface MAPPOINT {
point_no: number, point_no: number,
gps_e: number, gps_e: number,
gps_n: number, gps_n: number,
@ -425,7 +426,7 @@ interface MAPPOINT {
passed: number passed: number
} }
interface MAPITEMPOINTITEM { export interface MAPITEMPOINTITEM {
point_no: number, point_no: number,
itemno: number, itemno: number,
itemno1: number, itemno1: number,
@ -486,7 +487,7 @@ export interface JudgeUI {
defaultTabIndex: number defaultTabIndex: number
isDwztRight: boolean isDwztRight: boolean
draw: boolean draw: boolean
lane: JudgeLane lane: LANE
sd: string sd: string
dw: string dw: string
} }
@ -708,11 +709,6 @@ export interface JudgeSoundB {
type: 0 | 1 type: 0 | 1
} }
export interface JudgeLane {
road: string
num: number
count: number
}
export interface JudgeNonGPS { export interface JudgeNonGPS {
type: 0 | 1 | 2 | 3 | 4 type: 0 | 1 | 2 | 3 | 4
@ -780,7 +776,7 @@ export interface JudgeCallBackData {
xmqx: JudgeKSXM xmqx: JudgeKSXM
sound: JudgeSound sound: JudgeSound
mndg: string mndg: string
lane: JudgeLane lane: LANE
precast: JudgeKSXM precast: JudgeKSXM
nongps: JudgeNonGPS nongps: JudgeNonGPS
} }
@ -833,3 +829,181 @@ export interface ProjectItemType {
code: ProjectDataType code: ProjectDataType
status: string status: string
} }
export interface Project {
//项目名称
name: string
//项目代码
projectCode: string
//无锡所项目代码
projectCodeCenter: string
//项目简写
abbreviation?: string
//项目状态:未做 正在做 及格 不及格 有扣分
type?: '1' | '2' | '3' | '4' | '5'
//
isEnd: boolean,
isUpload: boolean
}
export interface KF {
//项目名称
xmmcStr: string,
xmdm: string | number,
//扣分描述
desc: string,
//扣分
score: string
//无锡所扣分代码
markcatalog: string
markserial: string
kfxh: string
type: 0 | 1 | 2
}
export interface SYSTEMPARMARROBJ {
'no1': number,
'no2': number,
'no3': number,
'txt1': string,
'txt2': string,
'txt3': string,
}
export interface EXAMDATA {
//1:项目开始 2:项目结束 3:扣分 4:考车状态 5:考试结束 6:项目取消 7:语音播放和提示 8:模拟灯光事件 9:车道信息事件 10:预进项目事件 11:差分事件
event: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11
//时间
sj: number
//考车状态 -1:后退 0:停车 1:前进
carzt: -1 | 0 | 1
//项目开始
xmks: xmksType
//项目结束
xmjs: xmjsType
//扣分
kf: kfType
//考试结束
ksjs: ksjxType
//项目取消
xmqx: xmqxType
sound: soundType
//模拟灯光
mndg: string
lane: LANE
type: number
//预进项目
precast: precastType
nongps: nongpsType
}
interface xmksType {
//项目代码 项目子序号
xmdm: number,
xmxh: string
}
interface xmjsType {
//项目代码 项目子序号 项目是否合格
xmdm: number,
xmxh: string,
xmhg: 1 | 0
}
interface kfType {
//项目代码
xmdm: number,
//扣分代码
kfdm: string,
//无锡所扣分代码
markcatalog: string
// 0评判自动扣分 1本地人工扣分 2远程人工扣分
type: 0 | 1 | 2
}
interface ksjxType {
//前进距离
qjjl: number,
//倒车距离
dcjl: number,
d1: number
d2: number
d3: number
d4: number
d5: number
d6: number
}
interface xmqxType {
//项目代码 项目子序号
xmdm: number,
xmxh: string
}
interface soundType {
xmdm: number,
//语音播放文件代码
code: string,
type: number
}
interface precastType {
xmdm: number,
xmxh: string
}
interface nongpsType {
type: 0 | 1 | 2 | 3 | 4
}
export interface KSJS {
//0自动结束1手动结束
type: 0 | 1
qjjl: number,
dcjl: number,
d1: number,
d2: number,
d3: number,
d4: number,
d5: number,
d6: number,
}
export interface MAPPOINTITEM {}
export interface SOUND {
//项目代码
xmdm: number
//语音播放提示代码
code: string,
//0:普通1:模拟灯光
type: number
}
export interface LANE {
//当前路段号 如果road为空字符串””说明当前在未测绘得道路上或者不在差分状态
road: string
/*当前基准天线所在车道号
num等于0或者count等于0说明当前未在测绘路段或者不在差分状态。
num等于1的时候表示在最右侧车道
num等于count的时候的表示在最左侧车道
*/
num: number
//当前基准天线共有几股车道
count: number
}

View File

@ -10,14 +10,13 @@ import { defaultJudgeConfigObj } from './judgeSDK/utils//judgeCommon';
import { uploadExamMileage } from '../api/judge'; import { uploadExamMileage } from '../api/judge';
import DwztErrorPopup from './compontents/judge/DwztErrorPopup'; import DwztErrorPopup from './compontents/judge/DwztErrorPopup';
import MsgPopup from './compontents/judge/MsgPopup'; import MsgPopup from './compontents/judge/MsgPopup';
import { CARINFO, CDSBInfo, LANE, MAPITEMPOINTITEM, MAPPOINT, Project, SYSTEMPARMARR } from './judgeSDK/api/judgeSDK.d';
import { JudgeConfig } from '../config'; import { JudgeConfig } from '../config';
import SignDisplayCom from './compontents/SignDisplayCom';
import { import {
AmplifyItem, AmplifyItem,
CARINFO,
CarInfoType, CarInfoType,
CDSBInfo,
CDSBInfos, CDSBInfos,
DefaultJudgeConfigObj, DefaultJudgeConfigObj,
ES_CARINFOType, ES_CARINFOType,
@ -25,20 +24,25 @@ import {
JudgeBeginObj, JudgeBeginObj,
JudgeCallBacData, JudgeCallBacData,
JudgeInitObj, JudgeInitObj,
LANE,
MA_CDSBINFOType, MA_CDSBINFOType,
MA_ITEMINFOType, MA_ITEMINFOType,
MA_MAP_POINT_ITEMType, MA_MAP_POINT_ITEMType,
MA_MAP_POINTType, MA_MAP_POINTType,
MA_SYSTEMPARMType, MA_SYSTEMPARMType,
MAPITEMPOINTITEM,
MAPPOINT,
MarkRule, MarkRule,
MarkRules, MarkRules,
MASYSSETTableType, MASYSSETTableType,
Project,
ProjectInfo, ProjectInfo,
ProjectInfos, ProjectInfos,
ProjectRoads, ProjectRoads,
RouteParamsType, RouteParamsType,
SYSSET, SYSSET,
SyssetConfig, SyssetConfig,
SYSTEMPARMARR,
User User
} from '../model'; } from '../model';
import { GetSyncData } from '../utils/table/Operation'; import { GetSyncData } from '../utils/table/Operation';
@ -60,8 +64,6 @@ struct Index {
@State endPopupVisible: boolean = false @State endPopupVisible: boolean = false
//等待弹窗(考试及格,考试不及格使用) //等待弹窗(考试及格,考试不及格使用)
@State loadingPopupVisible: boolean = false @State loadingPopupVisible: boolean = false
//实时轨迹弹窗
@State signDisplayComVisible: boolean = false
@State isDdxk: boolean = false; @State isDdxk: boolean = false;
@State time: string = '' @State time: string = ''
//考试用时 //考试用时
@ -449,12 +451,12 @@ struct Index {
} }
this.systemparmArr.push({ this.systemparmArr.push({
'NO1': Number(systemParm.no1), NO1: Number(systemParm.no1),
'NO2': Number(systemParm.no2), NO2: Number(systemParm.no2),
'NO3': Number(systemParm.no3), NO3: Number(systemParm.no3),
'TXT1': decodeURIComponent(systemParm.txt1 || ""), TXT1: decodeURIComponent(systemParm.txt1 || ""),
'TXT2': decodeURIComponent(systemParm.txt2 || ""), TXT2: decodeURIComponent(systemParm.txt2 || ""),
'TXT3': decodeURIComponent(systemParm.txt3 || ""), TXT3: decodeURIComponent(systemParm.txt3 || ""),
}) })
}) })
const projects = this.projects; const projects = this.projects;
@ -946,7 +948,6 @@ struct Index {
// type: 1, // type: 1,
// name: 'button_media.wav' // name: 'button_media.wav'
// }) // })
// this.signDisplayComVisible = true
this.signalTrajectoryDialog.open() this.signalTrajectoryDialog.open()
}) })
@ -1049,7 +1050,6 @@ struct Index {
//科目三人工扣分弹窗 //科目三人工扣分弹窗
if (this.isDeductedPopShow && this.examSubject == '3' && Reflect.get(this.judgeConfigObj, '342') == '0') { if (this.isDeductedPopShow && this.examSubject == '3' && Reflect.get(this.judgeConfigObj, '342') == '0') {
DeductedPopup({ DeductedPopup({
defaultTabIndex: this.defaultTabIndex, defaultTabIndex: this.defaultTabIndex,
// currentItems: Reflect.ownKeys(this.projectsObj).map(projectKey => { // currentItems: Reflect.ownKeys(this.projectsObj).map(projectKey => {
@ -1076,31 +1076,6 @@ struct Index {
}) })
} }
if (this.signDisplayComVisible) {
Column() {
SignDisplayCom({
showBack: false,
scaleNum: 1.8,
msgStr: this.judge.plcStr || '',
showTrajectory: this.singlePlay ? true : (this.syssetParam623),
}).margin({ top: 100 })
Row() {
}
.width(240)
.height(240)
.position({ x: '81%', y: 80 })
.backgroundImage($rawfile('judge/close.png'), ImageRepeat.NoRepeat)
.backgroundImageSize({ width: '33.33%', height: '33.33%' })
.onClick(() => {
// this.vocObj.playAudio({
// type: 1,
// name: 'button_media.wav'
// })
this.signDisplayComVisible = false
})
}.width('100%').height('100%').position({ y: 0 }).backgroundColor('rgba(0,0,0,0.6)')
}
//科目三人工项目确认框 //科目三人工项目确认框
if (this.isAmplifyPopShow && this.examSubject == '3') { if (this.isAmplifyPopShow && this.examSubject == '3') {
@ -1204,19 +1179,14 @@ struct Index {
switch (type) { switch (type) {
case '1': case '1':
return '#E6DECF'; return '#E6DECF';
break;
case '2': case '2':
return '#FFAD33'; return '#FFAD33';
break;
case '3': case '3':
return '#ff109d0a'; return '#ff109d0a';
break;
case '4': case '4':
return '#FF7566'; return '#FF7566';
break;
default: default:
return '#E6DECF'; return '#E6DECF';
break;
} }
} }

View File

@ -1,5 +1,5 @@
import libJudgeSdk from 'libjudgesdk.so'; import libJudgeSdk from 'libjudgesdk.so';
import { JudgeBeginObj, JudgeInitObj, Plc } from '../../../model'; import { JudgeBeginObj, JudgeInitObj, Plc } from '../../model';
/** /**
* 苏仁君 * 苏仁君

View File

@ -1,15 +1,44 @@
import SignalDisplayComponent from '../compontents/SignalDisplay' import SignalDisplayComponent from '../compontents/SignalDisplay'
import TabComponent from '../compontents/Tab'
@CustomDialog @CustomDialog
export default struct SignalTrajectoryDialog { export default struct SignalTrajectoryDialog {
@State active: number = 0
private controller?: CustomDialogController private controller?: CustomDialogController
build() { build() {
Row() { // Scroll() {
SignalDisplayComponent()
}.width(1200).height(1200).border({ Column() {
width: 1, Flex(
color: "red" {
}) justifyContent: FlexAlign.SpaceBetween,
alignItems: ItemAlign.Center
}
) {
TabComponent({
isShowTrajectory: true,
activeIndex: this.active,
onchange: (index: number) => {
this.active = index
}
})
// 关闭按钮
Image($rawfile('judge/close.png')).height(50).onClick(() => {
this.controller?.close()
})
}
Scroll() {
Column() {
SignalDisplayComponent({
active: this.active
})
}.height(890)
}.width("100%")
.height(700)
}.width(1500)
// }.width(1200).height(900)
} }
} }

View File

@ -25,7 +25,6 @@ struct SignDisplayPage {
right: 10 right: 10
}) })
TabComponent({ TabComponent({
isShowTrajectory: true,
activeIndex: this.active, activeIndex: this.active,
onchange: (index: number) => { onchange: (index: number) => {
this.active = index this.active = index
@ -42,8 +41,7 @@ struct SignDisplayPage {
}.width("100%").height(100) }.width("100%").height(100)
SignalDisplayComponent({ SignalDisplayComponent({
active: this.active, active: this.active
isShowTrajectory: true
}) })
} }
.width('100%') .width('100%')

View File

@ -1,8 +1,9 @@
import { GPSData, InitialPerLane, SignalData } from '../../mock' import { GPSData, InitialPerLane, SignalData } from '../../mock'
import { EnvironmentConfigurationType, PerLane, RoadDataType, SignalDataType, WorkerBackMessage } from '../../model' import { EnvironmentConfigurationType, PerLane, RoadDataType, SignalDataType, WorkerBackMessage } from '../../model'
import apiJudgeSdk from 'libJudgeSdk.so' import apiJudgeSdk from 'libJudgeSdk.so'
import { examJudgeMapSetScaling } from '../judgeSDK/api'
import { DifferentialAndSignal } from '../../utils/business/DifferentialAndSignalWorker' import { DifferentialAndSignal } from '../../utils/business/DifferentialAndSignalWorker'
import { examJudgeMapSetScaling } from '../Judge/JudgeUtils'
@Component @Component
@ -19,8 +20,6 @@ export default struct SignalDisplayComponent {
@State rawData: string = "$GPS,,,,,,,,,,,,,,,,,,,,,,,,,,,,," @State rawData: string = "$GPS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
// 车道信息 // 车道信息
@State laneSignal: PerLane = InitialPerLane @State laneSignal: PerLane = InitialPerLane
// 是否现实轨迹
@State isShowTrajectory: boolean = false
aboutToAppear(): void { aboutToAppear(): void {
DifferentialAndSignal.onMsg((data: string) => { DifferentialAndSignal.onMsg((data: string) => {
@ -111,29 +110,27 @@ export default struct SignalDisplayComponent {
Text(this.rawData).fontSize(20).fontColor("#fff") Text(this.rawData).fontSize(20).fontColor("#fff")
}.backgroundColor("#282828").width("100%").height("100%") }.backgroundColor("#282828").width("100%").height("100%")
} else { } else {
if (this.isShowTrajectory) { // 轨迹查看
// 轨迹查看 Flex() {
Flex() { Column() {
Column() { CoordinateComponent({
CoordinateComponent({ isItHorizontal: false,
isItHorizontal: false, heightNum: 40,
heightNum: 40, data: this.GPSColum
data: this.GPSColum })
}) }.width("20%")
}.width("20%")
Column() { Column() {
LaneComponent({ LaneComponent({
laneSignal: this.laneSignal laneSignal: this.laneSignal
}) })
}.width("20%") }.width("20%")
Column() { Column() {
trajectoryComponent() trajectoryComponent()
}.height("100%").width("60%") }.height("100%").width("60%")
}.backgroundColor("#282828").width("100%").height("100%") }.backgroundColor("#282828").width("100%").height("100%")
}
} }
} }
.width("100%") .width("100%")

View File

@ -50,6 +50,7 @@ struct TabItemComponent {
topLeft: 20, topLeft: 20,
topRight: 20, topRight: 20,
}) })
.backgroundColor("#262420")
.border({ .border({
width: { top: 1, left: 1, right: 1 }, width: { top: 1, left: 1, right: 1 },
color: this.active ? "#ECAD5C" : "#DDCBAC" color: this.active ? "#ECAD5C" : "#DDCBAC"

View File

@ -1,232 +0,0 @@
export interface Project {
//项目名称
name: string
//项目代码
projectCode: string
//无锡所项目代码
projectCodeCenter: string
//项目简写
abbreviation?: string
//项目状态:未做 正在做 及格 不及格 有扣分
type?: '1' | '2' | '3' | '4' | '5'
//
isEnd: boolean,
isUpload: boolean
}
export interface MarkRule {
itemno?: number
markcatalog?: string
markshow?: string
markserial?: string
markstandard?: number,
markreal?: number
kfxh?: string
onlyoneid?: number
OnlyOneKind?: number
nocancelid?: number
NoCancelId?: number
gps_sid?: number,
GPS_SID?: boolean
score?: number
xmmcStr?: string
desc?: string
xmdm?: number
type?: 0 | 1 | 2
}
export interface KF {
//项目名称
xmmcStr: string,
xmdm: string | number,
//扣分描述
desc: string,
//扣分
score: string
//无锡所扣分代码
markcatalog: string
markserial: string
kfxh: string
type: 0 | 1 | 2
}
export interface SYSTEMPARMARR {
'NO1': number,
'NO2': number,
'NO3': number,
'TXT1': string,
'TXT2': string,
'TXT3': string,
}
export interface SYSTEMPARMARROBJ {
'no1': number,
'no2': number,
'no3': number,
'txt1': string,
'txt2': string,
'txt3': string,
[k: string]: string | number
}
export interface CARINFO {
CARID: string,
IPADDR: string,
CARCLASS: string,
KSCX: string,
CARNAME: string,
FLAG: string,
BK1: string,
BK2: string
}
export interface MAPPOINT {
point_no: number,
gps_e: number,
gps_n: number,
point_no_f: number,
point_type: number,
road_code: string,
gps_e_Location: number
gps_n_Location: number
f_gps_e: number,
f_gps_n: number,
passed: number
}
export interface MAPITEMPOINTITEM {
point_no: number,
itemno: number,
itemno1: number,
subname: string
}
export interface EXAMDATA {
//1:项目开始 2:项目结束 3:扣分 4:考车状态 5:考试结束 6:项目取消 7:语音播放和提示 8:模拟灯光事件 9:车道信息事件 10:预进项目事件 11:差分事件
event: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11
//时间
sj: number
//考车状态 -1:后退 0:停车 1:前进
carzt: -1 | 0 | 1
//项目开始
xmks: {
//项目代码 项目子序号
xmdm: number,
xmxh: string
}
//项目结束
xmjs: {
//项目代码 项目子序号 项目是否合格
xmdm: number,
xmxh: string,
xmhg: 1 | 0
},
//扣分
kf: {
//项目代码
xmdm: number,
//扣分代码
kfdm: string,
//无锡所扣分代码
markcatalog: string
// 0评判自动扣分 1本地人工扣分 2远程人工扣分
type: 0 | 1 | 2
},
//考试结束
ksjs: {
//前进距离
qjjl: number,
//倒车距离
dcjl: number,
d1: number
d2: number
d3: number
d4: number
d5: number
d6: number
},
//项目取消
xmqx: {
//项目代码 项目子序号
xmdm: number,
xmxh: string
},
sound: {
xmdm: number,
//语音播放文件代码
code: string,
type: number
},
//模拟灯光
mndg: string,
lane: LANE,
type: number
//预进项目
precast: {
xmdm: number,
xmxh: string
}
nongps: {
type: 0 | 1 | 2 | 3 | 4
}
}
export interface KSJS {
//0自动结束1手动结束
type: 0 | 1
qjjl: number,
dcjl: number,
d1: number,
d2: number,
d3: number,
d4: number,
d5: number,
d6: number,
}
export interface MAPPOINTITEM {}
export interface CDSBInfo {}
export interface SOUND {
//项目代码
xmdm: number
//语音播放提示代码
code: string,
//0:普通1:模拟灯光
type: number
}
export interface SYSSET {
v_no: string,
v_name: string,
v_value: string
}
export interface LANE {
//当前路段号 如果road为空字符串””说明当前在未测绘得道路上或者不在差分状态
road: string
/*线
num等于0或者count等于0说明当前未在测绘路段
num等于1的时候表示在最右侧车道
num等于count的时候的表示在最左侧车道
*/
num: number
//当前基准天线共有几股车道
count: number
}
export interface ProjectObj {
[k: string]: Project
}

View File

@ -3,33 +3,17 @@ import router from '@ohos.router';
import util from '@ohos.util'; import util from '@ohos.util';
import buffer from '@ohos.buffer'; import buffer from '@ohos.buffer';
import { testKm2Items, testKm3Items } from './dataTest/index'; import { testKm2Items, testKm3Items } from './dataTest/index';
import { KSJS } from './api/judgeSDK';
import VoiceAnnounce from './utils/voiceAnnouncements'; import VoiceAnnounce from './utils/voiceAnnouncements';
import FileModel from './utils/fileModel'; import FileModel from './utils/fileModel';
import FilePhoto from './utils/filePhoto'; import FilePhoto from './utils/filePhoto';
import FileLog from './utils/fileLog'; import FileLog from './utils/fileLog';
import JudgeTask from './utils/judgeTask'; import JudgeTask from './utils/judgeTask';
import { JudgeConfig } from '../../config'; import { JudgeConfig } from '../../config';
import { LANE } from '../judgeSDK/api/judgeSDK.d';
import { GetSyncData, SqlInsertTable } from '../../utils/table/Operation'; import { GetSyncData, SqlInsertTable } from '../../utils/table/Operation';
import { getCarStatus, getCenterProjectStatus, plcStrToJson, plcStrToWXJson, promptWxCode } from './utils/judgeCommon'; import { getCarStatus, getCenterProjectStatus, plcStrToJson, plcStrToWXJson, promptWxCode } from './utils/judgeCommon';
import {
examCalcGpsDistance,
examJudgeArtificialItem,
examJudgeArtificialMark,
examJudgeBeginExam,
examJudgeEndExam,
examJudgeInit,
examJudgeRealExam,
examJudgeSetLogCallback,
examJudgeSetPerformCallback,
examJudgeSetRealExamCallback,
examJudgeSoundEnd,
examJudgeVersion
} from './api/index';
import { uploadExamProgressData, writeObjectOut } from '../../api/judge'; import { uploadExamProgressData, writeObjectOut } from '../../api/judge';
import { endRecordVideo, saveStartRecordVideo } from '../../utils/Video'; import { endRecordVideo, saveStartRecordVideo } from '../../utils/Video';
import common from '@ohos.app.ability.common'; import common from '@ohos.app.ability.common';
@ -59,6 +43,7 @@ import {
JudgeXMJS, JudgeXMJS,
Km3JudgeInitConfig, Km3JudgeInitConfig,
KmItem, KmItem,
LANE,
MarkRule, MarkRule,
Plc, Plc,
ProjectInfo, ProjectInfo,
@ -70,6 +55,20 @@ import {
WR WR
} from '../../model'; } from '../../model';
import { DrivingDataStorage } from '../../utils/business/DrivingDataStorage'; import { DrivingDataStorage } from '../../utils/business/DrivingDataStorage';
import {
examCalcGpsDistance,
examJudgeArtificialItem,
examJudgeArtificialMark,
examJudgeBeginExam,
examJudgeEndExam,
examJudgeInit,
examJudgeRealExam,
examJudgeSetLogCallback,
examJudgeSetPerformCallback,
examJudgeSetRealExamCallback,
examJudgeSoundEnd,
examJudgeVersion
} from '../Judge/JudgeUtils';
const judgeTag = 'SURENJUN_JUDGE' const judgeTag = 'SURENJUN_JUDGE'
@ -1192,7 +1191,7 @@ export default class Judge {
judgeTask.addTask(async () => { judgeTask.addTask(async () => {
console.info(judgeTag, '考试结束 start') console.info(judgeTag, '考试结束 start')
AppStorage.setOrCreate('isJudge', false) AppStorage.setOrCreate('isJudge', false)
await handEndExam(ksjs) await handEndExam()
}) })
// TODO待修改 // TODO待修改
// clearInterval(globalThis.judgeTimer) // clearInterval(globalThis.judgeTimer)
@ -1318,7 +1317,7 @@ export default class Judge {
} }
} }
// 处理考试结束 // 处理考试结束
public handEndExam = async (ksjs: KSJS) => { public handEndExam = async () => {
this.judgeUI.loadingPopupVisible = true; this.judgeUI.loadingPopupVisible = true;
this.judgeUI.endPopupVisible = false; this.judgeUI.endPopupVisible = false;
this.judgeUI.isDeductedPopShow = false; this.judgeUI.isDeductedPopShow = false;

View File

@ -4,7 +4,7 @@ import { ArrayToByteArray, NumberToByteArray } from '../../../utils/Common';
import systemTime from '@ohos.systemDateTime'; import systemTime from '@ohos.systemDateTime';
import { CarInfoType } from '../../../model'; import { CarInfoType } from '../../../model';
import { DefaultJudgeConfigObj, Gps, JudgeLane, Plc, Radar, Vision } from '../../../model/Judge'; import { DefaultJudgeConfigObj, Gps, LANE, Plc, Radar, Vision } from '../../../model/Judge';
interface Extend {} interface Extend {}
@ -98,7 +98,7 @@ export function getKmProjectVoice(
// 1:项目开始 2:项目结束 // 1:项目开始 2:项目结束
type: 1 | 2, type: 1 | 2,
judgeConfig: object, judgeConfig: object,
lane: JudgeLane, lane: LANE,
xmxh: string xmxh: string
) { ) {
const carInfo = AppStorage.get<CarInfoType>('carInfo')!; const carInfo = AppStorage.get<CarInfoType>('carInfo')!;
@ -110,9 +110,8 @@ export function getKmProjectVoice(
console.info('surenjun => param544Str.length', param544Str.length) console.info('surenjun => param544Str.length', param544Str.length)
const num = lane.num const num: number = lane?.num
const count = lane.count const count: number = lane?.count
const road = lane.road
if (examSubject == '2') { if (examSubject == '2') {
return projectCode return projectCode
} }

View File

@ -1,43 +0,0 @@
import FileUtils from '../../../utils/FileUtils';
import { examJudgeMapSetParam, examJudgeMapSetScaling } from '../api/index';
import FileModel from './fileModel';
const judgeTag = 'SURENJUN_JUDGE'
export default class JudgeImg {
private judgeUI
private modelPath: string
private fileModel: FileModel
private fileUtil: FileUtils
// private plcData: any
constructor(judgeUI) {
this.modelPath = 'models/model_enc'
this.judgeUI = judgeUI
this.fileUtil = new FileUtils(judgeUI.context)
this.fileModel = new FileModel(judgeUI.context)
this.init()
}
async init() {
const isJudgeInitBool = AppStorage.get<boolean>('isJudgeInitBool');
const { judgeUI } = this;
//TODO 临时处理
setTimeout(async () => {
console.info(judgeTag, '1.进入评判入口')
await examJudgeMapSetParam(640, 480); //设置参数宽、高
await examJudgeMapSetScaling(100); //设置缩放比例一般默认填100就是100%的意思) 数字越大视野越大数字越小视野越小不能为0
})
judgeUI.draw = true
}
//获取评判初始化数据
getInitInfo = () => {
}
}

View File

@ -3,6 +3,9 @@ import HiSerialSDK from '@ohos.hiserialsdk';
import { SerialPortTag } from '../config'; import { SerialPortTag } from '../config';
// 打开串口工具 // 打开串口工具
/*
* @param serialPort 串口名称
*/
export const OpenSerialPort = (serialPort: string) => { export const OpenSerialPort = (serialPort: string) => {
return new Promise<number>((resolve, reject) => { return new Promise<number>((resolve, reject) => {
testNapi.SerialOpenAsync(serialPort, (value: number) => { testNapi.SerialOpenAsync(serialPort, (value: number) => {
@ -17,6 +20,11 @@ export const OpenSerialPort = (serialPort: string) => {
} }
//初始化串口数据 //初始化串口数据
/*
* @param fd 串口文件描述符
* @param speed 波特率
* @returns Promise<boolean> 成功返回true失败返回false
*/
export const InitSerialPortData = export const InitSerialPortData =
async (fd: number, speed: number) => { async (fd: number, speed: number) => {
return new Promise<boolean>((resolve, reject) => { return new Promise<boolean>((resolve, reject) => {
@ -35,6 +43,11 @@ export const InitSerialPortData =
} }
//发送数据 //发送数据
/*
* @param fd 串口文件描述符
* @param data 要发送的数据数组
* @returns Promise<number> 成功返回发送的字节数,失败返回-1
*/
export const SendSerialPortData = (fd: number, data: number[]) => { export const SendSerialPortData = (fd: number, data: number[]) => {
console.log(SerialPortTag, "wzj-----发送数据") console.log(SerialPortTag, "wzj-----发送数据")
return new Promise<number>((resolve, reject) => { return new Promise<number>((resolve, reject) => {
@ -49,6 +62,11 @@ export const SendSerialPortData = (fd: number, data: number[]) => {
} }
// 接受数据 // 接受数据
/*
* @param fd 串口文件描述符
* @param timeout 超时时间,单位毫秒
* @returns Promise<HiSerialSDK.receiveInfo> 成功返回接收到的数据,失败返回-1
*/
export const ReceiveSerialPortData = (fd: number, timeout: number,) => { export const ReceiveSerialPortData = (fd: number, timeout: number,) => {
console.log(SerialPortTag, "wzj-----接受数据") console.log(SerialPortTag, "wzj-----接受数据")
return new Promise<HiSerialSDK.receiveInfo>((resolve) => { return new Promise<HiSerialSDK.receiveInfo>((resolve) => {

View File

@ -16,8 +16,8 @@ import UdpClient from '../UdpUtils';
import { CenterUDPBusinessInstance } from './CenterUdpBusiness'; import { CenterUDPBusinessInstance } from './CenterUdpBusiness';
import { ObtainUdpBusinessInstance } from './ObtainUdpBusiness'; import { ObtainUdpBusinessInstance } from './ObtainUdpBusiness';
import systemTime from '@ohos.systemDateTime'; import systemTime from '@ohos.systemDateTime';
import { examCalcGpsDistance } from '../../pages/judgeSDK/api';
import { SerialNumberInstance } from '../SerialNumber'; import { SerialNumberInstance } from '../SerialNumber';
import { examCalcGpsDistance } from '../../pages/Judge/JudgeUtils';
class JudgeUdpBusiness { class JudgeUdpBusiness {

View File

@ -0,0 +1,72 @@
// 串口业务逻辑
import {
CancelReceiveSerialPortData,
InitSerialPortData,
OpenSerialPort,
ReceiveSerialPortDataBySelf
} from '../SerialPort';
import Prompt from '@system.prompt';
import { SerialPortTag } from '../../config';
class serialPortService {
private fd: number = -1
private serialPort: string = "/dev/ttyS3"
// 波特率
private baudRate: string = "115200"
private events: Array<Function> = []
// 尝试次数
private tryCount: number = 0
async init() {
const res = await OpenSerialPort(this.serialPort)
if (res === -1) {
Prompt.showToast({
message: "串口打开失败"
})
// 失败了重试,最大次数为5次
this.tryCount++;
if (this.tryCount < 5) {
console.log(SerialPortTag, "串口打开失败,尝试第", this.tryCount, "次重试")
setTimeout(() => {
this.init();
}, 1000);
return;
} else {
console.error(SerialPortTag, "串口打开失败,重试次数已达上限")
return;
}
} else {
this.fd = res;
}
}
async canInit() {
if (this.fd !== -1) {
await InitSerialPortData(this.fd, Number(this.baudRate))
ReceiveSerialPortDataBySelf(this.fd, (res1: number, res2: number, res3: number[]) => {
this.events.forEach((callback) => {
callback(res3);
});
})
}
}
onMsg(callback: Function) {
if (this.events.indexOf(callback) === -1) {
this.events.push(callback);
}
}
async closed() {
const res = await CancelReceiveSerialPortData(this.fd);
this.events = [];
if (res) {
console.log(SerialPortTag, "串口关闭成功")
} else {
console.error(SerialPortTag, "串口关闭失败")
}
}
}
export const SerialPortService = new serialPortService();