Compare commits

...

34 Commits

Author SHA1 Message Date
wangzhongjie
46c3825c59 fix: 提交重启应用代码 2025-10-28 17:22:38 +08:00
wangzhongjie
198fa634fe fix: 重启 2025-10-28 16:55:22 +08:00
wangzhongjie
8d6e6e3b6b fix: 重启 2025-10-28 16:27:30 +08:00
4578177d37 feat:串口读取时机优化 2025-10-28 15:27:11 +08:00
d1a1fc8b44 fix:串口引入修改 2025-10-28 15:26:01 +08:00
08e430f02f feat:引入报错修改 2025-10-28 14:51:39 +08:00
379f4c8778 Merge remote-tracking branch 'origin/dev' into dev 2025-10-27 14:58:15 +08:00
273340189d feat:串口读取时机优化 2025-10-27 14:57:59 +08:00
lv
c796add419 闪退提交 2025-10-17 16:09:51 +08:00
lv
670d6d20af 1 2025-10-17 16:05:41 +08:00
lv
a602655278 去垃圾日志 2025-10-17 15:36:17 +08:00
wangzhongjie
d93f0adcaf fix:提交视频参数 2025-10-17 09:10:19 +08:00
wangzhongjie
098644f64b Merge branch 'dev' of http://47.122.70.237:3000/harmony_car/subject-two into dev 2025-10-16 17:52:11 +08:00
lv
264e76d05d 人脸拍照:secondImg为拍照照片 2025-10-16 17:27:56 +08:00
c359ef0568 feat:module.json还原 2025-10-14 13:19:08 +08:00
Surenjun
edb2ed2b45 feat:日志&轨迹导出U盘功能 2025-10-10 14:27:56 +08:00
Surenjun
b765676068 fix:去除无用日志 2025-09-26 10:06:30 +08:00
Surenjun
5732b62000 feat:40502语音文件替换 2025-08-27 13:55:47 +08:00
Surenjun
4c6f25ee3a feat: 模拟灯光相关特性优化 2025-08-18 08:47:42 +08:00
Surenjun
2ff07dd2fb feat: 外壳参数优化 2025-08-08 13:51:22 +08:00
Surenjun
d2e795c82f feat:1. 靠边停车项目进行中不能退出 2.344参数修改 2025-07-29 15:07:29 +08:00
wangzhongjie
8d7173c545 Merge branch 'dev' of http://88.22.24.105:3000/harmony_car/subject-two into dev 2025-07-29 14:57:47 +08:00
Surenjun
94b3b2e96a feat:安全员代码 2025-07-24 08:21:02 +08:00
wangzhongjie
0c2715821d Merge branch 'dev' of http://88.22.24.105:3000/harmony_car/subject-two into dev 2025-07-01 10:42:14 +08:00
wangzhongjie
2d085b42bf Merge branch 'dev' of http://88.22.24.105:3000/harmony_car/subject-two into dev 2025-06-23 14:19:26 +08:00
wangzhongjie
2f524da992 Merge branch 'dev' of http://88.22.24.105:3000/harmony_car/subject-two into dev 2025-06-05 16:12:27 +08:00
wangzhongjie
7447ae3f4d Merge branch 'dev' of http://88.22.24.105:3000/harmony_car/subject-two into dev 2025-05-27 11:01:31 +08:00
wangzhongjie
5c9af2b914 Merge branch 'dev' of http://88.22.24.105:3000/harmony_car/subject-two into dev 2025-05-27 10:16:01 +08:00
wangzhongjie
818d2a775d merge 2025-05-20 13:46:10 +08:00
wangzhongjie
5119c46963 Merge branch 'dev' of http://88.22.24.105:3000/harmony_car/subject-two into dev 2025-05-15 17:03:17 +08:00
wangzhongjie
bc8017ff71 Merge branch 'dev' of http://88.22.24.105:3000/harmony_car/subject-two into dev 2025-05-15 09:27:24 +08:00
wangzhongjie
45772f0b49 fix: 合并 2025-05-09 09:01:48 +08:00
wangzhongjie
fc6f784db1 Merge branch 'dev' of http://47.122.70.237:3000/harmony_car/subject-two into dev 2025-04-22 16:28:54 +08:00
wangzhongjie
afa4983725 关闭本地回放 2025-04-11 13:04:37 +08:00
18 changed files with 335 additions and 78 deletions

View File

