fix: 济南后置机方案

This commit is contained in:
wangzhongjie 2025-02-28 10:46:28 +08:00
parent ca44a19722
commit c2a1a9d760
15 changed files with 310 additions and 193 deletions

View File

@ -2,6 +2,11 @@
"apiType": 'stageMode',
"buildOption": {
"externalNativeOptions": {
"abiFilters": [
"arm64-v8a",
"armeabi-v7a",
"x86_64"
],
"path": "./src/main/cpp/CMakeLists.txt",
"arguments": "",
"cppFlags": "",

View File

@ -1,4 +1,3 @@
import { NewTcpClient, XmlToJson } from '../common/utils/new/tcp'
import request from "../common/utils/request"
import tempRequest from '../common/utils/tempRequest'

View File

@ -1,7 +1,8 @@
import { getSyncData } from '../common/service/initable';
import request from '../common/utils/request';
import FileUtil from '../common/utils/File';
import { NewTcpClient, XmlToJson } from '../common/utils/new/tcp';
import { HandleCenterCode, NewTcpClient, XmlToJson } from '../common/utils/new/tcp';
import { PrintStr } from '../common/utils/tools';
let baseHost = globalThis.host;
@ -45,94 +46,122 @@ export default async function writeObjectOutNew(data, filePath): Promise<WR> {
console.info('surenjun', '调用新监管')
let temp
try {
if (jkid === "17C51") {
temp = await request({
host: globalThis.JGHOST,
method: 'post',
//是否是新中心
isNewCenter: true,
xml: true,
url: '/dems_ws/services/TmriOutAccess?wsdl',
data: `<?xml version="1.0"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
>
<SOAP-ENV:Body>
<writeObjectOut xmlns="http://service.es.doron">
<wglb>${wglb}</wglb>
<jkxlh>${jkxlh}</jkxlh>
<glbm>${glbm}</glbm>
<jgbh>${jgbh}</jgbh>
<sjbs>${sjbs}</sjbs>
<data>${JSON.stringify(params.data)}</data>
<file>${JSON.stringify(params.file)}</file>
</writeObjectOut>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>`,
})
} else {
let baseUrl = globalThis.JGHOST ? globalThis.JGHOST : globalThis.host
let key = new Date().getTime()
// 走后置机
let data = {
url: `${baseUrl}/dems_ws/services/TmriOutAccess?wsdl`,
serialNumber: key,
type: 1,
method: "post",
isNewCenter: true,
data: `<?xml version="1.0"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
>
<SOAP-ENV:Body>
<writeObjectOut xmlns="http://service.es.doron">
<wglb>${wglb}</wglb>
<jkxlh>${jkxlh}</jkxlh>
<glbm>${glbm}</glbm>
<jgbh>${jgbh}</jgbh>
<sjbs>${sjbs}</sjbs>
<data>${JSON.stringify(params.data)}</data>
<file>${JSON.stringify(params.file)}</file>
</writeObjectOut>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>`,
contentType: 'text/xml',
isHeartBeat: "0",
}
NewTcpClient.sendMsg(`^#${JSON.stringify(data)}#$`)
NewTcpClient.onMessage((value) => {
console.log("zj value", value)
// 使用正则表达式提取^#和#$之间的JSON数据
const jsonDataMatch = value.match(/\^#(.*?)#\$/);
if (jsonDataMatch && jsonDataMatch[1]) {
try {
const jsonData = JSON.parse(jsonDataMatch[1]);
if (Number(jsonData.serialNumber) === Number(key)) {
temp = XmlToJson(jsonData.data);
}
} catch (error) {
console.error("Failed to parse JSON data:", error);
}
} else {
console.log("No JSON data found between ^# and #$");
}
});
}
// if (jkid === "17C51") {
// temp = await request({
// host: globalThis.JGHOST,
// method: 'post',
// //是否是新中心
// isNewCenter: true,
// xml: true,
// url: '/dems_ws/services/TmriOutAccess?wsdl',
// data: `<?xml version="1.0"?>
// <SOAP-ENV:Envelope
// xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
// xmlns:xsd="http://www.w3.org/2001/XMLSchema"
// xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
// >
// <SOAP-ENV:Body>
// <writeObjectOut xmlns="http://service.es.doron">
// <wglb>${wglb}</wglb>
// <jkxlh>${jkxlh}</jkxlh>
// <glbm>${glbm}</glbm>
// <jgbh>${jgbh}</jgbh>
// <sjbs>${sjbs}</sjbs>
// <data>${JSON.stringify(params.data)}</data>
// <file>${JSON.stringify(params.file)}</file>
// </writeObjectOut>
// </SOAP-ENV:Body>
// </SOAP-ENV:Envelope>`,
// })
// } else {
temp = await getMessageByEnd(params, basic)
console.log("zj result", JSON.stringify(temp))
// }
} catch (e) {
console.log("新监管错误")
console.log("zj 新监管错误")
temp = e
}
console.log("temp message: ", JSON.stringify(temp))
console.log("zj temp message: ", JSON.stringify(temp))
if (filePath) {
await fileUtil.editFile(`${filePath}/wuxi_exam_data.txt`, JSON.stringify(temp) + `\n`);
}
return temp
}
function getMessageByEnd(params, basic) {
return new Promise((resolve, reject) => {
const timeoutId = setTimeout(() => {
PrintStr(params, 100)
// 如果超时,抛出错误
console.log("zj tcp timeout")
reject(new Error("Timeout: No data received within 15 seconds"));
}, 15000);
const {wglb,jkxlh,glbm,jgbh,sjbs} = basic;
let baseUrl = globalThis.JGHOST ? globalThis.JGHOST : globalThis.host
let key = new Date().getTime()
// 走后置机
params.file.param = [{
field: '', data: ""
}]
let data = {
url: `${baseUrl}/dems_ws/services/TmriOutAccess?wsdl`,
serialNumber: key,
type: 1,
method: "post",
isNewCenter: true,
data: `<?xml version="1.0"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
>
<SOAP-ENV:Body>
<writeObjectOut xmlns="http://service.es.doron">
<wglb>${wglb}</wglb>
<jkxlh>${jkxlh}</jkxlh>
<glbm>${glbm}</glbm>
<jgbh>${jgbh}</jgbh>
<sjbs>${sjbs}</sjbs>
<data>${JSON.stringify(params.data)}</data>
<file>${JSON.stringify(params.file)}</file>
</writeObjectOut>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>`,
contentType: 'text/xml',
isHeartBeat: "0",
}
console.log("zj guocheng", JSON.stringify(data))
NewTcpClient.sendMsg(`^#${JSON.stringify(data)}#$`)
let cache = ""
NewTcpClient.onMessage(async (value) => {
console.log("zj onMessage", value)
// 先找到^#和#$开始结束符号
cache += value
let start = cache.indexOf("^#")
let end = cache.indexOf("#$")
if (start !== -1 && end !== -1) {
let message = cache.slice(start + 2, end)
cache = cache.slice(end + 2)
let tempIndex = message.indexOf("^#")
while (tempIndex > -1) {
message = message.slice(tempIndex + 2)
tempIndex = message.indexOf("^#")
}
let result: any = JSON.parse(message)
if (Number(result.serialNumber) === Number(key) && !result.url) {
let temp: any = XmlToJson(result.data)
if (temp.Envelope) {
console.log("zj accept", JSON.stringify(temp))
const msgXml = temp.Envelope.Body.writeObjectOutResponse.return;
const dd = HandleCenterCode(msgXml, true);
clearTimeout(timeoutId);
resolve(dd)
}
}
}
});
})
}
export async function getParams(jkid, drvexam) {

View File

@ -54,7 +54,7 @@ export async function startRecordVideo(param, td, context, dir, path?, index?) {
}
// @ts-ignore
var recordResult = rtsp_server.startRecordVideo(context, video_uri, fileName, date,dir);
var recordResult = rtsp_server.startRecordVideo(context, video_uri, fileName, date, dir);
const handleId = recordResult.dataInt;
reslove(handleId)
}
@ -181,7 +181,7 @@ interface takePhotoParam {
*/
const fileHelper = new FileHelper();
export async function delPic(day,type) {
export async function delPic(day, type) {
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(globalThis.context);
console.info('albumGetAssetsDemoCallback');
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
@ -195,11 +195,11 @@ export async function delPic(day,type) {
};
let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions);
let albums = await albumList.getAllObjects();
for(let i=0;i<=albums.length;i++){
let albumName=albums[i].albumName
for (let i = 0; i <= albums.length; i++) {
let albumName = albums[i].albumName
// isSevenDaysAgo(albumName, day)
console.log('albumNamealbumName',albumName)
if (isSevenDaysAgo(albumName, day)&&albumName!='jt'&&albumName!='pz') {
console.log('albumNamealbumName', albumName)
if (isSevenDaysAgo(albumName, day) && albumName != 'jt' && albumName != 'pz') {
deleteAllFileByPiC(albumName, type)
}
@ -227,16 +227,17 @@ export async function takePhoto(param, context, dir, flag = 1, callback?) {
return new Promise<takePhotoParam>(async (resolve, reject) => {
const time = await getCurrentTime()
const date = time.split(' ')[0]
let dirName=dir?dir:date
rtsp_server.getVideoSnapshot(context, video_uri, fileName,dirName, true,async (err, snapResult) => {
if(snapResult.result&&snapResult.errorCode==0){
let dirName = dir ? dir : date
rtsp_server.getVideoSnapshot(context, video_uri, fileName, dirName, true, async (err, snapResult) => {
console.log("zj photo", snapResult.fileSize.toString())
if (snapResult.result && snapResult.errorCode == 0) {
resolve({
base64: snapResult.dataString,
name: snapResult.fileName,
fileSize: snapResult.fileSize,
errorCode: snapResult.errorCode
})
}else{
} else {
promptAction.showToast({
message: `拍照失败`,
duration: 3000
@ -249,9 +250,10 @@ export async function takePhoto(param, context, dir, flag = 1, callback?) {
})
}
}
export async function deleteAllPicturesFn(){
export async function deleteAllPicturesFn() {
fileHelper.deleteAllPictures();
deleteAllVideos(globalThis.context,photoAccessHelper.AlbumType.USER,photoAccessHelper.AlbumSubtype.VIDEO)
deleteAllVideos(globalThis.context, photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.VIDEO)
}

View File

@ -1,5 +1,6 @@
import Want from '@ohos.app.ability.Want'
import promptAction from '@ohos.promptAction'
import fileAccess from '@ohos.file.fileAccess'
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl'
import common from '@ohos.app.ability.common'
import fs from '@ohos.file.fs'
@ -103,7 +104,7 @@ export default class FileUtil {
};
private context: common.UIAbilityContext
private wantInfos: Want[]
private fileAccessHelper: any
private fileAccessHelper: fileAccess.FileAccessHelper
//后续文件路径待替换
private absolutePath = '/mnt/hmdfs/100/account/device_view/local/files/duolun'
private getFilePathList = async (filePath: string, isSdcard: boolean) => {
@ -127,10 +128,8 @@ export default class FileUtil {
}
// 检索文件列表
public getSdCardPathList = async () => {
//@ts-ignore
this.wantInfos = await fileAccess.getFileAccessAbilityInfo();
const {wantInfos,context} = this;
//@ts-ignore
const fileAccessHelper = fileAccess.createFileAccessHelper(this.context, this.wantInfos);
this.fileAccessHelper = fileAccessHelper;
@ -177,7 +176,6 @@ export default class FileUtil {
'ohos.permission.READ_MEDIA',
'ohos.permission.WRITE_MEDIA'
];
// @ts-ignore
this.wantInfos = await fileAccess.getFileAccessAbilityInfo();
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager()
atManager.requestPermissionsFromUser(context, permissions, async (code, result) => {

View File

@ -305,24 +305,24 @@ export default class UdpClientByCenter {
console.info('surenjun', 'getUDP关闭udp message监听事件 成功')
}
message_1Fn = (value) => {
message_1Fn = (strachArr) => {
let callback = this.onMessage_1Callback
// 收到的是ArrayBuffer 需要进行转换解析
this.plcUdpError = false
if (value) {
let dataView = new DataView(value.message)
let str = ""
for (let i = 0; i < dataView?.byteLength; ++i) {
let c = String.fromCharCode(dataView?.getUint8(i))
if (c !== "\n") {
str += c
}
}
let strachArr = str.split(',')
if (strachArr[0] != '#DN_GD') {
return
}
if (strachArr) {
// let dataView = new DataView(value.message)
// let str = ""
// for (let i = 0; i < dataView?.byteLength; ++i) {
// let c = String.fromCharCode(dataView?.getUint8(i))
// if (c !== "\n") {
// str += c
// }
// }
//
// let strachArr = str.split(',')
// if (strachArr[0] != '#DN_GD') {
// return
// }
strachArr[28] = globalThis.chuankoMsg || strachArr[28]

View File

@ -1,5 +1,7 @@
import socket from '@ohos.net.socket';
import convertxml from '@ohos.convertxml';
import util from '@ohos.util';
import Prompt from '@system.prompt';
class NewTcp {
private localIp: string = '192.168.7.170'
@ -7,6 +9,7 @@ class NewTcp {
private oppositeIp: string = '192.168.7.124'
private oppositeIpPort: string = '20022'
private tcp: socket.TCPSocket = null
private cbArr = []
constructor() {
this.init()
@ -24,6 +27,26 @@ class NewTcp {
timeout: 6000
}).then(res => {
console.log('tcp connect success')
this.tcp.on("message", (value) => {
if (value) {
let decoder = util.TextDecoder.create()
let message = decoder.decodeWithStream(new Uint8Array(value.message))
let strArr = message.split(',')
// 获取档位信息
strArr[28] = globalThis.chuankoMsg || '0'
globalThis.udpClient.getCurrentMessage = strArr.toString()
this.cbArr.forEach(cb => {
cb && cb(strArr.toString())
})
// 超时15秒打印信息
} else {
this.cbArr.forEach(cb => {
cb && cb("")
})
}
})
}).catch(err => {
console.log('tcp connect error', err)
})
@ -34,42 +57,19 @@ class NewTcp {
return new Promise((resolve, reject) => {
this.tcp.send({ data: data }, (err) => {
if (err) {
console.log("zj tcp end error", JSON.stringify(err))
console.log("zj tcp end error", data)
reject(err);
} else {
// console.log("zj tcp end success")
resolve();
}
});
});
}
public onMessage(callback) {
this.tcp.on("message", (value) => {
if (value) {
let dataView = new DataView(value.message)
let str = ""
for (let i = 0; i < dataView?.byteLength; ++i) {
let c = String.fromCharCode(dataView?.getUint8(i))
if (c !== "\n") {
str += c
}
}
let strachArr = str.split(',')
if (strachArr[0] != '#DN_GD') {
return
}
// console.log(`udp222 on message array buffer:${str}`);
strachArr[28] = globalThis.chuankoMsg || '0'
const newArr = JSON.parse(JSON.stringify(strachArr))
callback && callback(newArr.toString())
} else {
callback && callback('')
}
})
this.cbArr.push(callback)
}
// 重连
@ -93,6 +93,42 @@ class NewTcp {
export const NewTcpClient = new NewTcp()
export const HandleCenterCode = (msgXml, isNewCenter) => {
//新监管
if (isNewCenter) {
const msg = JSON.parse(msgXml);
const result = msg?.data[0]?.result;
if (result) {
const {code,message,retval} = result
if (code != '1') {
const rMessage = decodeURIComponent(message as string)
Prompt.showToast({
message: rMessage,
duration: 3000
});
return { code, message }
} else {
return { code, keystr: retval }
}
}
}
//正则匹配code message字段
const [code, message, keystr] = [/<code>(.*)<\/code>/i, /<message>(.*)<\/message>/i, /<keystr>(.*)<\/keystr>/i].map(pattern => {
const patternArr = pattern.exec(msgXml);
return patternArr && patternArr[1]
});
if (code != '1') {
Prompt.showToast({
message: decodeURIComponent(message as string),
duration: 3000
});
return { code, message: decodeURIComponent(message) }
} else {
return { code, keystr, message }
}
}
export const XmlToJson = (result) => {
let xmlOptions = {

View File

@ -161,7 +161,7 @@ function xmlToJson(result, url) {
}
//处理中心服务code
function handleCenterCode(msgXml, isNewCenter) {
function handleCenterCode(msgXml, isNewCenter) {
//新监管
if (isNewCenter) {
const msg = JSON.parse(msgXml);

View File

@ -1,19 +1,20 @@
//@ts-ignore
import systemTime from '@ohos.systemDateTime';
import { expect } from '@ohos/hypium';
import FileUtil from './File';
export function isSevenDaysAgo(date,days=2) {
export function isSevenDaysAgo(date, days = 2) {
const today = new Date(); // 当前日期
const target = new Date(date); // 需要判断的日期
console.info("listFile succeed1",JSON.stringify(target));
console.info("listFile succeed1", JSON.stringify(target));
const diff = today.getTime() - target.getTime(); // 计算两个日期之间的毫秒数差异
const diffDays = diff / (1000 * 60 * 60 * 24); // 将毫秒转换为天数
console.info("listFile succeed2",JSON.stringify(diffDays));
console.info("listFile succeed2", JSON.stringify(diffDays));
// 如果差异天数正好是2则原日期是当前日期的前2天
console.log('diffDays',diffDays,days)
return diffDays >= (Number(days) );
console.log('diffDays', diffDays, days)
return diffDays >= (Number(days));
}
// export async function writeLog(path,param){
// return
// const fileUtil = new FileUtil(globalThis.context)
@ -52,7 +53,7 @@ function fill(value: number) {
return (value > 9 ? '' : '0') + value;
}
export function dateFormat(t) {
export function dateFormat(t) {
let year = t.getFullYear()
let month = t.getMonth() + 1
let day = t.getDate()
@ -62,7 +63,7 @@ export function dateFormat(t) {
return year + "-" + fill(month) + "-" + fill(day) + " " + fill(hours) + ":" + fill(minutes) + ":" + fill(seconds);
}
export function dateVersionFormat(t) {
export function dateVersionFormat(t) {
let year = t.getFullYear()
let month = t.getMonth() + 1
let day = t.getDate()
@ -72,12 +73,12 @@ export function dateVersionFormat(t) {
return year + "." + fill(month) + "." + fill(day) + "." + fill(hours);
}
enum timeType{
enum timeType {
fulltime = 1
}
//获取当前时间并转化
export async function getCurrentTime(type?:timeType):Promise<string> {
export async function getCurrentTime(type?: timeType): Promise<string> {
const date = await systemTime.getDate();
const year = date.getFullYear();
@ -96,15 +97,15 @@ export async function getCurrentTime(type?:timeType):Promise<string> {
let s = date.getSeconds();
//@ts-ignore
s = s < 10 ? '0' + s : s;
if(type === 1){
if (type === 1) {
return `${year}${month}${dates}${h}${m}${s}`
}else{
} else {
return `${year}-${month}-${dates} ${h}:${m}:${s}`
}
}
//获取时分秒毫秒
export async function getCurrentHourTime():Promise<string> {
export async function getCurrentHourTime(): Promise<string> {
const date = await systemTime.getDate();
const year = date.getFullYear();
@ -120,19 +121,19 @@ export async function getCurrentHourTime():Promise<string> {
s = s < 10 ? '0' + s : s;
let ss = date.getMilliseconds();
let nowSS = ''
if(ss < 10){
if (ss < 10) {
//@ts-ignore
nowSS = '00' + ss
}
if(ss >= 10 && ss < 100){
if (ss >= 10 && ss < 100) {
//@ts-ignore
nowSS = '0' + s
}
return `${h}${m}${s}${nowSS||ss}`
return `${h}${m}${s}${nowSS || ss}`
}
//时间戳转日期
export function formatTime(time:number):string {
export function formatTime(time: number): string {
//@ts-ignore
const h = parseInt(time / 3600)
//@ts-ignore
@ -146,9 +147,8 @@ export function formatTime(time:number):string {
}
// 根据指定个数分割数组
export function chunkArr (arr, size:number) {
export function chunkArr(arr, size: number) {
//判断如果不是数组(就没有length)或者size没有传值size小于1就返回空数组
if (!arr.length || !size || size < 1) return []
let [start, end, result] = [null, null, []]
@ -166,7 +166,7 @@ export function deepClone(target) {
if (typeof target === 'object' && target !== 'null') {
// 创建容器
const result = Array.isArray(target) ? [] : {};
const keys = Object.keys(target); //注解二
const keys = Object.keys(target); //注解二
// Object.keys()会过滤掉原型链上的属性
keys.forEach(key => {
result[key] = deepClone(target[key])
@ -177,7 +177,7 @@ export function deepClone(target) {
return target;
}
export function stringToASC(str){
export function stringToASC(str) {
const tempStr = str + '';
const strArr = tempStr.split('');
//@ts-ignore
@ -185,7 +185,7 @@ export function stringToASC(str){
}
export function fillZero (str, len) {
export function fillZero(str, len) {
str = str + '';
if (str.length > len || !len) {
return str
@ -200,16 +200,16 @@ export function fillZero (str, len) {
return zeroStr + str;
}
export function string2Bytes(number, len){
let str = (Math.floor(+number)).toString(2);
if(str.length > len) {
export function string2Bytes(number, len) {
let str = (Math.floor(+number)).toString(2);
if (str.length > len) {
console.log('数据长度不对~~');
return
}
var byteString = fillZero(str, len);
var arrBytes = new Array();
for (var i = byteString.length; i > 0;) {
for (var i = byteString.length; i > 0; ) {
let j = i - 8;
if (j < 0) {
j = 0
@ -227,22 +227,21 @@ export function string2Bytes(number, len){
export function Array2Byte(array) {
var buf = new ArrayBuffer(array.length);
var view = new Uint8Array(buf);
for (var i = 0; i != array.length; ++i)
{
for (var i = 0; i != array.length; ++i) {
view[i] = array[i] & 0xFF;
}
return view;
}
//经纬度转换
export function convertGpsCoord2 (num){
export function convertGpsCoord2(num) {
const tempNum = Math.floor(num);
const du = Math.floor(tempNum / 100);
const du = Math.floor(tempNum / 100);
const fen = tempNum % 100 + num - tempNum;
return du + fen / 60
}
export function debounce(fn, delay){
export function debounce(fn, delay) {
// 利用闭包定义定时器id变量存储
let timer = null;
return () => {
@ -252,4 +251,32 @@ export function debounce(fn, delay){
}
timer = setTimeout(fn, delay);
}
};
}
;
// 循环打印一个字符串
/**
*
* @param {string} value -
* @param {number} length -
*/
export function PrintStr(value, length) {
// 参数校验
if (typeof value !== 'string' || typeof length !== 'number' || length <= 0) {
console.error('参数无效value 必须是字符串length 必须是正整数');
return;
}
// 如果字符串长度小于等于分段长度,直接打印整个字符串
if (value.length <= length) {
console.log(value);
return;
}
// 分段打印
for (let i = 0; i < value.length; i += length) {
// 截取当前段
const segment = value.slice(i, i + length);
console.log("zj PrintStr", segment);
}
}

View File

@ -2,3 +2,10 @@ export type SignalDataType = {
key: string;
value: string;
};
export interface Response {
serialNumber: string
data: string
isForwordHttp: string
}

View File

@ -1,5 +1,8 @@
import TopLogo from './compontents/TopLogo';
import prompt from '@ohos.prompt';
import TopLogo from './compontents/TopLogo'
import ethernet from '@ohos.net.ethernet';
import prompt from '@ohos.prompt'
import { upDateTableByArray } from '../common/service/initable'
import { getSyncData } from '../common/service/initable'
import FileUtil from '../common/utils/File';
import common from '@ohos.app.ability.common';
import { GlobalConfig } from '../config';
@ -100,7 +103,6 @@ struct Index {
}
fileUtil.addFile(`${folderPath}/ipConfig.txt`, JSON.stringify(param), '')
// upDateTableByArray('IpConfigTable',[])
// @ts-ignore
ethernet.setIfaceConfig("eth0", {
mode: 0,
ipAddr: this.inputTextList1[9],
@ -170,7 +172,7 @@ struct Index {
this.inputTextList1[3] = result.centerPort
}
//@ts-ignore
ethernet.getIfaceConfig("eth0", (error, value) => {
if (error) {
// that.errorMsg='error'

View File

@ -24,6 +24,7 @@ import errorMsgDialog from './compontents/errorMsgDialog';
import imageBtn from './compontents/imageBtn';
import FileUtil from '../common/utils/File';
import DB, { ColumnType } from '../common/database/DbSql';
import { NewTcpClient } from '../common/utils/new/tcp';
@Entry
@Component
@ -167,8 +168,6 @@ struct UserInfo {
)
private filePhoto: FilePhoto
private avPlayer
private AccountTable = new AccountTable(() => {
}, USER);
private context = getContext(this) as common.UIAbilityContext;
private labelBlocks = [
{ label: '考生姓名', key: 'xm' },
@ -919,7 +918,12 @@ struct UserInfo {
resolve(true)
return
}
let plcValue = globalThis.udpClient.getCurrentMessage();
// let plcValue = ""
let plcValue = globalThis.udpClient.getCurrentMessage;
// NewTcpClient.onMessage((value) => {
// console.log(value)
// plcValue = value
// })
const msgArr = plcValue.split(',') || ''
const mkg = msgArr[14];
const fdjzs = msgArr[25];

View File

@ -346,20 +346,24 @@ export default struct SignDisplayCom {
// getSignal(msg)
// }
// })
NewTcpClient.onMessage((msg) => {
console.log("zj msg", msg)
getSignal(msg)
})
} else {
clearInterval(globalThis.signalTimer)
globalThis.signalTimer = setInterval(() => {
const msgStr = globalThis.msgStr
if (msgStr) {
getSignal(msgStr)
}
}, 200)
// NewTcpClient.onMessage((msg) => {
// console.log("zj msg", msg)
// getSignal(msg)
// })
}
// clearInterval(globalThis.signalTimer)
// globalThis.signalTimer = setInterval(() => {
// const msgStr = globalThis.msgStr
// if (msgStr) {
// getSignal(msgStr)
//
// }
// }, 200)
NewTcpClient.onMessage((msg) => {
console.log("zj msg", msg)
getSignal(msg)
})
}
onPageShow() {

View File

@ -239,7 +239,9 @@ export default class Judge {
if (stachArr[0] != '#DN_GD' || isUdpEnd) {
return
}
const plcData = await getPlcData(msg);
console.log("zj getPlcData start")
const plcData = await this.getPlcData(msg);
console.log("zj getPlcData end")
// 4.过程数据
await fileLog.setExamJudgeData(plcData)
//检测到有无锡所设备接入,需要发送特定的数据,供检测
@ -257,6 +259,7 @@ export default class Judge {
if (!isExamEnd) {
await examJudgeRealExam(plcData)
}
console.log("zj plcData", plcData.toString())
const udpIndex = globalThis.udpIndex;
let [prevJd, preWd] = [0, 0]
if (udpIndex % 5 === 0 && !isUdpEnd) {
@ -1830,7 +1833,8 @@ export default class Judge {
// });
NewTcpClient.onMessage((msg) => {
console.info('socketTag[PLC.UdpClient]', '收到udp回调数据')
handleUdp(msg)
console.log("zj msg1", msg)
this.handleUdp(msg)
const udpIndex = globalThis.udpIndex;
if (udpIndex % 5 === 0) {
handDistance();