From b8aa90e86e063307f8093e811086266f2826b085 Mon Sep 17 00:00:00 2001 From: lvyuankang <1344032923@qq.com> Date: Tue, 2 Jul 2024 08:59:03 +0800 Subject: [PATCH] =?UTF-8?q?socket=E4=B8=9F=E5=A4=B1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/common/service/initable.ts | 4 +- entry/src/main/ets/common/utils/TcpClient.ts | 65 +++++-------------- entry/src/main/ets/common/utils/UdpClient.ts | 49 +++++++------- .../ets/common/utils/UdpClientByCenter.ts | 3 +- entry/src/main/ets/pages/ExaminerLogin.ets | 7 +- entry/src/main/ets/pages/Index.ets | 38 +++++++---- entry/src/main/ets/pages/UserInfo.ets | 2 +- 7 files changed, 73 insertions(+), 95 deletions(-) diff --git a/entry/src/main/ets/common/service/initable.ts b/entry/src/main/ets/common/service/initable.ts index 2046cdca..937f8925 100644 --- a/entry/src/main/ets/common/service/initable.ts +++ b/entry/src/main/ets/common/service/initable.ts @@ -166,9 +166,9 @@ export async function getDataBaseTable(params,reqParam) { let str='(' map[params.tableName].ACCOUNT_TABLE.columns.map((res,index)=>{ if(map[params.tableName].ACCOUNT_TABLE.columns.length-1==index){ - str+=`"${data[res]||'1'}"` + str+=data[res]?`"${data[res]}"`:'NULL' }else{ - str+=`"${data[res]||'1'}"`+',' + str+=(data[res]?`"${data[res]}"`:'NULL')+',' } }) if(i==res.body[params.tableName].length-1){ diff --git a/entry/src/main/ets/common/utils/TcpClient.ts b/entry/src/main/ets/common/utils/TcpClient.ts index ac7a8371..80bd059c 100644 --- a/entry/src/main/ets/common/utils/TcpClient.ts +++ b/entry/src/main/ets/common/utils/TcpClient.ts @@ -1,7 +1,7 @@ import socket from '@ohos.net.socket'; import buffer from '@ohos.buffer'; -const TAG = '[TcpDemo.TcpClient]' +const TAG = 'socketTag[TcpDemo.TcpClient]' import prompt from '@ohos.prompt' import hilog from '@ohos.hilog'; @@ -18,12 +18,12 @@ export default class TcpClient { this.oppositeIp = tcpOppositeIp this.localIpPort = tcplocalIpPort this.oppositeIpPort = tcpOppositePort - console.log('tcp1111',this.localIp,this.localIpPort,this.oppositeIp,this.oppositeIpPort) + console.log(TAG,'new Tcp',this.localIp,this.localIpPort,this.oppositeIp,this.oppositeIpPort) this.tcp = socket.constructTCPSocketInstance(); } onError(callback?){ this.tcp.on('error', err => { - hilog.info(0x0000, 'testTag', "on error, err:" + JSON.stringify(err)); + console.log(TAG,'tcpOnerror', JSON.stringify(err)) callback&&callback() // this.closeUdp(()=>{ // this.bindUdp() @@ -32,11 +32,11 @@ export default class TcpClient { } rebindTcp(localIp: string, localIpPort:string,oppositeIp: string,oppositeIpPort:string){ return new Promise((resolve, reject)=>{ - this.localIp = localIp this.oppositeIp = oppositeIp this.localIpPort = localIpPort this.oppositeIpPort = oppositeIpPort + console.log(TAG,'tcpreBind', this.localIp,this.localIpPort) let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort), family: 1 }, err => { if (err) { hilog.info(0x0000, 'testTag', "tcpreBinderror:" + JSON.stringify(err)); @@ -57,7 +57,7 @@ export default class TcpClient { } bindTcp() { - console.log('tcpoppositeIp',this.oppositeIp,'localIp',this.localIp) + console.log(TAG,'tcpbind',this.localIp,'localIp',this.localIpPort) return new Promise((resolve,reject)=>{ let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort), family: 1 }, err => { if (err) { @@ -82,8 +82,7 @@ export default class TcpClient { } connectTcp(){ - console.log('testTagtcbpoppositeIp',this.oppositeIp,this.oppositeIpPort,'localIp',this.localIp,this.localIpPort) - console.log('22323') + console.log(TAG,'tcpConnect',this.oppositeIp,'localIp',this.oppositeIpPort) return new Promise((resolve,reject)=>{ let promise = this.tcp.connect({ address: {address: this.oppositeIp, port: parseInt(this.oppositeIpPort), family: 1} , timeout: 6000}); promise.then(() => { @@ -112,7 +111,7 @@ export default class TcpClient { } sendMsg(msg: string) { - console.log('testTagsendoppositeIp',this.oppositeIp) + console.log(TAG,'tcpSend',msg.length,msg) return new Promise((reslove,reject)=>{ let promise = this.tcp.send({ data:msg @@ -123,29 +122,12 @@ export default class TcpClient { reslove(false) }); }) - - // let promise = this.udp.send({ - // data: msg, - // address: { - // // address: '192.168.7.124', - // // port: 30013, - // // address: '192.168.7.124', - // // port: 20022, - // address: this.oppositeIp, - // port: parseInt(this.oppositeIpPort), - // family: 1 - // } - // }); - - // promise.then(() => { - // console.log(`${TAG} udp send success:${msg}`); - // }).catch(err => { - // console.log(`${TAG} udp send fail:${JSON.stringify(err)}`); - // }); } onMessage(callback?) { this.tcp.on('message', value => { + console.log(TAG,'Tcponmessage',value.length,value) + // console.log('messageLengt',,value.message.length)) console.log('testTagtcpmsg') // console.log("on message, message:" + value.message+ ", remoteInfo:" ) @@ -160,39 +142,22 @@ export default class TcpClient { } // callback(value.message) }); - // this.udp.on('message', value => { - // // 收到的是ArrayBuffer 需要进行转换解析 - // if (value) { - // let dataView = new DataView(value.message) - // // console.log(`${TAG} udp message length:${dataView?.byteLength}`); - // let str = "" - // for (let i = 0;i < dataView?.byteLength; ++i) { - // let c = String.fromCharCode(dataView?.getUint8(i)) - // if (c !== "\n") { - // str += c - // } - // } - // console.log(`${TAG} udp on message array buffer:${str}`); - // callback(str) - // }else{ - // callback('') - // } - // - // - // }); } offTcp(callback) { - this.tcp.off('testTagofmessg', callback); + console.log(TAG,'tcpofff') + + this.tcp.off('testTagofmessg', callback); } closeTcp(callback) { return new Promise((reslove,reject)=>{ + console.log(TAG,'tcpClose') let promise = this.tcp.close(); promise.then(() => { - console.log('testTagclose success'); + console.log(TAG,'tcpCloseSuccess') callback() reslove(true) }).catch(err => { - console.log('testTagclose fail'); + console.log(TAG,'tcpClosefailed') reslove(false) }); }) diff --git a/entry/src/main/ets/common/utils/UdpClient.ts b/entry/src/main/ets/common/utils/UdpClient.ts index 8ea74551..d0b4257b 100644 --- a/entry/src/main/ets/common/utils/UdpClient.ts +++ b/entry/src/main/ets/common/utils/UdpClient.ts @@ -17,10 +17,11 @@ import socket from '@ohos.net.socket'; import { Array2Byte } from '../utils/tools' import {getChuankouFn} from '../../common/service/indexService' -const TAG = '[PLC.UdpClient]' +const TAG = 'socketTag[PLC.UdpClient]' import prompt from '@ohos.prompt' import hilog from '@ohos.hilog'; +let num=0 export default class UdpClient { private localIp: string = '' private localIpPort: string = '' @@ -36,39 +37,40 @@ export default class UdpClient { this.localIpPort = udplocalIpPort this.oppositeIpPort = udpOppositeIpPort getChuankouFn() + console.log(TAG,'newUdp') // this.stashFn=()=>{} this.udp = socket.constructUDPSocketInstance(); } rebindUdp(localIp: string, localIpPort: string, oppositeIp: string, oppositeIpPort: string) { + console.log(TAG,'rebindUdp',this.localIp,this.localIpPort) this.localIp = localIp this.oppositeIp = oppositeIp this.localIpPort = localIpPort this.oppositeIpPort = oppositeIpPort - hilog.info(0x0000, 'udpCLient', 'rebind'+this.localIp+this.localIpPort); let promise = this.udp.bind({ address: this.localIp, port: parseInt(this.localIpPort), family: 1 }); promise.then(() => { - console.log(`${TAG}udpCLient udp rebind success`); + globalThis.closeUDPSocket=false + + console.log(`${TAG},udpCLient udp rebind success`); }).catch(err => { - console.log(`${TAG}udpCLient udp rebind failed:${JSON.stringify(err)}`); + console.log(`${TAG},udpCLient udp rebind failed:${JSON.stringify(err)}`); }); } bindUdp() { - console.log('localIp', this.localIp) - console.log('localIpPort', this.localIpPort) - hilog.info(0x0000, 'udpCLient', 'bind'+ this.localIp+this.localIpPort); - + console.log(TAG,'udpbind',this.localIp,this.localIpPort) let promise = this.udp.bind({ // address: '192.168.7.170', port: 20122, family: 1 // address: '192.168.7.170', port: 31013, family: 1 address: this.localIp, port: parseInt(this.localIpPort), family: 1 }); promise.then(() => { + globalThis.closeUDPSocket=false console.log(`${TAG}udpCLient udp bind success`); }).catch(err => { @@ -79,9 +81,7 @@ export default class UdpClient { // this.stashFn=callback?callback:()=>{} } sendMsg(msg) { - console.log('sendsnd01') - hilog.info(0x0000, 'udpCLient', 'send'); - console.log('udpdiushisend') + console.log(TAG,'UdpSend1111',this.oppositeIp,this.oppositeIpPort) let promise = this.udp.send({ data: msg, @@ -96,16 +96,14 @@ export default class UdpClient { } }); promise.then(() => { - console.log(`${TAG}udpCLient udp send success:${msg}`); + console.log(`${TAG}udpCLient udp send success:oppositeIp${this.oppositeIp},oppositeIpPort:${this.oppositeIpPort},localIp:${this.localIp},localIpPort,${this.localIpPort}`); }).catch(err => { - console.log(`${TAG}udpCLient udp send fail:${JSON.stringify(err)}`); + console.log(`${TAG}udpCLient udp send fail:oppositeIp${this.oppositeIp},oppositeIpPort:${this.oppositeIpPort},localIp:${this.localIp},localIpPort,${this.localIpPort}`); }); } onError(callback?){ this.udp.on('error',async err => { - console.log('udpdiushierroring') - hilog.info(0x0000, 'udpCLientonerror', 'error'+ JSON.stringify(err)); - console.log("on error, err:" + JSON.stringify(err)) + console.log(TAG,'udpError',JSON.stringify(err)) await this.bindUdp() await this.sendMsg('111') await this.onMessage(callback) @@ -119,11 +117,8 @@ export default class UdpClient { onMessage(callback?) { this.udp.on('message', value => { - console.log('udpdiushimsg') - + console.log(TAG,'udponmessage') // 收到的是ArrayBuffer 需要进行转换解析 - hilog.info(0x0000, 'udpCLient', 'onmessage'); - globalThis.plcUdpError = false if (value) { @@ -169,10 +164,18 @@ export default class UdpClient { globalThis.messageTimer = setInterval(() => { const lightLineUdp = globalThis.lightLineUdp const isJudge = globalThis.isJudge - setTimeout(() => { + setTimeout(async () => { //程序断开 lightLineUdp?.send(globalThis.plcUdpError ? arrRedBuffer : (isJudge ? arrGreenBugger : arrBlueBuffer)); if (globalThis.plcUdpError) { + num++ + console.log(TAG,'plc udp信号丢失') + // if(num==2){ + // await this.bindUdp() + // await this.sendMsg('111') + // await this.onMessage(callback) + // num=0 + // } prompt.showToast({ message: 'plc udp信号丢失', duration: 2000 @@ -186,10 +189,10 @@ export default class UdpClient { closeUdp(callback) { this.udp.close(err => { - hilog.info(0x0000, 'udpCLient', 'close'); + hilog.info(0x0000,TAG, 'udpCLient', 'close'); if (err) { - hilog.info(0x0000, 'udpCLient', 'closeonerror'); + hilog.info(0x0000,TAG, 'udpCLient', 'closeonerror'); } else { this.udp.getState((err, data) => { diff --git a/entry/src/main/ets/common/utils/UdpClientByCenter.ts b/entry/src/main/ets/common/utils/UdpClientByCenter.ts index bc29fdd6..27074376 100644 --- a/entry/src/main/ets/common/utils/UdpClientByCenter.ts +++ b/entry/src/main/ets/common/utils/UdpClientByCenter.ts @@ -61,6 +61,7 @@ export default class UdpClientByCenter { }); promise.then(() => { + globalThis.closeHeartSocket=false console.log(`${TAG} udp bind success`); }).catch(err => { @@ -77,6 +78,7 @@ export default class UdpClientByCenter { address: this.localIp, port: parseInt(this.localIpPort), family: 1 }); promise.then(() => { + globalThis.closeHeartSocket=false console.log(`${TAG} udp bind success`); }).catch(err => { @@ -182,7 +184,6 @@ export default class UdpClientByCenter { } onMessage(callback,type?) { this.udp.on('message', value => { - console.log('tttttttt') let arr=[] let dataView = new DataView(value.message) for (let i = 0;i < dataView?.byteLength; ++i) { diff --git a/entry/src/main/ets/pages/ExaminerLogin.ets b/entry/src/main/ets/pages/ExaminerLogin.ets index 995a0522..e8a36e37 100644 --- a/entry/src/main/ets/pages/ExaminerLogin.ets +++ b/entry/src/main/ets/pages/ExaminerLogin.ets @@ -71,13 +71,8 @@ export default struct Index { username: this.inputTextArr[0], password: Md5.Instance.get_md5(this.inputTextArr[1]) } - console.log('paramparam', JSON.stringify(globalThis.carInfo)) + console.log('carInfo', JSON.stringify(globalThis.carInfo)) examinerLoginService(param).then(res => { - // this.vocObj.playAudio({ - // type: 1, - // name: 'media_button.wav' - // }) - // this.url='pages/userInfo' router.pushUrl({ url: 'pages/UserInfo', }, router.RouterMode.Single); diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index b912452f..6cc7d1e7 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -1,4 +1,5 @@ // @ts-nocheck +import promptAction from '@ohos.promptAction' import { VideoConfig } from './interfaces' import common from '@ohos.app.ability.common'; import router from '@ohos.router' @@ -86,10 +87,28 @@ struct Index { }) Image($r('app.media.btn_back')).width('14.4%').height('12.2%') .onClick(() => { - if (this.loading) { - return - } - router.back() + promptAction.showDialog({ + title: '提示', + message: '确认是否退出应用', + buttons: [ + { + text: '确认', + color: '#000000', + }, + { + text: '取消', + color: '#000000', + } + ], + }) + .then(data => { + if(data.index==0){ + router.back() + } + }) + .catch(err => { + // reslove(false) + }) }) } } @@ -244,13 +263,6 @@ struct Index { }, 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() { @@ -266,7 +278,9 @@ struct Index { 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) + if(!globalThis.closeHeartSocket){ + globalThis.udpClient2.sendMsg(param, this.context) + } } onPageShow() { diff --git a/entry/src/main/ets/pages/UserInfo.ets b/entry/src/main/ets/pages/UserInfo.ets index 91763253..5720aa28 100644 --- a/entry/src/main/ets/pages/UserInfo.ets +++ b/entry/src/main/ets/pages/UserInfo.ets @@ -253,13 +253,13 @@ struct UserInfo { const faceParam = syssetParams.filter(sys => sys.v_no === '2313') that.FaceOpenStatue =faceParam?.[0]?.v_value=='3'? '1':'0' that.FaceOpenStatue = '0' - console.log('that.FaceOpenStatue',that.FaceOpenStatue) // faceParam?.[0]?.v_value || // 1身份证读卡器 2指纹 3人脸 this.faceFlag=faceParam?.[0]?.v_value ||'0' if(faceParam?.[0]?.v_value=='1'){ that.openDeviceByIDCard() } + console.log('studentRefreshStatue',this.studentRefreshStatue) //0不自动更新 1自动更新(不限次数) 2没有考生更新2次 if (that.studentRefreshStatue == '2') { clearInterval(that.interval)