From 4e3c3bf46552901245e463c119c3e8159bbeb998 Mon Sep 17 00:00:00 2001 From: wangzhongjie Date: Tue, 2 Sep 2025 13:42:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B6=A6=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-profile.json5 | 4 +- .../main/ets/common/service/indexService.ts | 47 +++-- .../main/ets/common/service/videoService.ts | 47 ++--- entry/src/main/ets/common/utils/UdpClient.ts | 1 + entry/src/main/ets/pages/Judge.ets | 6 + .../ets/pages/compontents/SignDisplayCom.ets | 178 +++++++++--------- 6 files changed, 153 insertions(+), 130 deletions(-) diff --git a/build-profile.json5 b/build-profile.json5 index 6f6c1ef3..e3593dbc 100644 --- a/build-profile.json5 +++ b/build-profile.json5 @@ -5,9 +5,9 @@ "name": "default", "material": { "certpath": "/Users/wangzhongjie/.ohos/config/openharmony/default_subject-two_Kl4t-ZSvZeuUm9s8O-e6FIH2VFR_OaNyhDP8kPjIWgU=.cer", - "storePassword": "0000001AC0C49320C84ECD6C7BA0119428C66297EAF08E5011B23EBA83794F0FA803077D0F4848203ADD", + "storePassword": "0000001A1173A56391B52980E84237B06A106777310E419AF46EBEB63A7D126BCA0F5657D119081FE3C9", "keyAlias": "debugKey", - "keyPassword": "0000001A7A1DB8B37DA86FBA8DBDDE9B6E4DC5801A351175FB4980E662677BB08D6E02D623FAD2EB993B", + "keyPassword": "0000001A5FF060362EBE093828B7604C511B827EB8C93BAD85C9745AA07A084FBAEB8687CC941F8CC0B7", "profile": "/Users/wangzhongjie/.ohos/config/openharmony/default_subject-two_Kl4t-ZSvZeuUm9s8O-e6FIH2VFR_OaNyhDP8kPjIWgU=.p7b", "signAlg": "SHA256withECDSA", "storeFile": "/Users/wangzhongjie/.ohos/config/openharmony/default_subject-two_Kl4t-ZSvZeuUm9s8O-e6FIH2VFR_OaNyhDP8kPjIWgU=.p12" diff --git a/entry/src/main/ets/common/service/indexService.ts b/entry/src/main/ets/common/service/indexService.ts index 0b7cba34..64f6f86d 100644 --- a/entry/src/main/ets/common/service/indexService.ts +++ b/entry/src/main/ets/common/service/indexService.ts @@ -284,50 +284,57 @@ export async function takePhotoFn(context) { } let fd -const devPath="/dev/ttyS1" +const devPath = "/dev/ttyS1" + async function openChuankouFn() { - fd =await testNapi.SerialOpen(devPath); - globalThis.fd=fd - console.log('chuankoufd',globalThis.fd) + fd = await testNapi.SerialOpen(devPath); + globalThis.fd = fd + console.log('chuankoufd', globalThis.fd) // let parity = 0x4e; // 'N' - let ret =await testNapi.SerialSet(fd, 115200,0, 8, 1, 0) - console.log('daihairet',ret) + let ret = await testNapi.SerialSet(fd, 115200, 0, 8, 1, 0) + console.log('daihairet', ret) } + async function getChuankouFnMsg() { let timeout = 5000; // 2秒超时 let databuff = [0x61, 0xAA, 0x0A, 0X15, 0X00]; // send ABCDE let uint8Arr = new Uint8Array(databuff); - console.log('daihai',globalThis.fd) + console.log('daihai', globalThis.fd) let ret = await testNapi.SerialSend(globalThis.fd, uint8Arr); console.log('daihai SerialSend ret: ' + ret) - testNapi.SerialRecv(globalThis.fd, timeout,12).then(revTestInfo=>{ - console.log('daihai',revTestInfo?.recevedBuf?.toString()) - const message = revTestInfo?.recevedBuf?.toString() + testNapi.SerialRecv(globalThis.fd, timeout, 12).then(revTestInfo => { + console.log('daihai', revTestInfo?.recevedBuf?.toString()) + const message = revTestInfo?.recevedBuf?.toString() + console.log("chuankou xinxi",message) if (message == '') { return } const msg = message?.split(',') - if(!msg?.length){ + if (!msg?.length) { return } if (msg[0] != '98' || msg[1] != '85' || msg.length < 9) { return } - globalThis.chuankoMsg=msg[9] - }).catch((err)=>{ - console.log('daihaierror',JSON.stringify(err)) + console.log("chuankou 档位", msg[9]) + if(msg[9]==0||msg[9]==1||msg[9]==2||msg[9]==3||msg[9]==4||msg[9]==5){ + globalThis.chuankoMsg = msg[9] + } + }).catch((err) => { + console.log('daihaierror', JSON.stringify(err)) }) } -export async function getChuankouFn(){ - if(globalThis.fd){ + +export async function getChuankouFn() { + if (!globalThis.fd) { + console.log("chuankou 没有fd") + openChuankouFn() return } - openChuankouFn() - setInterval(()=>{ - getChuankouFnMsg() - },1000) + console.log("chuankou 定时器") + getChuankouFnMsg() } diff --git a/entry/src/main/ets/common/service/videoService.ts b/entry/src/main/ets/common/service/videoService.ts index 31f4a5dd..a813956b 100644 --- a/entry/src/main/ets/common/service/videoService.ts +++ b/entry/src/main/ets/common/service/videoService.ts @@ -6,13 +6,13 @@ import fs from '@ohos.file.fs' import photoAccessHelper from '@ohos.file.photoAccessHelper' import dataSharePredicates from '@ohos.data.dataSharePredicates' import { dateFormat, getCurrentTime } from '../utils/tools' -import rtsp_server from '@ohos.rtsprecord'; +import record from '@ohos.rtsprecord'; // import record from '@ohos.rtsprecord'; import { FileHelper } from './FileHelper'; import FileUtil from '../utils/File'; import { GlobalConfig } from '../../config'; -// const rtsp_server = record.createServer(); +const rtsp_server = record.createServer(); //开始录屏 const FILE_ASSET_FETCH_COLUMNS = [photoAccessHelper.PhotoKeys.URI, photoAccessHelper.PhotoKeys.PHOTO_TYPE, @@ -30,6 +30,7 @@ const FILE_ASSET_FETCH_COLUMNS = [photoAccessHelper.PhotoKeys.URI, photoAccessHelper.PhotoKeys.POSITION, photoAccessHelper.PhotoKeys.DATE_TRASHED, photoAccessHelper.PhotoKeys.HIDDEN]; + // const rtsp_server = record.createServer(); export async function saveStartRecordVideo(path) { @@ -57,6 +58,7 @@ export async function saveStartRecordVideo(path) { reslove(record_handle) }) } + async function getfilehandleCode(td, param, dir, path, index) { return new Promise(async (reslove, reject) => { console.log('pathpath1', path) @@ -67,8 +69,9 @@ async function getfilehandleCode(td, param, dir, path, index) { }) } -export async function startRecordVideo(param?, td?, context?, dir?,path?,index?) { - return new Promise(async(reslove, reject) => { + +export async function startRecordVideo(param?, td?, context?, dir?, path?, index?) { + return new Promise(async (reslove, reject) => { var video_uri = `rtsp://${param.userName}:${param.pwd}@${param.ip}:${param.port}/h264/ch${td}/main/av_stream`; if (rtsp_server != null) { @@ -113,17 +116,19 @@ export async function endRecordVideo(record_handleObj) { } } } + /** *拍照 * @param param * @param context * @param type=0不获取base64 */ -interface takePhotoParam { - name?:string, - base64?:string, - fileSize?:number, +interface takePhotoParam { + name?: string, + base64?: string, + fileSize?: number, } + /** * * @param param @@ -134,7 +139,8 @@ interface takePhotoParam { * @returns */ const fileHelper = new FileHelper(); -export async function takePhoto(param, context,dir,flag=1,callback?) { + +export async function takePhoto(param, context, dir, flag = 1, callback?) { var video_uri = `rtsp://${param.userName}:${param.pwd}@${param.ip}:${param.port}/h264/ch${param.pztd}/main/av_stream`; // var video_uri = `rtsp://admin:openharmony1@192.168.1.66:554/Streaming/Channels/3`; @@ -146,11 +152,11 @@ export async function takePhoto(param, context,dir,flag=1,callback?) { console.log(`baoyihu Rtsprecord baohaowen getVideoSnapshot fileName:` + fileName); // @ts-ignore // var snapResult = rtsp_server.getVideoSnapshot(context, video_uri, '', dir); - if(flag==0){ + if (flag == 0) { // @ts-ignore - rtsp_server.detectVideoSnapshotSize(video_uri,fileName).then((snapResult)=>{ - console.log("baohaowen_detectLoop round end size1:"+snapResult.fileSize); - callback({fileSize:snapResult.fileSize }) + rtsp_server.detectVideoSnapshotSize(video_uri, fileName).then((snapResult) => { + console.log("baohaowen_detectLoop round end size1:" + snapResult.fileSize); + callback({ fileSize: snapResult.fileSize }) }); // rtsp_server.getVideoSnapshot(context, video_uri, fileName,dir,false,(err,snapResult)=>{ // console.log(`baoyihu getVideoSnapshot return `); @@ -161,29 +167,26 @@ export async function takePhoto(param, context,dir,flag=1,callback?) { // callback({base64: snapResult.dataString,name:snapResult.fileName,fileSize:snapResult.fileSize }) // console.log('getmyLog01') // }); - } - else{ - return new Promise((resolve,reject)=>{ + } else { + return new Promise((resolve, reject) => { // @ts-ignore - rtsp_server.getVideoSnapshot(context, video_uri, fileName,dir,true,(snapResult,err)=>{ + rtsp_server.getVideoSnapshot(context, video_uri, fileName, dir, true, (err, snapResult) => { console.log('getPhtot') - resolve({base64: snapResult.dataString,name:snapResult.fileName,fileSize:snapResult.fileSize }) + resolve({ base64: snapResult.dataString, name: snapResult.fileName, fileSize: snapResult.fileSize }) }); }) console.log('getmyLog02') } console.log('getmyLog03') - - } export async function deleteAllFileByPiC(dirName) { // const fileHelper = new FileHelper(); - fileHelper.deleteFileOfAlbum(dirName,1); + fileHelper.deleteFileOfAlbum(dirName, 1); } -export async function deleteAllVideos(context,type: photoAccessHelper.AlbumType, subType: photoAccessHelper.AlbumSubtype): Promise { +export async function deleteAllVideos(context, type: photoAccessHelper.AlbumType, subType: photoAccessHelper.AlbumSubtype): Promise { let fetchResult: photoAccessHelper.FetchResult = null; try { const userFileMgr = photoAccessHelper.getPhotoAccessHelper(context); diff --git a/entry/src/main/ets/common/utils/UdpClient.ts b/entry/src/main/ets/common/utils/UdpClient.ts index 0fe7d78f..7a917a41 100644 --- a/entry/src/main/ets/common/utils/UdpClient.ts +++ b/entry/src/main/ets/common/utils/UdpClient.ts @@ -36,6 +36,7 @@ export default class UdpClient { this.oppositeIp = udpOppositeIp this.localIpPort = udplocalIpPort this.oppositeIpPort = udpOppositeIpPort + console.log("chuankou 初始化",) getChuankouFn() console.log(TAG,'newUdp') // this.stashFn=()=>{} diff --git a/entry/src/main/ets/pages/Judge.ets b/entry/src/main/ets/pages/Judge.ets index f760d2c6..f1b1bd53 100644 --- a/entry/src/main/ets/pages/Judge.ets +++ b/entry/src/main/ets/pages/Judge.ets @@ -33,6 +33,7 @@ import FileUtil from '../common/utils/File'; import SignDisplayCom from './compontents/signDisplayCom'; import promptAction from '@ohos.promptAction'; import { voiceService } from '../common/service/voiceService'; +import { getChuankouFn } from '../common/service/indexService'; @Entry @Component @@ -42,6 +43,11 @@ struct Index { } async aboutToAppear() { + getChuankouFn() + setInterval(() => { + console.log("chuankou 定时器2") + getChuankouFn() + }, 1000) globalThis.windowClass.setWindowSystemBarEnable([]) const time = await getCurrentTime() diff --git a/entry/src/main/ets/pages/compontents/SignDisplayCom.ets b/entry/src/main/ets/pages/compontents/SignDisplayCom.ets index 3c542a9b..cb246ac2 100644 --- a/entry/src/main/ets/pages/compontents/SignDisplayCom.ets +++ b/entry/src/main/ets/pages/compontents/SignDisplayCom.ets @@ -6,6 +6,8 @@ import { GPSData, SignalData } from '../../mock'; import { SignalDataType } from '../../model'; import FileUtil from '../../common/utils/File' import { GlobalConfig } from '../../config/index' +import { getChuankouFn } from '../../common/service/indexService'; + @Component export default struct SignDisplayCom { @State showBack: boolean = false @@ -99,91 +101,91 @@ export default struct SignDisplayCom { }.width(936 * this.ratio) Column() { - // Flex({ direction: FlexDirection.Column }) { - // Row() { - // Text("发送次数:" + this.signArr[49] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .width('25%') - // .textAlign(TextAlign.Start) - // Text("固件版本:" + this.signArr[54] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .width('30%') - // .textAlign(TextAlign.Start) - // Text("GPS数据次数/数据长度:" + this.signArr[59] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .textAlign(TextAlign.Start) - // }.justifyContent(FlexAlign.Start).padding({ left: 10 * this.ratio }).margin({ top: 8 * this.ratio }) - // - // Row() { - // Text("方向盘类型:" + this.signArr[50] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .width('25%') - // .textAlign(TextAlign.Start) - // Text("按键数值:" + this.signArr[55] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .width('30%') - // .textAlign(TextAlign.Start) - // Text("GPS错误次数:" + this.signArr[60] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .textAlign(TextAlign.Start) - // }.justifyContent(FlexAlign.Start).padding({ left: 10 * this.ratio }).margin({ top: 8 * this.ratio }) - // - // Row() { - // Text("汽车类型:" + this.signArr[51] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .width('25%') - // .textAlign(TextAlign.Start) - // Text("GPS板卡类型:" + this.signArr[56] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .width('30%') - // .textAlign(TextAlign.Start) - // Text("已工作时长/设定的工作时长:" + this.signArr[61] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .textAlign(TextAlign.Start) - // }.justifyContent(FlexAlign.Start).padding({ left: 10 * this.ratio }).margin({ top: 8 * this.ratio }) - // - // Row() { - // Text("接口心跳:" + this.signArr[52] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .width('25%') - // .textAlign(TextAlign.Start) - // Text("GPS板卡软件版本:" + this.signArr[57] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .width('30%') - // .textAlign(TextAlign.Start) - // Text("改正数次数/改正数大小:" + this.signArr[58] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .textAlign(TextAlign.Start) - // }.justifyContent(FlexAlign.Start).padding({ left: 10 * this.ratio }).margin({ top: 8 * this.ratio }) - // - // Row() { - // Text("本机IP:" + '192.168.7.170') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .width('25%') - // .textAlign(TextAlign.Start) - // Text("改正数数据长度*数据长度-基准站RTCM改正数类型:" + this.signArr[62] || '0') - // .fontColor('#FFF5E5') - // .fontSize(14 * this.ratio) - // .textAlign(TextAlign.Start) - // }.justifyContent(FlexAlign.Start).padding({ left: 10 * this.ratio }).margin({ top: 8 * this.ratio }) - // } - // .backgroundColor('#282828') - // .width(this.ratio * 890) - // .height(136 * this.ratio) - // .margin({ left: 0 * this.ratio, top: 15 * this.ratio }) + Flex({ direction: FlexDirection.Column }) { + Row() { + Text("发送次数:" + this.signArr[49] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .width('25%') + .textAlign(TextAlign.Start) + Text("固件版本:" + this.signArr[54] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .width('30%') + .textAlign(TextAlign.Start) + Text("GPS数据次数/数据长度:" + this.signArr[59] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .textAlign(TextAlign.Start) + }.justifyContent(FlexAlign.Start).padding({ left: 10 * this.ratio }).margin({ top: 8 * this.ratio }) + + Row() { + Text("方向盘类型:" + this.signArr[50] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .width('25%') + .textAlign(TextAlign.Start) + Text("按键数值:" + this.signArr[55] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .width('30%') + .textAlign(TextAlign.Start) + Text("GPS错误次数:" + this.signArr[60] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .textAlign(TextAlign.Start) + }.justifyContent(FlexAlign.Start).padding({ left: 10 * this.ratio }).margin({ top: 8 * this.ratio }) + + Row() { + Text("汽车类型:" + this.signArr[51] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .width('25%') + .textAlign(TextAlign.Start) + Text("GPS板卡类型:" + this.signArr[56] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .width('30%') + .textAlign(TextAlign.Start) + Text("已工作时长/设定的工作时长:" + this.signArr[61] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .textAlign(TextAlign.Start) + }.justifyContent(FlexAlign.Start).padding({ left: 10 * this.ratio }).margin({ top: 8 * this.ratio }) + + Row() { + Text("接口心跳:" + this.signArr[52] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .width('25%') + .textAlign(TextAlign.Start) + Text("GPS板卡软件版本:" + this.signArr[57] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .width('30%') + .textAlign(TextAlign.Start) + Text("改正数次数/改正数大小:" + this.signArr[58] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .textAlign(TextAlign.Start) + }.justifyContent(FlexAlign.Start).padding({ left: 10 * this.ratio }).margin({ top: 8 * this.ratio }) + + Row() { + Text("本机IP:" + '192.168.7.170') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .width('25%') + .textAlign(TextAlign.Start) + Text("改正数数据长度*数据长度-基准站RTCM改正数类型:" + this.signArr[62] || '0') + .fontColor('#FFF5E5') + .fontSize(14 * this.ratio) + .textAlign(TextAlign.Start) + }.justifyContent(FlexAlign.Start).padding({ left: 10 * this.ratio }).margin({ top: 8 * this.ratio }) + } + .backgroundColor('#282828') + .width(this.ratio * 890) + .height(136 * this.ratio) + .margin({ left: 0 * this.ratio, top: 15 * this.ratio }) Row() { Flex({ direction: FlexDirection.Column, wrap: FlexWrap.Wrap }) { @@ -322,10 +324,14 @@ export default struct SignDisplayCom { } aboutToDisappear() { - clearInterval(this.interval) + // clearInterval(this.interval) } async aboutToAppear() { + setInterval(() => { + console.log("chuankou 定时器2") + getChuankouFn() + }, 1000) // const fileUtil = new FileUtil(globalThis.context) // const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt') // this.udplocalIp=JSON.parse(data)?.udplocalIp||'192.168.7.170'