@ -5,9 +5,9 @@
"name": "default", "name": "default",
"material": { "material": {
"certpath": "/Users/wangzhongjie/.ohos/config/openharmony/default_subject-two_Kl4t-ZSvZeuUm9s8O-e6FIH2VFR_OaNyhDP8kPjIWgU=.cer", "certpath": "/Users/wangzhongjie/.ohos/config/openharmony/default_subject-two_Kl4t-ZSvZeuUm9s8O-e6FIH2VFR_OaNyhDP8kPjIWgU=.cer",
"storePassword": "0000001B0A8E97F78561FFE1B2E5B57C296BFC3D297047253237158BC25CD7077892C41C1C83FAFFDE4A0A", "storePassword": "0000001BAC2A2242CBD30042192466419A8087398301FC1759A9BBCFD659DD68D4D6AC1F21A3C57322816D",
"keyAlias": "debugKey", "keyAlias": "debugKey",
"keyPassword": "0000001B654E765B79C902CB9E3A6D97A40F5852412CEE5AC37E949F430C754DB02327838E925EDF861314", "keyPassword": "0000001B6BC513F0EF12E88D402A699731288AA9D23B4A26CCDD08F4A6CBC6FDDBBCCEFBB2C5AFE4D3E3E8",
"profile": "/Users/wangzhongjie/.ohos/config/openharmony/default_subject-two_Kl4t-ZSvZeuUm9s8O-e6FIH2VFR_OaNyhDP8kPjIWgU=.p7b", "profile": "/Users/wangzhongjie/.ohos/config/openharmony/default_subject-two_Kl4t-ZSvZeuUm9s8O-e6FIH2VFR_OaNyhDP8kPjIWgU=.p7b",
"signAlg": "SHA256withECDSA", "signAlg": "SHA256withECDSA",
"storeFile": "/Users/wangzhongjie/.ohos/config/openharmony/default_subject-two_Kl4t-ZSvZeuUm9s8O-e6FIH2VFR_OaNyhDP8kPjIWgU=.p12" "storeFile": "/Users/wangzhongjie/.ohos/config/openharmony/default_subject-two_Kl4t-ZSvZeuUm9s8O-e6FIH2VFR_OaNyhDP8kPjIWgU=.p12"

View File

@ -1,13 +1,15 @@
{ {
"lockfileVersion": 1, "lockfileVersion": 2,
"ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
"specifiers": { "specifiers": {
"@ohos/hypium@1.0.6": "@ohos/hypium@1.0.6" "@ohos/hypium@1.0.6": "@ohos/hypium@1.0.6"
}, },
"packages": { "packages": {
"@ohos/hypium@1.0.6": { "@ohos/hypium@1.0.6": {
"resolved": "https://repo.harmonyos.com/ohpm/@ohos/hypium/-/hypium-1.0.6.tgz", "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.6.tgz",
"integrity": "sha512-bb3DWeWhYrFqj9mPFV3yZQpkm36kbcK+YYaeY9g292QKSjOdmhEIQR2ULPvyMsgSR4usOBf5nnYrDmaCCXirgQ==" "integrity": "sha512-bb3DWeWhYrFqj9mPFV3yZQpkm36kbcK+YYaeY9g292QKSjOdmhEIQR2ULPvyMsgSR4usOBf5nnYrDmaCCXirgQ==",
"registryType": "ohpm",
"shasum": "3f5fed65372633233264b3447705b0831dfe7ea1"
} }
} }
} }

View File

@ -105,7 +105,7 @@ export async function uploadLogFile() {
// 将要上传的文件拷贝到缓存目录并压缩 // 将要上传的文件拷贝到缓存目录并压缩
async function getCopyFiles() { export async function getCopyFiles() {
const absolutePath = '/mnt/hmdfs/100/account/device_view/local/files/duolun/logs' const absolutePath = '/mnt/hmdfs/100/account/device_view/local/files/duolun/logs'
const tempPath = globalThis.context.cacheDir + '/temp'; const tempPath = globalThis.context.cacheDir + '/temp';
@ -140,10 +140,12 @@ async function getCopyFiles() {
const filenames = await fs.listFile('/data/log/hilog'); const filenames = await fs.listFile('/data/log/hilog');
for (let i = 0; i < filenames.length; i++) { for (let i = 0; i < filenames.length; i++) {
if (filenames[i].split('.')[0] == 'hilog') { if (filenames[i].split('.')[0] == 'hilog') {
const date = filenames[i].split('.')[2].split('-')[0] try {
if (date == nowDate) {
fs.copyFileSync('/data/log/hilog/' + filenames[i], globalThis.context.cacheDir + '/temp/' + filenames[i]) fs.copyFileSync('/data/log/hilog/' + filenames[i], globalThis.context.cacheDir + '/temp/' + filenames[i])
} catch (e) {
console.error(TAG, e);
} }
} }
} }
@ -307,6 +309,7 @@ export async function getDoubleCeneterTable(param) {
return return
} }
} }
getChuankouFn()
reslove(true) reslove(true)
router.pushUrl({ router.pushUrl({
url: 'pages/ExaminerLogin', url: 'pages/ExaminerLogin',
@ -321,6 +324,7 @@ export async function getSingleCenterTable(param) {
console.log('teststet0') console.log('teststet0')
upDataZhongxinginitialization(param).then((result) => { upDataZhongxinginitialization(param).then((result) => {
if (result === true) { if (result === true) {
getChuankouFn()
resolve(true) resolve(true)
} else { } else {
console.log('联网更新失败,请检查网络后重新更新') console.log('联网更新失败,请检查网络后重新更新')
@ -442,6 +446,7 @@ function openChuankouFn(callback) {
if(carInfo.kscx == 'C1'){ if(carInfo.kscx == 'C1'){
testNapi.SerialOpenAsync(devPath, (fd) => { testNapi.SerialOpenAsync(devPath, (fd) => {
globalThis.fd = fd; globalThis.fd = fd;
globalThis.ChounkouInit = true;
globalThis.num = 0 globalThis.num = 0
let parity = 0x4e; // 'N' let parity = 0x4e; // 'N'
let ret = testNapi.SerialSetAsync(globalThis.fd, 115200, 0, 8, 1, parity, (ret) => { let ret = testNapi.SerialSetAsync(globalThis.fd, 115200, 0, 8, 1, parity, (ret) => {

View File

@ -218,7 +218,8 @@ export async function takePhoto(param, context, dir, flag = 1, callback?) {
// @ts-ignore // @ts-ignore
// var snapResult = rtsp_server.getVideoSnapshot(context, video_uri, '', dir); // var snapResult = rtsp_server.getVideoSnapshot(context, video_uri, '', dir);
if (flag == 0) { if (flag == 0) {
rtsp_server.detectVideoSnapshotSize(video_uri, fileName, (err, snapResult) => { // @ts-ignore
rtsp_server.detectVideoSnapshotSize(video_uri, fileName, false,(err, snapResult) => {
console.log("baohaowen_detectLoop round end size1:" + snapResult.fileSize); console.log("baohaowen_detectLoop round end size1:" + snapResult.fileSize);
callback({ fileSize: snapResult.fileSize, errorCode: snapResult.errorCode }) callback({ fileSize: snapResult.fileSize, errorCode: snapResult.errorCode })
}); });

View File

@ -0,0 +1,63 @@
import dataPreferences from '@ohos.data.preferences';
let context = getContext(this);
let preference: dataPreferences.Preferences;
const SYSTEM_DB: string = 'system.db' //其他信息
const USER_DB: string = 'user.db' //用户信息
class PreferenceUtils {
// 写入其他缓存数据
async writeOtherData(value: dataPreferences.ValueType, key: string) {
// if (value === null) {
// return;
// }
if (!preference) {
await this.getPreferencesFromStorage(SYSTEM_DB);
}
try {
await preference.put(key, value);
} catch (err) {
console.info(`Failed to put value, Cause: ${err}`);
}
await preference.flush();
}
// 获取其他缓存数据
async getOtherModel<T extends dataPreferences.ValueType>(key: string) {
let value: dataPreferences.ValueType = 1;
if (!preference) {
await this.getPreferencesFromStorage(SYSTEM_DB);
}
try {
value = (await preference.get(key, ''));
} catch (err) {
console.info(`Failed to get value, Cause: ${err}`);
}
if (value === '') {
return;
}
return value as T;
}
// 删除登录数据
async deletePreferences() {
try {
await dataPreferences.deletePreferences(context, USER_DB);
} catch (err) {
console.info(`Failed to delete preferences, Cause: ${err}`);
}
;
}
// 创建登录数据preference
async getPreferencesFromStorage(name: string) {
try {
preference = await dataPreferences.getPreferences(context, name);
} catch (err) {
console.info(`Failed to get preferences, Cause: ${err}`);
}
}
}
export default new PreferenceUtils();

View File

@ -380,7 +380,7 @@ export default class UdpClientByCenter {
} }
// console.info('surenjun2','set message_1Fn=>' + newArr.toString()) // console.info('surenjun2','set message_1Fn=>' + newArr.toString())
callback && callback(newArr.toString()) callback && callback(newArr.toString())
console.info('surenjun 左方向灯=>', newArr.toString()) // console.info('surenjun 左方向灯=>', newArr.toString())
this.currentValue = newArr.toString(); this.currentValue = newArr.toString();
} else { } else {
callback && callback('') callback && callback('')

View File

@ -0,0 +1,41 @@
import common from '@ohos.app.ability.common'
import fs from '@ohos.file.fs';
import zlib from '@ohos.zlib';
import { getCurrentTime } from './tools'
import {getCopyFiles} from '../service/indexService'
const TAG = '[usbUtils]'
export class UsbUtils {
private context: common.UIAbilityContext
constructor(context: common.UIAbilityContext) {
this.context = context
}
getUsbDiskPath(): Promise<string> {
return new Promise((resolve, reject) => {
let path = ""
try {
path = fs.listFileSync("/mnt/data/external")[0]
} catch (error) {
console.log("err", JSON.stringify(error))
reject(error)
return
}
resolve('/mnt/data/external' + '/' + path)
})
}
async copyFilesToUsb() {
const time = await getCurrentTime(0)
const date = time.split(' ')[0]
const output = await this.getUsbDiskPath();
const filename = await getCopyFiles();
const filePath = globalThis.context.cacheDir + '/' + filename
let stat = fs.statSync(filePath)
console.log(TAG,`压缩包文件${globalThis.carInfo?.carNo}-${date}大小:` + (Math.ceil(stat.size / 1024 / 1024)) + 'M')
fs.copyFileSync(filePath, `${output}/${globalThis.carInfo?.carNo}-${date}.zip`)
console.log(TAG,'转移压缩包完成:' ,output)
fs.rmdirSync(filePath);
}
}

View File

@ -10,9 +10,15 @@ import { GlobalConfig } from '../config/global'
import { tcpUtil } from '../common/utils/TcpRequest'; import { tcpUtil } from '../common/utils/TcpRequest';
import DB from '../common/database/DbSql'; import DB from '../common/database/DbSql';
import { initTable } from '../common/service/initable'; import { initTable } from '../common/service/initable';
import appRecovery from '@ohos.app.ability.appRecovery';
export default class EntryAbility extends UIAbility { export default class EntryAbility extends UIAbility {
async onCreate(want, launchParam) { async onCreate(want, launchParam) {
appRecovery.enableAppRecovery(
appRecovery.RestartFlag.ALWAYS_RESTART,
appRecovery.SaveOccasionFlag.SAVE_WHEN_ERROR,
appRecovery.SaveModeFlag.SAVE_WITH_FILE
);
try { try {
console.log("sql first") console.log("sql first")
await DB.init(this.context) await DB.init(this.context)
@ -23,6 +29,7 @@ export default class EntryAbility extends UIAbility {
console.error('sql first error', e) console.error('sql first error', e)
} }
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
} }

View File

@ -20,10 +20,10 @@ import { delPic } from '../common/service/videoService';
import imageBtn from './compontents/imageBtn'; import imageBtn from './compontents/imageBtn';
import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements'; import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements';
import { updateModelAndCar } from '../common/autoUpdate/index' import { updateModelAndCar } from '../common/autoUpdate/index'
// import {uploadLogFile} from '../common/service/indexService' import { UsbUtils } from '../common/utils/UsbUtils'
import { getModalValueCdAndCar } from '../api'; import appRecovery from '@ohos.app.ability.appRecovery';
import PreferenceUtils from '../common/utils/PreferenceUtils';
// import VoiceAnnounce from './judgeSDK/utils/voiceAnnouncements'; import CozyMsgDialog from './compontents/CozyDialog';
@Entry @Entry
@Component @Component
@ -80,7 +80,23 @@ struct Index {
Column() { Column() {
Column() { Column() {
Row() { Row() {
Image($r('app.media.logo')).width('30%').height('5.5%').margin({ left: 24 }) Image($r('app.media.logo')).width('30%').height('5.5%').margin({ left: 24 }).gesture(
GestureGroup(GestureMode.Exclusive,
TapGesture({ count: 2 })
.onAction(async () => {
const usbUtils = new UsbUtils(this.context)
this.loading = true
this.loadingText = '正在导出日志和轨迹,请稍候……'
try {
await usbUtils.copyFilesToUsb()
} catch (e) {
}
this.loading = false
this.loadingText = ''
})
)
)
Row() { Row() {
Image($r('app.media.btn_setting')).width('16.7%').height('12.2%') Image($r('app.media.btn_setting')).width('16.7%').height('12.2%')
.onClick(async () => { .onClick(async () => {
@ -364,6 +380,7 @@ struct Index {
} }
async aboutToAppear() { async aboutToAppear() {
// setInterval(() => { // setInterval(() => {
// let date = new Date(); // let date = new Date();
// console.info('jiangsong1:timeSynchronization begin '); // console.info('jiangsong1:timeSynchronization begin ');
@ -407,7 +424,18 @@ struct Index {
} }
}) })
}); });
const isRestart = await PreferenceUtils.getOtherModel("isRestart")
if (isRestart === "1") {
PreferenceUtils.writeOtherData("0", "isRestart")
setTimeout(() => {
router.pushUrl({
url: 'pages/UserInfo',
params: {
type: 1
}
}, router.RouterMode.Single);
}, 2000)
}
} }
aboutToDisappear() { aboutToDisappear() {

View File

@ -566,7 +566,7 @@ struct Index {
//上车准备&起步都开始时 //上车准备&起步都开始时
if (this.syssetParam386 == '3' if (this.syssetParam386 == '3'
&& (this.projectsObj[1].type == '2' || this.projectsObj[1].type == '3') && (this.projectsObj[1].type == '2' || this.projectsObj[1].type == '3')
&& this.projectsObj[2].type == '2' && (this.projectsObj[2].type !== '1' && this.projectsObj[2].type !== undefined)
&& !this.syssetParam386ET3 && !this.syssetParam386ET3
) { ) {
this.judge.rmndg = 2; this.judge.rmndg = 2;
@ -920,6 +920,25 @@ struct Index {
.backgroundImage($rawfile('judge/anniu_nor.png'), ImageRepeat.NoRepeat) .backgroundImage($rawfile('judge/anniu_nor.png'), ImageRepeat.NoRepeat)
.backgroundImageSize({ width: '100%', height: '100%' }) .backgroundImageSize({ width: '100%', height: '100%' })
.onClick(() => { .onClick(() => {
//靠边停车进行中&且其它项目都已经完成 不能结束
if(!this.singlePlay && this.projectsObj['40600']?.type == '2' && this.isRequiredProjectsEnd){
Prompt.showToast({
message: '靠边停车项目进行中,不允许手动退出!',
duration: 4000
});
return
}
//考试未结束且有扣分,不允许退出
if (!this.singlePlay && this.judgeConfigObj['344'] == 1 && this.kfArr.length > 0&& !this.isAllProjectsEnd ) {
Prompt.showToast({
message: '考试未结束且有扣分,不允许手动退出!',
duration: 4000
});
return
}
// this.vocObj.playAudio({ // this.vocObj.playAudio({
// type: 1, // type: 1,
// name: 'button_media.wav' // name: 'button_media.wav'
@ -1029,13 +1048,7 @@ struct Index {
router.back() router.back()
return return
} }
if (this.judgeConfigObj['344'] == 1) {
Prompt.showToast({
message: '考试未结束,不允许手动退出!',
duration: 4000
});
return
}
this.endPopupVisible = false; this.endPopupVisible = false;
this.loadingPopupVisible = true this.loadingPopupVisible = true
clearInterval(this.timer); clearInterval(this.timer);
@ -1427,7 +1440,7 @@ struct Index {
// 必考项目除靠边停车是否全部完成 // 必考项目除靠边停车是否全部完成
@State isRequiredProjectsEnd: boolean = false; @State isRequiredProjectsEnd: boolean = false;
// 考试项目是否全部完成 // 考试项目是否全部完成
// @State isAllProjectsEnd: boolean = false; @State isAllProjectsEnd: boolean = false;
@State lane: LANE = { road: '', num: 0, count: 0 } @State lane: LANE = { road: '', num: 0, count: 0 }
@State roadData: Object = {}; @State roadData: Object = {};
//定位差分状态时候正常 //定位差分状态时候正常

View File

@ -24,6 +24,9 @@ import errorMsgDialog from './compontents/errorMsgDialog';
import imageBtn from './compontents/imageBtn'; import imageBtn from './compontents/imageBtn';
import FileUtil from '../common/utils/File'; import FileUtil from '../common/utils/File';
import DB, { ColumnType } from '../common/database/DbSql'; import DB, { ColumnType } from '../common/database/DbSql';
import CozyMsgDialog from './compontents/CozyDialog';
import PreferenceUtils from '../common/utils/PreferenceUtils';
import appRecovery from '@ohos.app.ability.appRecovery';
@Entry @Entry
@Component @Component
@ -78,6 +81,7 @@ struct UserInfo {
@State faceFlag: string = '0'; @State faceFlag: string = '0';
@State FaceOpenStatue: string = '0'; //是否开启人脸识别 @State FaceOpenStatue: string = '0'; //是否开启人脸识别
@State faceCatchImg: string = '' @State faceCatchImg: string = ''
@State examCount: number = 0
@State systemParam: systemParam = { @State systemParam: systemParam = {
'Param341': true, //是否按顺序考试 'Param341': true, //是否按顺序考试
'Param803Str': '0', //开始考试前必须解开安全带或关车门 'Param803Str': '0', //开始考试前必须解开安全带或关车门
@ -185,6 +189,10 @@ struct UserInfo {
{ label: '考试员名', key: 'ksy2' }, { label: '考试员名', key: 'ksy2' },
] ]
private fileUtil: FileUtil private fileUtil: FileUtil
cozyDialog: CustomDialogController = new CustomDialogController({
builder: CozyMsgDialog(),
autoCancel: false
})
aboutToAppear() { aboutToAppear() {
this.fileUtil = new FileUtil(this.context) this.fileUtil = new FileUtil(this.context)
@ -192,6 +200,15 @@ struct UserInfo {
} }
async onPageShow() { async onPageShow() {
if (this.examCount > 5) {
PreferenceUtils.writeOtherData("1", "isRestart")
this.cozyDialog.open()
// 延迟关闭
setTimeout(() => {
this.cozyDialog.close()
appRecovery.restartApp()
}, 3000)
}
this.isExamStart = false this.isExamStart = false
this.startExam = false this.startExam = false
this.updateTimeLimit = false this.updateTimeLimit = false
@ -969,7 +986,7 @@ struct UserInfo {
const ygd = msgArr[8]; const ygd = msgArr[8];
const ssc = msgArr[13]; const ssc = msgArr[13];
const dw = msgArr[28]; const dw = msgArr[28];
if(Param853Str == '1'){ if (Param853Str == '1' && fdjzs * 1 > 0) {
this.avPlayer.playAudio(['voice/熄火.mp3']) this.avPlayer.playAudio(['voice/熄火.mp3'])
promptAction.showToast({ promptAction.showToast({
message: '请熄火', message: '请熄火',
@ -1326,6 +1343,21 @@ struct UserInfo {
} else { } else {
// Image($r('app.media.ksks_btn')) // Image($r('app.media.ksks_btn'))
// .commStyle() // .commStyle()
// Button(){
// Text("add")
// }.width(100).height(30).onClick(()=>{
// this.examCount++
// if (this.examCount > 2) {
// PreferenceUtils.writeOtherData("1", "isRestart")
// this.cozyDialog.open()
// // 延迟关闭
// setTimeout(() => {
// this.cozyDialog.close()
// appRecovery.restartApp()
// }, 3000)
// }
//
// })
imageBtn({ btnWidth: 220 * this.ratio, btnHeight: 69 * this.ratio, imgSrc: $r('app.media.ksks_btn') }) imageBtn({ btnWidth: 220 * this.ratio, btnHeight: 69 * this.ratio, imgSrc: $r('app.media.ksks_btn') })
.margin({ bottom: 12 * this.ratio }) .margin({ bottom: 12 * this.ratio })
.onClick(async () => { .onClick(async () => {
@ -1338,7 +1370,8 @@ struct UserInfo {
this.errorDialog.open() this.errorDialog.open()
return return
} }
this.examCount++
console.log("已经考了", this.examCount + "个学员")
await this.prePareExam() await this.prePareExam()
}) })
} }

View File

@ -0,0 +1,18 @@
@CustomDialog
export default struct CozyMsgDialog {
private controller?: CustomDialogController
build() {
Column() {
Column() {
Text("温馨提示").fontSize(50)
Row() {
Text("设备已经进行过6次考试,马上进入内存以及数据优化过,请稍等片刻,请勿对机器进行操作,感谢配合!")
.fontSize(30).lineHeight(40)
}.width("100%").margin({
top: 20
}).padding(20)
}
}.width("100%").height(300).padding(20)
}
}

View File

@ -187,8 +187,8 @@ export default struct FaceCompare {
this.base64 = this.imageBase64 + data.base64 this.base64 = this.imageBase64 + data.base64
faceCompare({ faceCompare({
sfzh: this.sfzh, sfzh: this.sfzh,
secondImage: this.firstImage.substr(22), secondImage:data.base64,
firstImage: data.base64, firstImage: this.firstImage.substr(22),
type: 2, type: 2,
verifyType: 1 verifyType: 1
}) })

View File

@ -267,9 +267,7 @@ export default class Judge {
judgeUdp.send(bytes) judgeUdp.send(bytes)
} }
if (!isExamEnd) { if (!isExamEnd) {
console.info(judgeTag, 'start examJudgeRealExam')
await examJudgeRealExam(plcData) await examJudgeRealExam(plcData)
console.info(judgeTag, 'end examJudgeRealExam')
} }
let [prevJd, preWd] = [0, 0] let [prevJd, preWd] = [0, 0]
globalThis.udpIndex += 1 globalThis.udpIndex += 1
@ -528,7 +526,7 @@ export default class Judge {
const bytes = await this.getMessageHeartbeat(); const bytes = await this.getMessageHeartbeat();
bytes && globalThis.judgeUdp.send(bytes) bytes && globalThis.judgeUdp.send(bytes)
}, 50) }, 1000)
globalThis.judgeTimer = judgeTimer; globalThis.judgeTimer = judgeTimer;
} }
@ -1181,8 +1179,8 @@ export default class Judge {
const {lsh,idCard,serialNumber,ksdd,projectsObj} = judgeUI const {lsh,idCard,serialNumber,ksdd,projectsObj} = judgeUI
const time = await getCurrentTime(); const time = await getCurrentTime();
const project = getProjectInfo(ksxm); const project = getProjectInfo(ksxm);
//科目三夜间行驶.模拟灯光、上车准备出现通用评判ksxm为当前进行的项目 //科目三夜间行驶.模拟灯光、上车准备出现非本项目的扣分ksxm需转换为为当前进行的项目
const checkProjects = ['17', '41', '1']; const checkProjects = ['1', '41', '17'];
//获取正在进行的项目 //获取正在进行的项目
const inProjects = Reflect.ownKeys(projectsObj).filter(projectKey => projectsObj[projectKey].type == 2); const inProjects = Reflect.ownKeys(projectsObj).filter(projectKey => projectsObj[projectKey].type == 2);
@ -1192,7 +1190,8 @@ export default class Judge {
commonKsxm = projectCode commonKsxm = projectCode
} }
}) })
console.info(judgeTag, 'commonKsxm=>' + commonKsxm)
console.info(judgeTag, 'project=>' + project)
const data = { const data = {
xtlb: '17', jkxlh: serialNumber, jkid: '17C53', xtlb: '17', jkxlh: serialNumber, jkid: '17C53',
drvexam: { drvexam: {
@ -1202,7 +1201,7 @@ export default class Judge {
? (commonKsxm ? (commonKsxm
? (projectsObj[commonKsxm].projectCodeCenter) ? (projectsObj[commonKsxm].projectCodeCenter)
: (examSubject == 3 ? 30000 : (xmmcEndCode == undefined ? 10000 : xmmcEndCode))) : (examSubject == 3 ? 30000 : (xmmcEndCode == undefined ? 10000 : xmmcEndCode)))
: project.projectCodeCenter, : (projectsObj[commonKsxm]?.projectCodeCenter || project.projectCodeCenter),
kfxm: kf.markcatalog, kfxm: kf.markcatalog,
kfxmmx: `${ksxm},${kf.markserial}`, kfxmmx: `${ksxm},${kf.markserial}`,
sfzmhm: idCard, sfzmhm: idCard,

View File

@ -0,0 +1,42 @@
import socket from '@ohos.net.socket';
class SafetyOfficer{
// 是否开启安全员
private isOpen:boolean = false
// 心跳端口
private heartBeatPort:number = 8054
// 数据端口
private dataPort:number = 8052
// 本地端口
private localUdpPort:number = 19961
udpClient:socket.UDPSocket
//协议格式:帧头,数据长度,流水号,消息标识,数据区,保留,帧尾
constructor(context) {
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
this.udpClient = udp
}
//初始化指令
heartBeatFn = async ()=> {
//车牌号 时间戳 空 空 空 空 空 @
'$SBXS,85,20250603115529563,B202,赣A78QK6@360803200602253517@1@20250603115523132@@@@@李从星@001@@001@2506455453517,05,*SBJS'
}
//开始考试
beginExamFn = async ()=>{
//车牌号 考试身份证 状态 开始考试时间 考试次数 考车信息 窗户标注信息 方向盘标注信息 考生姓名 安全员编号 是否合格 安全员姓名 流水号
}
//结束考试
endExamFn = async ()=>{
//车牌号 考试身份证 状态 开始考试时间 考试次数 考车信息 窗户标注信息 方向盘标注信息 考生姓名 安全员编号 是否合格 安全员姓名 流水号
}
//obd&gps相关数据
sendObdData = async ()=>{
//考试员号 考试车型 车牌号 科目类型+考试开始时间 设备信号状态 速度 发动机转速 GPS纬度 GPS经度 主天线位置 GPS东向距离 GPS北向距离
//航向角 俯仰角 高程 项目状态 当前项目编号 场地设备编号 本次考试行驶总距离 扣分值 扣分项数量 n个扣分序号 考车车型 车牌号
//工控机是否在播报语音 安全员姓名
}
}

View File

@ -1,11 +1,11 @@
{ {
"module": { "module": {
"name": "entry", "name": "entry",
"type": "entry", "type": "entry",
"description": "$string:module_desc", "description": "$string:module_desc",
"mainElement": "EntryAbility", "mainElement": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ts",
"deviceTypes": [ "deviceTypes": [
"default", "default",
"tablet", "tablet",
@ -13,17 +13,16 @@
"deliveryWithInstall": true, "deliveryWithInstall": true,
"installationFree": false, "installationFree": false,
"pages": "$profile:main_pages", "pages": "$profile:main_pages",
"abilities": [ "abilities": [
{ {
"name": "EntryAbility", "name": "EntryAbility",
"srcEntrance": "./ets/entryability/EntryAbility.ts", "srcEntry": "./ets/entryability/EntryAbility.ts",
"description": "$string:EntryAbility_desc", "description": "$string:EntryAbility_desc",
"icon": "$media:logo_app", "icon": "$media:logo_app",
"label": "$string:EntryAbility_label", "label": "$string:EntryAbility_label",
"startWindowIcon": "$media:icon", "startWindowIcon": "$media:icon",
"startWindowBackground": "$color:start_window_background", "startWindowBackground": "$color:start_window_background",
"visible": true, "exported": true,
"skills": [ "skills": [
{ {
"entities": [ "entities": [
@ -37,7 +36,11 @@
} }
], ],
"requestPermissions":[ "requestPermissions":[
{"name": "ohos.permission.INSTALL_BUNDLE"},
{"name": "ohos.permission.UNINSTALL_BUNDLE"},
{"name": "ohos.permission.ACCESS_SERVICE_DM"},
{"name": "ohos.permission.CONNECTIVITY_INTERNAL"}, {"name": "ohos.permission.CONNECTIVITY_INTERNAL"},
{"name": "ohos.permission.SET_TIME"}, {"name": "ohos.permission.SET_TIME"},
{ {
"name": "ohos.permission.INTERNET" "name": "ohos.permission.INTERNET"

View File

@ -1,13 +1,15 @@
{ {
"lockfileVersion": 1, "lockfileVersion": 2,
"ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
"specifiers": { "specifiers": {
"@ohos/hypium@1.0.6": "@ohos/hypium@1.0.6" "@ohos/hypium@1.0.6": "@ohos/hypium@1.0.6"
}, },
"packages": { "packages": {
"@ohos/hypium@1.0.6": { "@ohos/hypium@1.0.6": {
"resolved": "https://repo.harmonyos.com/ohpm/@ohos/hypium/-/hypium-1.0.6.tgz", "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.6.tgz",
"integrity": "sha512-bb3DWeWhYrFqj9mPFV3yZQpkm36kbcK+YYaeY9g292QKSjOdmhEIQR2ULPvyMsgSR4usOBf5nnYrDmaCCXirgQ==" "integrity": "sha512-bb3DWeWhYrFqj9mPFV3yZQpkm36kbcK+YYaeY9g292QKSjOdmhEIQR2ULPvyMsgSR4usOBf5nnYrDmaCCXirgQ==",
"registryType": "ohpm",
"shasum": "3f5fed65372633233264b3447705b0831dfe7ea1"
} }
} }
} }