Compare commits
	
		
			34 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 46c3825c59 | ||
|  | 198fa634fe | ||
|  | 8d6e6e3b6b | ||
| 4578177d37 | |||
| d1a1fc8b44 | |||
| 08e430f02f | |||
| 379f4c8778 | |||
| 273340189d | |||
| c796add419 | |||
| 670d6d20af | |||
| a602655278 | |||
|  | d93f0adcaf | ||
|  | 098644f64b | ||
| 264e76d05d | |||
| c359ef0568 | |||
|  | edb2ed2b45 | ||
|  | b765676068 | ||
|  | 5732b62000 | ||
|  | 4c6f25ee3a | ||
|  | 2ff07dd2fb | ||
|  | d2e795c82f | ||
|  | 8d7173c545 | ||
|  | 94b3b2e96a | ||
|  | 0c2715821d | ||
|  | 2d085b42bf | ||
|  | 2f524da992 | ||
|  | 7447ae3f4d | ||
|  | 5c9af2b914 | ||
|  | 818d2a775d | ||
|  | 5119c46963 | ||
|  | bc8017ff71 | ||
|  | 45772f0b49 | ||
|  | fc6f784db1 | ||
|  | afa4983725 | 
| @ -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" | ||||||
|  | |||||||
| @ -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" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @ -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) => { | ||||||
|  | |||||||
| @ -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 }) | ||||||
|     }); |     }); | ||||||
|  | |||||||
							
								
								
									
										63
									
								
								entry/src/main/ets/common/utils/PreferenceUtils.ets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								entry/src/main/ets/common/utils/PreferenceUtils.ets
									
									
									
									
									
										Normal 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(); | ||||||
| @ -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('') | ||||||
|  | |||||||
							
								
								
									
										41
									
								
								entry/src/main/ets/common/utils/UsbUtils.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								entry/src/main/ets/common/utils/UsbUtils.ts
									
									
									
									
									
										Normal 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); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -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'); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -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() { | ||||||
|  | |||||||
| @ -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 = {}; | ||||||
|   //定位差分状态时候正常 |   //定位差分状态时候正常 | ||||||
|  | |||||||
| @ -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() | ||||||
|               }) |               }) | ||||||
|           } |           } | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								entry/src/main/ets/pages/compontents/CozyDialog.ets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								entry/src/main/ets/pages/compontents/CozyDialog.ets
									
									
									
									
									
										Normal 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) | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -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 | ||||||
|     }) |     }) | ||||||
|  | |||||||
| @ -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, | ||||||
|  | |||||||
							
								
								
									
										42
									
								
								entry/src/main/ets/pages/judgeSDK/utils/safetyOfficer.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								entry/src/main/ets/pages/judgeSDK/utils/safetyOfficer.ts
									
									
									
									
									
										Normal 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个扣分序号 考车车型 车牌号
 | ||||||
|  |     //工控机是否在播报语音 安全员姓名
 | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -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" | ||||||
|  | |||||||
										
											Binary file not shown.
										
									
								
							| @ -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" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user