diff --git a/entry/src/main/ets/common/utils/TcpRequest.ts b/entry/src/main/ets/common/utils/TcpRequest.ts deleted file mode 100644 index 8e7d7472..00000000 --- a/entry/src/main/ets/common/utils/TcpRequest.ts +++ /dev/null @@ -1,196 +0,0 @@ -import socket from '@ohos.net.socket'; -import util from '@ohos.util'; - - -interface RequestKey { - time: string -} - -interface RequestCallback { - url: string - type: number - resolve: Function - reject: Function - timeout: number -} - -interface RequestParams { - method: string - data: object - type: 0 | 1 - contentType: string - timeout: number -} - -interface Response { - serialNumber: string - data: string - isForwordHttp: string -} - -let tag = "tcp request" - -class TcpUtils { - private static instance: TcpUtils - private socket: socket.TCPSocket = socket.constructTCPSocketInstance() - private requestMap: Map = new Map() - private tick: number - private heartbeat: number - private cache: string = '' - private fileUtil = new FileUtil(AppStorage.get('context')) - private path = "" - - constructor() { - if (!TcpUtils.instance) { - TcpUtils.instance = this - } - return TcpUtils.instance - } - - async init() { - this.path = await this.fileUtil.initFolder('/config/tcpRequest') - this.socket.on("message", (res) => { - let decoder = util.TextDecoder.create() - let message = decoder.decodeWithStream(new Uint8Array(res.message)) - console.log(tag, "on message", message) - this.cache += message - let start = this.cache.indexOf("^#") - let end = this.cache.indexOf("#$") - try { - if (start !== -1 && end !== -1) { - let message = this.cache.slice(start + 2, end) - this.cache = this.cache.slice(end + 2) - let tempIndex = message.indexOf("^#") - while (tempIndex > -1) { - message = message.slice(tempIndex + 2) - tempIndex = message.indexOf("^#") - } - let result: Response = JSON.parse(message) - let key = result.serialNumber - let data = result.data - let isSuccess = result.isForwordHttp === "1" - console.log(tag, "complete message") - let item = this.requestMap.get(key) - console.log(tag, "============", item?.url) - if (this.requestMap.get(key)?.type === 0) { - console.log(tag, "resolve message") - if (isSuccess) { - item?.resolve(JSON.parse(data)) - } else { - item?.reject({ - code: -1, - message: data || "request failed" - }) - } - } else { - console.log(tag, "resolve message") - if (isSuccess) { - item?.resolve(data) - } else { - item?.reject({ - code: -1, - message: data || "request failed" - }) - } - } - this.requestMap.delete(key) - } - } catch (e) { - console.log(tag, "解析相应失败", JSON.stringify(e)) - } - }) - - this.loop() - return this.socket.connect({ - address: { address: "172.37.55.191", port: 19998 } - }).then(() => { - this.heartbeat = setInterval(() => { - this.send("heart", JSON.stringify({ - isHeartBeat: 1 - }), false) - }, 1000 * 6) - console.log(tag, "connect success") - }).catch(err => { - console.log(tag, JSON.stringify(err)) - }) - } - - request(url: string, option: RequestParams, resolve, reject) { - let key = new Date().getTime() - this.requestMap.set(key + "", { - url, - resolve, - reject, - timeout: option.timeout, - type: option.type, - }) - - let message = { - url, - serialNumber: key, - type: option.type, - method: option.method, - data: option.data, - contentType: option.contentType, - isHeartBeat: "0", - } - - this.send(key + "", JSON.stringify(message)) - } - - destroy() { - clearInterval(this.tick) - clearInterval(this.heartbeat) - } - - private loop() { - this.tick = setInterval(() => { - let now = new Date().getTime() - this.requestMap.forEach((value, key) => { - if (now - Number(key) >= value.timeout) { - console.log("tcp request timeout url: ", value.url) - console.log("tcp request timeout key: ", key) - value.reject({ - message: "tcp request timeout", - code: 2300028 - }) - this.requestMap.delete(key) - } - }) - }, 100) - } - - private async send(key: string, message: string, log: boolean = true) { - if (log) { - console.log(tag, 'send', message) - } - this.fileUtil.addFile(this.path + 'temp.txt', `^#${message}#$`) - this.socket.send({ - data: `^#${message}#$` - }).then(() => { - if (log) { - console.log(tag, 'send success') - } - }).catch(async err => { - if (key !== "heart") { - console.log("tcp request send failed", this.requestMap.get(key).url) - this.requestMap.get(key).reject({ - message: "tcp request send failed", - code: 2300007 - }) - } - await this.socket.close() - this.socket = socket.constructTCPSocketInstance() - await this.socket.connect({ - address: { address: "172.37.55.191", port: 19998 } - }).then(res => { - console.log("tcp request reconnect success", JSON.stringify(res)) - }).catch(err => { - console.log("tcp request reconnect failed", JSON.stringify(err)) - }) - console.log(tag, JSON.stringify(err)) - }) - } -} - -export const tcpUtil = new TcpUtils() \ No newline at end of file diff --git a/entry/src/main/ets/common/utils/TimeUtils.ets b/entry/src/main/ets/common/utils/TimeUtils.ets deleted file mode 100644 index 74520faf..00000000 --- a/entry/src/main/ets/common/utils/TimeUtils.ets +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -const TEN = 10; // 这是数字10 -const SIXTY = 60; // 时间进制 -const THOUSAND = 1000; // 这是数字1000 - -export function tempNum(num: number): string { - if (num < TEN) { - return '0' + num; - } - return num.toString(); -} - -export function getDurationString(duration: number): string { - let hour = Math.floor(duration / (THOUSAND * SIXTY * SIXTY)); - let minute = Math.floor((duration - hour * (THOUSAND * SIXTY * SIXTY)) / (THOUSAND * SIXTY)); - let second = Math.floor( - (duration - hour * (THOUSAND * SIXTY * SIXTY) - minute * (SIXTY * THOUSAND)) / THOUSAND - ); - if (hour > 0) { - return `${tempNum(hour)}:${tempNum(minute)}:${tempNum(second)}`; - } - return `${tempNum(minute)}:${tempNum(second)}`; -} diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index 17c7e8ac..7f8ef164 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -1,16 +1,14 @@ import UIAbility from '@ohos.app.ability.UIAbility'; import hilog from '@ohos.hilog'; import window from '@ohos.window'; -import relationalStore from '@ohos.data.relationalStore' -import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl'; -import { GlobalConfig } from '../config/global' -import { tcpUtil } from '../common/utils/TcpRequest'; +import { GlobalConfig } from '../config/global'; import { initTable } from '../common/service/initable'; import { centerUDPClient, lightUDPClient, objUDPClient } from '../utils/UdpUtils'; import Want from '@ohos.app.ability.Want'; import AbilityConstant from '@ohos.app.ability.AbilityConstant'; import { BaseInfoType, CarInfoType, ExaminerInfoType } from '../model'; import DB from '../utils/DbSql'; +import { tcpUtil } from '../utils/TcpRequest'; export default class EntryAbility extends UIAbility { async onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { diff --git a/entry/src/main/ets/model/Common.ets b/entry/src/main/ets/model/Common.ets index 1a242a92..ae5438c5 100644 --- a/entry/src/main/ets/model/Common.ets +++ b/entry/src/main/ets/model/Common.ets @@ -114,4 +114,22 @@ export interface CarInfoType { } // TODO -export interface ExaminerInfoType {} \ No newline at end of file +export interface ExaminerInfoType {} + +// 一些运行配置 +export interface EnvironmentConfigurationType { + udplocalIp?: string, + udplocalIpPort?: string, + udpOppositeIp?: string, + udpOppositeIpPort?: string, + tcplocalIp?: string, + tcplocalIpPort?: string, + tcpOppositeIp?: string, + tcpOppositePort?: string, + netMask?: string, + gateway?: string, + dnsServers?: string, + centerIp?: string, + centerPort?: string, + terType?: string +} \ No newline at end of file diff --git a/entry/src/main/ets/model/TerminalInfos.ets b/entry/src/main/ets/model/TerminalInfos.ets index 32e51b16..e69de29b 100644 --- a/entry/src/main/ets/model/TerminalInfos.ets +++ b/entry/src/main/ets/model/TerminalInfos.ets @@ -1,15 +0,0 @@ -export interface NetworkConfigType { - udplocalIp: string; - udplocalIpPort: string; - udpOppositeIp: string; - udpOppositeIpPort: string; - tcplocalIp: string; - tcplocalIpPort: string; - tcpOppositeIp: string; - tcpOppositePort: string; - netMask: string; - gateway: string; - dnsServers: string; - centerIp: string; - centerPort: string; -} \ No newline at end of file diff --git a/entry/src/main/ets/pages/TerminalInfos.ets b/entry/src/main/ets/pages/TerminalInfos.ets index af7f80ed..b2ef7c15 100644 --- a/entry/src/main/ets/pages/TerminalInfos.ets +++ b/entry/src/main/ets/pages/TerminalInfos.ets @@ -3,9 +3,9 @@ import ethernet from '@ohos.net.ethernet'; import common from '@ohos.app.ability.common'; import { GlobalConfig } from '../config'; -import { NetworkConfigType } from '../model/TerminalInfos'; import Prompt from '@system.prompt'; import FileUtils from '../utils/FileUtils'; +import { EnvironmentConfigurationType } from '../model/Common'; @Entry @@ -17,20 +17,20 @@ struct Index { // @State textList2: string[] = [] @State ratio: number = 1700 / 960 @State inputFontSize: number = 12 //12 - // - // @State inputTextList1: string[] = ['192.168.7.170','8084','192.168.7.170','20122','255.255.255.0','192.168.7.1','','','114.114.114.114','112.80.35.83','11055' + - // '',] - // @State inputTextList2: string[] = ['192.168.7.124','20022'] - // @State inputTextList1: string[] = ['172.37.55.191','18782','192.168.7.1','8082','255.255.255.0','192.168.7.170','114.114.114.114','192.168.7.124','20022','172.37.55.59','20122'] @State inputTextList1: string[] = ['172.37.55.191', '18782', '172.37.55.191', '8082', '255.255.255.0', '192.168.7.1', '114.114.114.114', '192.168.7.124', '20022', '192.168.7.170', '20122'] - // @State inputTextList2: string[] = [] - // 112.80.35.83 11052 + // + // @State inputTextList1: string[] = ['192.168.7.170','8084','192.168.7.170','20122','255.255.255.0','192.168.7.1','','','114.114.114.114','112.80.35.83','11055' + + // '',] + // @State inputTextList2: string[] = ['192.168.7.124','20022'] // @State inputTextList1: string[] = ['192.168.36.2','8084','192.168.36.200','20122','255.255.255.0','192.168.36.1','','','114.114.114.114','192.168.36.139','8000'] @State @Watch('outClick') outFlag: boolean = false; + // @State inputTextList2: string[] = [] + // 112.80.35.83 11052 scroller: Scroller = new Scroller() + private fileUtil: FileUtils // @State inputTextList2: string[] = ['192.168.36.139','20022'] private context = getContext(this) as common.UIAbilityContext; @@ -85,9 +85,8 @@ struct Index { Column() { Image($r('app.media.terminal_save')).width('20.5%').height('74%').onClick(async () => { - const fileUtil = new FileUtils(this.context) - const folderPath = await fileUtil.initFolder(`/config`); - const param: NetworkConfigType = { + const folderPath = await this.fileUtil.initFolder(`/config`); + const param: EnvironmentConfigurationType = { udplocalIp: this.inputTextList1[9], udplocalIpPort: this.inputTextList1[10], udpOppositeIp: this.inputTextList1[7], @@ -102,7 +101,8 @@ struct Index { centerIp: this.inputTextList1[2], centerPort: this.inputTextList1[3] } - fileUtil.addFile(`${folderPath}/ipConfig.txt`, JSON.stringify(param), '') + this.fileUtil.addFile(`${folderPath}/ipConfig.txt`, JSON.stringify(param)) + AppStorage.setOrCreate("EnvironmentConfiguration", param) // upDateTableByArray('IpConfigTable',[]) ethernet.setIfaceConfig("eth0", { mode: 0, @@ -149,12 +149,12 @@ struct Index { } async aboutToAppear() { - const fileUtil = new FileUtils(this.context) - const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt'); + this.fileUtil = new FileUtils(this.context) + const data = await this.fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt'); if (data === '' || data === undefined) { } else { - // TODO - const result: ESObject = JSON.parse(data) + const result: EnvironmentConfigurationType = JSON.parse(data) + AppStorage.setOrCreate("EnvironmentConfiguration", result) this.inputTextList1[9] = result.udplocalIp this.inputTextList1[10] = result.udplocalIpPort this.inputTextList1[7] = result.udpOppositeIp diff --git a/entry/src/main/ets/pages/VideoConfig.ets b/entry/src/main/ets/pages/VideoConfig.ets index 7ab65c15..cf8dc6f1 100644 --- a/entry/src/main/ets/pages/VideoConfig.ets +++ b/entry/src/main/ets/pages/VideoConfig.ets @@ -625,7 +625,7 @@ struct Index { this.oldParam = JSON.parse(JSON.stringify(this.param)) this.videoArr = JSON.parse(JSON.stringify(this.videoArr)) const folderPath = await this.fileUtil.initFolder(`/config`); - this.fileUtil.addFile(`${folderPath}/config3.txt`, JSON.stringify(this.param), 'overWrite') + this.fileUtil.addFile(`${folderPath}/config3.txt`, JSON.stringify(this.param)) this.showFlag = false } } \ No newline at end of file