import { VideoConfig } from './interfaces' import common from '@ohos.app.ability.common'; import router from '@ohos.router' import { getDeviceInfo ,getCarInfo} from '../common/service/terminalService' import { setCurrentTime } from '../common/service/timeService' import {string2Bytes} from '../common/utils/tools' import { FileHelper } from '../common/service/FileHelper'; import { getEsCarModel, } from '../common/service/initable' import FileUtil from '../common/utils/File' import { getUDP, getUDP2 } from '../common/utils/GlobalUdp' import {initJudgeUdp} from '../common/utils/UdpJudge' import { getTCP } from '../common/utils/GlobalTcp' import TcpClient from '../common/utils/TcpClient'; import testNapi from '@ohos.hiserialsdk' import {setliushuiNum,getliushuiNum,getSingleCenterTable,getDoubleCeneterTable,takePhotoFn} from '../common/service/indexService' import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl'; import worker, { MessageEvents } from '@ohos.worker'; import Prompt from '@system.prompt'; @Entry @Component struct Index { private fileUtil: FileUtil @State carNum: string = '' @State version: string = '' @State url: string = '' @State hasAuth: boolean = false; @State isSingle: boolean = false; @State deviceId: string = ''; private interval = null; private workerInstance = null; @State angle: number = 0 @State ratio: number = 1700 / 960 @State loading: boolean = true @State fd: number = -1; private context = getContext(this) as common.UIAbilityContext; @State param: VideoConfig = { videoNum:'1', spls: '1', wz: '0,0', faceFlag: false, shuiying: true, pztd: '2', ljlx: '', ip: '192.168.36.94', port: '554', userName: 'admin', pwd: '12345qwe', td1: '1', td2: '2', td3: '3', td4: '4', videoRecord1: false, videoRecord2: true, videoRecord3: false, videoRecord4: false, text1: '', text2: '', text3: '', dolt: '', fontSize: '', rlls: '1', spzd4:false, spzd3:false, spzd2:false, spzd1:false, zdyz:'5', } fileHelper =null; 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 } 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 } router.back() }) } } .width('100%') .justifyContent(FlexAlign.SpaceBetween) } Column() { Row() { if (!this.isSingle) { Image($r('app.media.index_lw')).width('30.5%').height('74%').onClick(async() => { if (this.loading) { return } this.loading = true setTimeout(() => { this.angle = 360 }, 1000) this.angle = 0 if(!globalThis.timeInfo){ Prompt.showToast({ message: `网络连接失败`, duration: 3000 }); this.loading=false } this.testXMLToJSONInWorker() }) } if (this.isSingle) { Image($r('app.media.index_dj')).width('30.5%').height('74%').onClick(() => { if (this.loading) { return } router.pushUrl({ url: 'pages/UserInfo', params: { judge: true } }, router.RouterMode.Single); // router.pushUrl({ // url: 'pages/UserInfo', // }, router.RouterMode.Single); }) } Image($r('app.media.index_zj')).width('30.5%').height('74%').onClick(() => { if (this.loading) { 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 * globalThis.ratio) .width('30%') .margin({ bottom: 10 }) Text('授权信息:' + (this.hasAuth ? '已授权' : '未授权')) .fontColor('#CCAE7A') .fontSize(22 * globalThis.ratio) .width('30%') } .margin({ left: 24 }) .gesture( GestureGroup(GestureMode.Exclusive, TapGesture({ count: 2 }) .onAction(() => { // takePhotoFn(this.context) globalThis.singlePlay = !globalThis.singlePlay this.isSingle = globalThis.singlePlay }) ) ) Text('考车号:' + globalThis.deviceNo).fontColor('#CCAE7A').fontSize(22 * globalThis.ratio).margin({ right: 24 }) } .width('100%') .justifyContent(FlexAlign.SpaceBetween) .margin({ bottom: 10 }) } // if (this.loading) { Column() { Image($r('app.media.open_loading')) .width(200 * globalThis.ratio) .rotate({ angle: this.angle }) .height(200 * globalThis.ratio) .animation({ duration: 5000, // 动画时长 curve: Curve.EaseOut, // 动画曲线 delay: 500, // 动画延迟 iterations: -1, // 播放次数 playMode: PlayMode.Normal, // 动画模式 }) .margin({ top: 30 * globalThis.ratio }) Image($r('app.media.car')) .width(80 * globalThis.ratio) .height(80 * globalThis.ratio) .position({ x: 288 * globalThis.ratio, y: 89 * globalThis.ratio }) Text('获取考车信息,请稍候……').fontSize(24 * globalThis.ratio).margin({ top: 20 * globalThis.ratio }).fontWeight(400) } .visibility(this.loading ? Visibility.Visible: Visibility.Hidden) .width(660 * globalThis.ratio) .height(360 * globalThis.ratio) .position({ x: 150 * globalThis.ratio, y: 98 * globalThis.ratio }) .backgroundColor('#E6E3DF') .borderRadius(19 * globalThis.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() { globalThis.ratio= 1700 / 960 this.angle = 0 this.loading = false } async testXMLToJSONInWorker(){ let workerInstance = new worker.ThreadWorker('entry/ets/workers/worker.ts', { name: 'FriendsMoments Worker' }); const param={ carId:globalThis.carInfo?.carId, examinationRoomId:globalThis.carInfo?.examinationRoomId, judgeVersion:globalThis.judgeVersion, shellVersion:globalThis.version, paraKdid:globalThis.timeInfo?.paraKdid, mode: globalThis.timeInfo?.mode, context:this.context } workerInstance.postMessage(param); workerInstance.onmessage = (e: MessageEvents): void => { console.log("baoyihu after postMessage :",JSON.stringify(e.data)); if(e.data.isComplete){ router.pushUrl({ url: 'pages/ExaminerLogin', }, router.RouterMode.Single) } this.loading=false // let workData: WorkData = e.data; // if (workData) { // this.isComplete = workData.isComplete; // this.json_Str = workData.jsonStr; // console.log("baoyihu after postMessage json_Str:"+this.json_Str); // workerInstance.terminate(); // } } } async heartMsg() { const arr = [globalThis.signNum||0, globalThis.statue||1] let tmpList = []; tmpList.push(string2Bytes(arr[0], 1 * 8)[0]) tmpList.push(string2Bytes(arr[1], 1 * 8)[0]) const str =globalThis.lsh|| '0000000000000' for (let i = 0;i < str.length; i++) { tmpList.push(string2Bytes(str.charCodeAt(i), 1 * 8)[0]) } console.log('globalThis.carInfo',JSON.stringify(globalThis.carInfo)) const param= {id: 31,list:tmpList,carNo: globalThis.carInfo.carNo,placeId: globalThis.carInfo.examinationRoomId} // globalThis.udpClient2.initHeartSendMsg(param,this.context) globalThis.udpClient2.sendMsg(param, this.context) } onPageShow() { this.loading = false this.createAlbum() this.userAuth(); getUDP() getUDP2() clearInterval(this.interval) this.interval=setInterval(() => { setliushuiNum(this.context) getliushuiNum(this.context) this.heartMsg() }, 1000) // takePhotoFn(this.context) // 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'); } async createAlbum() { this.fileHelper = new FileHelper(); this.fileHelper.createAlbum('jt') this.fileHelper.createAlbum('pz'); } userAuth() { const permissions: Array = ["ohos.permission.SET_TIME","ohos.permission.READ_IMAGEVIDEO", "ohos.permission.DISTRIBUTED_DATASYNC" ,'ohos.permission.CONNECTIVITY_INTERNAL','ohos.permission.CAMERA','ohos.permission.READ_MEDIA','ohos.permission.WRITE_MEDIA','ohos.permission.FILE_ACCESS_MANAGER']; let context = this.context; let atManager = abilityAccessCtrl.createAtManager(); // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗 atManager.requestPermissionsFromUser(context, permissions).then((data) => { this.initParams() let grantStatus: Array = data.authResults; let length: number = grantStatus.length; for (let i = 0; i < length; i++) { if (grantStatus[i] === 0) { // 用户授权,可以继续访问目标操作 } else { // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限 return; } } // 授权成功 }).catch((err) => { console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`); }) } async initParams() { this.loading=false await getDeviceInfo() getCarInfo() await setCurrentTime(); this.carNum = globalThis.carInfo.plateNo; this.version = globalThis.version; this.hasAuth = globalThis.hasAuth; initJudgeUdp() //下载模型 // await this.getModel() // const arr = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00] // globalThis.udpClientByTopLine.sendMsg(Array2Byte(arr).buffer) } async getModel() { const context = this.context; //下载模型 await getEsCarModel(context) } }