// @ts-nocheck import common from '@ohos.app.ability.common'; import router from '@ohos.router' import { getCarInfo, getDeviceInfo } from '../common/service/terminalService' import { setCurrentTime } from '../common/service/timeService' import {Array2Byte} from '../common/utils/tools' import { getDataBaseTable, upDateTable, getMySystemSetTable, getSyncData, delSyncTable, getEsCarModel, upDataZhongxinginitialization } from '../common/service/initable' import prompt from '@ohos.prompt' import { dateFormat } from '../common/utils/tools' import deviceManager from '@ohos.distributedHardware.deviceManager' import AccountTable from '../common/database/tables/AccountTable'; import MA_SYSSET from '../common/constants/MA_SYSSET'; import { getUDP, getUDP2 } from '../common/utils/GlobleUdp' import {initJudgeUdp} from '../common/utils/UdpJudge' import { getTCP } from '../common/utils/GlobleTcp' import { voiceService } from '../common/service/voiceService' import testNapi from '@ohos.hiserialsdk' import TcpClient from '../common/utils/TcpClient'; import Router from '@system.router' import socket from '@ohos.net.socket'; import fs from '@ohos.file.fs' import mediaLibrary from '@ohos.multimedia.mediaLibrary' import FileUtil from '../common/utils/File' @Entry @Component struct Index { @State carNum: string = '' @State version: string = '' @State url: string = '' @State hasAuth: boolean = false; @State isSingle: boolean = false; @State deviceId: string = ''; private vocObj = null; @State angle: number = 0 @State ratio: number = 850 / 960 @State loading: boolean = true @State fd: number = -1; private context = getContext(this) as common.UIAbilityContext; build() { Column() { Column() { Row() { Image($r('app.media.logo')).width('30%').height('5.5%').margin({ left: 24 }) Row() { Image($r('app.media.btn_setting')).width('16.7%').height('12.2%') .onClick(async () => { if (this.loading) { return } // this.url = 'pages/Settings' router.pushUrl({ url: 'pages/Settings', }, router.RouterMode.Single); }) Image($r('app.media.btn_back')).width('14.4%').height('12.2%') .onClick(() => { if (this.loading) { return } // getSyncData('MA_SYSSET') router.back() // this.url = 'back' // app.terminate() }) } } .width('100%') .justifyContent(FlexAlign.SpaceBetween) } Column() { Row() { if (!this.isSingle) { Image($r('app.media.index_lw')).width('30.5%').height('74%').onClick(() => { // this.vocObj.playAudio({ // type: 1, // name: 'button_media.wav' // }) if (this.loading) { return } const that = this this.loading = true setTimeout(() => { that.angle = 360 }, 1000) that.angle = 0 // this.getCenterDataTable() if(globalThis.timeInfo.mode=='3'){ this.upDateTable() }else{ this.getCenterDataTable() } }) } if (this.isSingle) { Image($r('app.media.index_dj')).width('30.5%').height('74%').onClick(() => { if (this.loading) { return } router.pushUrl({ url: 'pages/userInfo', }, router.RouterMode.Single); }) } Image($r('app.media.index_zj')).width('30.5%').height('74%').onClick(() => { if (this.loading) { return } // globalThis.singlePlay = !globalThis.singlePlay // this.isSingle = globalThis.singlePlay // return router.pushUrl({ url: 'pages/carCheck' }, router.RouterMode.Single); }) } .width('100%') .justifyContent(FlexAlign.SpaceAround) } Column() { Row() { Column() { Text('V ' + globalThis.version) .fontColor('#CCAE7A') .fontSize(22 * this.ratio) .width('30%') .margin({ bottom: 10 }) Text('授权信息:' + (this.hasAuth ? '已授权' : '未授权')) .fontColor('#CCAE7A') .fontSize(22 * this.ratio) .width('30%') } .margin({ left: 24 }) .gesture( GestureGroup(GestureMode.Exclusive, TapGesture({ count: 2 }) .onAction(() => { globalThis.singlePlay = !globalThis.singlePlay this.isSingle = globalThis.singlePlay }) ) ) Text('考车号:' + this.deviceId).fontColor('#CCAE7A').fontSize(22 * this.ratio).margin({ right: 24 }) } .width('100%') .justifyContent(FlexAlign.SpaceBetween) .margin({ bottom: 10 }) } if (this.loading) { Column() { Image($r('app.media.open_loading')) .width(200 * this.ratio) .rotate({ angle: this.angle }) .height(200 * this.ratio) .animation({ duration: 5000, // 动画时长 curve: Curve.EaseOut, // 动画曲线 delay: 500, // 动画延迟 iterations: -1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 }) .margin({ top: 30 * this.ratio }) Image($r('app.media.car')) .width(80 * this.ratio) .height(80 * this.ratio) .position({ x: 288 * this.ratio, y: 89 * this.ratio }) Text('获取考车信息,请稍候……').fontSize(24 * this.ratio).margin({ top: 20 * this.ratio }).fontWeight(400) } .width(660 * this.ratio) .height(360 * this.ratio) .position({ x: 150 * this.ratio, y: 98 * this.ratio }) .backgroundColor('#E6E3DF') .borderRadius(19 * this.ratio) } } .width('100%') .height('100%') .justifyContent(FlexAlign.SpaceBetween) .backgroundImagePosition({ x: 0, y: 0 }) .backgroundImage($r('app.media.index_bg')) .backgroundImageSize({ width: '100%', height: '100%' }) } aboutToAppear() { this.angle = 0 this.loading = false // this.vocObj = new voiceService(async (status, val) => { // if (status == 'idle') { // if (this.url == 'back') { // router.back() // // that.udpClient.sendMsg('111') // } else { // router.pushUrl({ // url: this.url, // }); // } // } // }); } Array2Byte(array) { var buf = new ArrayBuffer(array.length); var view = new Uint8Array(buf); for (var i = 0; i != array.length; ++i) { view[i] = array[i] & 0xFF; } return view; } openChuankouMsg() { this.fd = testNapi.SerialOpen(this.devPath); } string2Bytes(number, len) { // console.log('string2Bytes == ', number) let str = (+number).toString(2); if (str.length > len) { console.log('数据长度不对~~'); return } var byteString = this.fillZero(str, len); var arrBytes = new Array(); for (var i = byteString.length; i > 0; ) { let j = i - 8; if (j < 0) { j = 0 } var s = byteString.slice(j, i); var v = parseInt(s, 2); arrBytes.push(v); i = i - 8 } return arrBytes; } //补0 fillZero(str, len) { str = str + ''; if (str.length > len || !len) { return str } let num = len - str.length; let zeroStr = ''; for (var i = 0; i < num; i++) { zeroStr = zeroStr + '0' } return zeroStr + str; } async heartMsg(context) { const fileUtil = new FileUtil(context) const fileData = await fileUtil.readFile('/mnt/hmdfs/100/account/device_view/localfiles/files/config/liushui.txt'); let res = fs.accessSync('/mnt/hmdfs/100/account/device_view/localfiles/files/config/liushui.txt'); // TODO return if (res) { if(JSON.stringify(fileData).indexOf('u0000')>=0){ const date = new Date() const param = { date: dateFormat(date), value: 0 } const folderPath = await fileUtil.initFolder(`/config`); fileUtil.addFile(`${folderPath}/liushui.txt`, JSON.stringify(param)) }else{ const date = new Date() const time1 = JSON.parse(fileData).date.split(' ')[0] const time2 = dateFormat(date).split(' ')[0] if (time1 == time2) { const date = new Date() const param = { date: dateFormat(date), value: Number(JSON.parse(fileData).value) + 1 } const folderPath = await fileUtil.initFolder(`/config`); fileUtil.addFile(`${folderPath}/liushui.txt`, JSON.stringify(param)) } else { const date = new Date() const param = { date: dateFormat(date), value: 0 } const folderPath = await fileUtil.initFolder(`/config`); fileUtil.addFile(`${folderPath}/liushui.txt`, JSON.stringify(param)) } } }else { const date = new Date() const param = { date: dateFormat(date), value: 0 } const folderPath = await fileUtil.initFolder(`/config`); fileUtil.addFile(`${folderPath}/liushui.txt`, JSON.stringify(param)) } const arr = [globalThis.signNum||0, globalThis.statue||1] let tmpList = []; tmpList.push(this.string2Bytes(arr[0], 1 * 8)[0]) tmpList.push(this.string2Bytes(arr[1], 1 * 8)[0]) const str =globalThis.lsh|| '0000000000000' for (let i = 0;i < str.length; i++) { tmpList.push(this.string2Bytes(str.charCodeAt(i), 1 * 8)[0]) } // const str ='1111160366580' // for (let i = 0;i < str.length; i++) { // tmpList.push(this.string2Bytes(str.charCodeAt(i), 1 * 8)[0]) // } // const param = { id: 46, list: tmpList, carNo: 489, placeId: 62 } const param= {id: 31,list:tmpList,carNo: globalThis.carInfo.carNo,placeId: globalThis.carInfo.examinationRoomId} globalThis.udpClient2.sendMsg(param, this.context) } onPageShow() { this.loading = false this.initParams() getUDP() getUDP2() setInterval(() => { this.heartMsg(this.context) }, 1000) // getTCP() // const TcpClient: TcpClient =new TcpClient(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort) if (globalThis.singlePlay == undefined || globalThis.singlePlay == null) { globalThis.singlePlay = false } this.isSingle = globalThis.singlePlay console.info('Index onPageShow'); } Array2Byte(array) { var buf = new ArrayBuffer(array.length); var view = new Uint8Array(buf); for (var i = 0; i != array.length; ++i) { view[i] = array[i] & 0xFF; } return view; } async initParams() { this.loading=false await getDeviceInfo() // await this.getDeviceId() await setCurrentTime(); await getCarInfo(); this.carNum = globalThis.carInfo.plateNo; this.version = globalThis.version; this.hasAuth = globalThis.hasAuth; initJudgeUdp() // await this.getDataBaseTableFn() //下载模型 // await this.getModel() // const arr = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00] // globalThis.udpClientByTopLine.sendMsg(this.Array2Byte(arr).buffer) } getDeviceId() { return new Promise((resolve, reject) => { getSyncData('DeviceInfoTable').then((result: Array) => { if (result.length) { globalThis.deviceNo = result[0].deviceId this.deviceId = result[0].deviceId resolve(result[0].deviceId) } else { // deviceManager.createDeviceManager('com.example.udptest', (error, value) => { // if (error) { // console.error('createDeviceManager failed.'); // return; // } // let dvMgrObj = value; // globalThis.deviceNo=dvMgrObj.getLocalDeviceInfoSync().deviceName // this.deviceId=globalThis.deviceNo // resolve(dvMgrObj.getLocalDeviceInfoSync().deviceName) // }); resolve('') } }) }) } async getModel() { const context = this.context; //下载模型 await getEsCarModel(context) } async getDataBaseTableFn() { // getDataBaseTable({ tableName: 'MA_MARKRULE' }) // getDataBaseTable({ tableName: 'MA_SYSTEMPARM' }) // await getDataBaseTable({ tableName: 'MA_SYSSET' }) // await getMySystemSetTable({ tableName: 'MA_SYSSET' }) // // await getDataBaseTable({ tableName: 'MA_MAP_COLLECT' }) // await getDataBaseTable({ tableName: 'MA_MAP_COLLECT_SHAPE' }) // await getDataBaseTable({ tableName: 'MA_MAP_ITEMCLASS' }) // await getDataBaseTable({ tableName: 'MA_MAP_POINT' }) // await getDataBaseTable({ tableName: 'MA_MAP_POINT_ITEM' }) // await getDataBaseTable({ tableName: 'MA_MAP_ROAD' }) // await getDataBaseTable({ tableName: 'MA_MAP_ROAD_LANE' }) // await getDataBaseTable({ tableName: 'MA_MAP_SUBITEM' }) // await getDataBaseTable({ tableName: 'ES_CARINFO' }) // await getDataBaseTable({ tableName: 'ES_EXAMPOINTDETAIL' }) // await getDataBaseTable({ tableName: 'MA_MARKRULESET' }) // await getDataBaseTable({ tableName: 'ES_CAR_VIDEO_PARAMETER' }) // await getDataBaseTable({ tableName: 'MA_CDSBINFO' }) // await getDataBaseTable({ tableName: 'MA_ITEMINFO' }) // await getDataBaseTable({ tableName: 'MA_T_CARPARMSET' }) } async getCenterDataTable() { const flag= await upDataZhongxinginitialization() this.loading = false if(flag){ router.pushUrl({ url: 'pages/ExaminerLogin', }, router.RouterMode.Single) }else{ prompt.showToast({ message: '联网更新失败,请检查网络后重新更新', duration: 1000 }); } } async upDateTable() { // return const db = new AccountTable(() => { }, MA_SYSSET); db.getRdbStore(() => { db.query('0', async (array) => { if (array.length) { delSyncTable('MA_SYSSET').then(async () => { // getSyncData('MA_SYSSET') await getDataBaseTable({ tableName: 'MA_SYSSET' }) await getMySystemSetTable({ tableName: 'MA_SYSSET' }) }) } else { await getDataBaseTable({ tableName: 'MA_SYSSET' }) await getMySystemSetTable({ tableName: 'MA_SYSSET' }) } // console.log(markRuleParams) }) }) const typeObj = { 'MA_MARKRULE': false, 'MA_SYSTEMPARM': false, 'MA_MAP_COLLECT': false, 'MA_MAP_COLLECT_SHAPE': false, 'MA_MAP_ITEMCLASS': false, 'MA_MAP_POINT': false, 'MA_MAP_POINT_ITEM': false, 'MA_MAP_ROAD': false, 'MA_MAP_ROAD_LANE': false, 'MA_MAP_SUBITEM': false, 'ES_CARINFO': false, 'ES_EXAMPOINTDETAIL': false, 'MA_MARKRULESET': false, 'ES_CAR_VIDEO_PARAMETER': false, 'MA_CDSBINFO': false, 'MA_ITEMINFO': false, 'MA_T_CARPARMSET': false } typeObj.MA_MARKRULE = await upDateTable({ tableName: 'MA_MARKRULE' }) typeObj.MA_SYSTEMPARM = await upDateTable({ tableName: 'MA_SYSTEMPARM' }) typeObj.MA_MAP_COLLECT = await upDateTable({ tableName: 'MA_MAP_COLLECT' }) typeObj.MA_MAP_COLLECT_SHAPE = await upDateTable({ tableName: 'MA_MAP_COLLECT_SHAPE' }) typeObj.MA_MAP_ITEMCLASS = await upDateTable({ tableName: 'MA_MAP_ITEMCLASS' }) typeObj.MA_MAP_POINT = await upDateTable({ tableName: 'MA_MAP_POINT' }) typeObj.MA_MAP_POINT_ITEM = await upDateTable({ tableName: 'MA_MAP_POINT_ITEM' }) typeObj.MA_MAP_ROAD = await upDateTable({ tableName: 'MA_MAP_ROAD' }) typeObj.MA_MAP_ROAD_LANE = await upDateTable({ tableName: 'MA_MAP_ROAD_LANE' }) typeObj.MA_MAP_SUBITEM = await upDateTable({ tableName: 'MA_MAP_SUBITEM' }) typeObj.ES_CARINFO = await upDateTable({ tableName: 'ES_CARINFO' }) typeObj.ES_EXAMPOINTDETAIL = await upDateTable({ tableName: 'ES_EXAMPOINTDETAIL' }) typeObj.MA_MARKRULESET = await upDateTable({ tableName: 'MA_MARKRULESET' }) typeObj.ES_CAR_VIDEO_PARAMETER = await upDateTable({ tableName: 'ES_CAR_VIDEO_PARAMETER' }) typeObj.MA_CDSBINFO = await upDateTable({ tableName: 'MA_CDSBINFO' }) typeObj.MA_ITEMINFO = await upDateTable({ tableName: 'MA_ITEMINFO' }) typeObj.MA_T_CARPARMSET = await upDateTable({ tableName: 'MA_T_CARPARMSET' }) for (let key in typeObj) { if (!typeObj[key]) { this.loading = false prompt.showToast({ message: `未能查询到${key}表数据, 请先检查网络是否连接正常`, duration: 3000 }); return } } this.loading = false // await getSyncData('MA_MARKRULE') // await getSyncData('MA_SYSTEMPARM') // await getSyncData('MA_MAP_COLLECT') // await getSyncData('MA_MAP_COLLECT_SHAPE') // await getSyncData('MA_MAP_ITEMCLASS') // await getSyncData('MA_MAP_POINT') // await getSyncData('MA_SYSTEMPARM') // await getSyncData('MA_MAP_POINT_ITEM') // await getSyncData('MA_MAP_POINT') // await getSyncData('MA_MAP_POINT_ITEM') // await getSyncData('MA_MAP_ROAD') // await getSyncData('MA_MAP_ROAD_LANE') // await getSyncData('MA_MAP_SUBITEM') // await getSyncData('ES_CARINFO') // await getSyncData('ES_EXAMPOINTDETAIL') // await getSyncData('MA_CDSBINFO') // await getSyncData('MA_T_CARPARMSET') // if(!flag){ router.pushUrl({ url: 'pages/ExaminerLogin', }, router.RouterMode.Single); // return // } // await upDateTable({ tableName: 'MA_SYSSET' }) } termialCheck() { // if(!globalThis.deviceNo) { // prompt.showToast({ // message: '未能查询到当前车辆信息, 请先注册该车辆, 或者检查网络是否连接正常!', // duration: 3000 // }); // // return false // } return true } }