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', "apiType": 'stageMode',
"buildOption": { "buildOption": {
"externalNativeOptions": { "externalNativeOptions": {
"abiFilters": [
"arm64-v8a",
"armeabi-v7a",
"x86_64"
],
"path": "./src/main/cpp/CMakeLists.txt", "path": "./src/main/cpp/CMakeLists.txt",
"arguments": "", "arguments": "",
"cppFlags": "", "cppFlags": "",

View File

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

View File

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

View File

@ -54,7 +54,7 @@ export async function startRecordVideo(param, td, context, dir, path?, index?) {
} }
// @ts-ignore // @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; const handleId = recordResult.dataInt;
reslove(handleId) reslove(handleId)
} }
@ -181,7 +181,7 @@ interface takePhotoParam {
*/ */
const fileHelper = new FileHelper(); const fileHelper = new FileHelper();
export async function delPic(day,type) { export async function delPic(day, type) {
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(globalThis.context); let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(globalThis.context);
console.info('albumGetAssetsDemoCallback'); console.info('albumGetAssetsDemoCallback');
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 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 albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions);
let albums = await albumList.getAllObjects(); let albums = await albumList.getAllObjects();
for(let i=0;i<=albums.length;i++){ for (let i = 0; i <= albums.length; i++) {
let albumName=albums[i].albumName let albumName = albums[i].albumName
// isSevenDaysAgo(albumName, day) // isSevenDaysAgo(albumName, day)
console.log('albumNamealbumName',albumName) console.log('albumNamealbumName', albumName)
if (isSevenDaysAgo(albumName, day)&&albumName!='jt'&&albumName!='pz') { if (isSevenDaysAgo(albumName, day) && albumName != 'jt' && albumName != 'pz') {
deleteAllFileByPiC(albumName, type) deleteAllFileByPiC(albumName, type)
} }
@ -227,16 +227,17 @@ export async function takePhoto(param, context, dir, flag = 1, callback?) {
return new Promise<takePhotoParam>(async (resolve, reject) => { return new Promise<takePhotoParam>(async (resolve, reject) => {
const time = await getCurrentTime() const time = await getCurrentTime()
const date = time.split(' ')[0] const date = time.split(' ')[0]
let dirName=dir?dir:date let dirName = dir ? dir : date
rtsp_server.getVideoSnapshot(context, video_uri, fileName,dirName, true,async (err, snapResult) => { rtsp_server.getVideoSnapshot(context, video_uri, fileName, dirName, true, async (err, snapResult) => {
if(snapResult.result&&snapResult.errorCode==0){ console.log("zj photo", snapResult.fileSize.toString())
if (snapResult.result && snapResult.errorCode == 0) {
resolve({ resolve({
base64: snapResult.dataString, base64: snapResult.dataString,
name: snapResult.fileName, name: snapResult.fileName,
fileSize: snapResult.fileSize, fileSize: snapResult.fileSize,
errorCode: snapResult.errorCode errorCode: snapResult.errorCode
}) })
}else{ } else {
promptAction.showToast({ promptAction.showToast({
message: `拍照失败`, message: `拍照失败`,
duration: 3000 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(); 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 Want from '@ohos.app.ability.Want'
import promptAction from '@ohos.promptAction' import promptAction from '@ohos.promptAction'
import fileAccess from '@ohos.file.fileAccess'
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl' import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl'
import common from '@ohos.app.ability.common' import common from '@ohos.app.ability.common'
import fs from '@ohos.file.fs' import fs from '@ohos.file.fs'
@ -103,7 +104,7 @@ export default class FileUtil {
}; };
private context: common.UIAbilityContext private context: common.UIAbilityContext
private wantInfos: Want[] private wantInfos: Want[]
private fileAccessHelper: any private fileAccessHelper: fileAccess.FileAccessHelper
//后续文件路径待替换 //后续文件路径待替换
private absolutePath = '/mnt/hmdfs/100/account/device_view/local/files/duolun' private absolutePath = '/mnt/hmdfs/100/account/device_view/local/files/duolun'
private getFilePathList = async (filePath: string, isSdcard: boolean) => { private getFilePathList = async (filePath: string, isSdcard: boolean) => {
@ -127,10 +128,8 @@ export default class FileUtil {
} }
// 检索文件列表 // 检索文件列表
public getSdCardPathList = async () => { public getSdCardPathList = async () => {
//@ts-ignore
this.wantInfos = await fileAccess.getFileAccessAbilityInfo(); this.wantInfos = await fileAccess.getFileAccessAbilityInfo();
const {wantInfos,context} = this; const {wantInfos,context} = this;
//@ts-ignore
const fileAccessHelper = fileAccess.createFileAccessHelper(this.context, this.wantInfos); const fileAccessHelper = fileAccess.createFileAccessHelper(this.context, this.wantInfos);
this.fileAccessHelper = fileAccessHelper; this.fileAccessHelper = fileAccessHelper;
@ -177,7 +176,6 @@ export default class FileUtil {
'ohos.permission.READ_MEDIA', 'ohos.permission.READ_MEDIA',
'ohos.permission.WRITE_MEDIA' 'ohos.permission.WRITE_MEDIA'
]; ];
// @ts-ignore
this.wantInfos = await fileAccess.getFileAccessAbilityInfo(); this.wantInfos = await fileAccess.getFileAccessAbilityInfo();
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager() let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager()
atManager.requestPermissionsFromUser(context, permissions, async (code, result) => { atManager.requestPermissionsFromUser(context, permissions, async (code, result) => {

View File

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

View File

@ -1,5 +1,7 @@
import socket from '@ohos.net.socket'; import socket from '@ohos.net.socket';
import convertxml from '@ohos.convertxml'; import convertxml from '@ohos.convertxml';
import util from '@ohos.util';
import Prompt from '@system.prompt';
class NewTcp { class NewTcp {
private localIp: string = '192.168.7.170' private localIp: string = '192.168.7.170'
@ -7,6 +9,7 @@ class NewTcp {
private oppositeIp: string = '192.168.7.124' private oppositeIp: string = '192.168.7.124'
private oppositeIpPort: string = '20022' private oppositeIpPort: string = '20022'
private tcp: socket.TCPSocket = null private tcp: socket.TCPSocket = null
private cbArr = []
constructor() { constructor() {
this.init() this.init()
@ -24,6 +27,26 @@ class NewTcp {
timeout: 6000 timeout: 6000
}).then(res => { }).then(res => {
console.log('tcp connect success') 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 => { }).catch(err => {
console.log('tcp connect error', err) console.log('tcp connect error', err)
}) })
@ -34,42 +57,19 @@ class NewTcp {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.tcp.send({ data: data }, (err) => { this.tcp.send({ data: data }, (err) => {
if (err) { if (err) {
console.log("zj tcp end error", JSON.stringify(err))
console.log("zj tcp end error", data)
reject(err); reject(err);
} else { } else {
// console.log("zj tcp end success") // console.log("zj tcp end success")
resolve(); resolve();
} }
}); });
}); });
} }
public onMessage(callback) { public onMessage(callback) {
this.tcp.on("message", (value) => { this.cbArr.push(callback)
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('')
}
})
} }
// 重连 // 重连
@ -93,6 +93,42 @@ class NewTcp {
export const NewTcpClient = new 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) => { export const XmlToJson = (result) => {
let xmlOptions = { let xmlOptions = {

View File

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

View File

@ -1,19 +1,20 @@
//@ts-ignore //@ts-ignore
import systemTime from '@ohos.systemDateTime'; import systemTime from '@ohos.systemDateTime';
import { expect } from '@ohos/hypium';
import FileUtil from './File'; import FileUtil from './File';
export function isSevenDaysAgo(date,days=2) {
export function isSevenDaysAgo(date, days = 2) {
const today = new Date(); // 当前日期 const today = new Date(); // 当前日期
const target = new Date(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 diff = today.getTime() - target.getTime(); // 计算两个日期之间的毫秒数差异
const diffDays = diff / (1000 * 60 * 60 * 24); // 将毫秒转换为天数 const diffDays = diff / (1000 * 60 * 60 * 24); // 将毫秒转换为天数
console.info("listFile succeed2",JSON.stringify(diffDays)); console.info("listFile succeed2", JSON.stringify(diffDays));
// 如果差异天数正好是2则原日期是当前日期的前2天 // 如果差异天数正好是2则原日期是当前日期的前2天
console.log('diffDays',diffDays,days) console.log('diffDays', diffDays, days)
return diffDays >= (Number(days) ); return diffDays >= (Number(days));
} }
// export async function writeLog(path,param){ // export async function writeLog(path,param){
// return // return
// const fileUtil = new FileUtil(globalThis.context) // const fileUtil = new FileUtil(globalThis.context)
@ -72,12 +73,12 @@ export function dateVersionFormat(t) {
return year + "." + fill(month) + "." + fill(day) + "." + fill(hours); return year + "." + fill(month) + "." + fill(day) + "." + fill(hours);
} }
enum timeType{ enum timeType {
fulltime = 1 fulltime = 1
} }
//获取当前时间并转化 //获取当前时间并转化
export async function getCurrentTime(type?:timeType):Promise<string> { export async function getCurrentTime(type?: timeType): Promise<string> {
const date = await systemTime.getDate(); const date = await systemTime.getDate();
const year = date.getFullYear(); const year = date.getFullYear();
@ -96,15 +97,15 @@ export async function getCurrentTime(type?:timeType):Promise<string> {
let s = date.getSeconds(); let s = date.getSeconds();
//@ts-ignore //@ts-ignore
s = s < 10 ? '0' + s : s; s = s < 10 ? '0' + s : s;
if(type === 1){ if (type === 1) {
return `${year}${month}${dates}${h}${m}${s}` return `${year}${month}${dates}${h}${m}${s}`
}else{ } else {
return `${year}-${month}-${dates} ${h}:${m}:${s}` 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 date = await systemTime.getDate();
const year = date.getFullYear(); const year = date.getFullYear();
@ -120,19 +121,19 @@ export async function getCurrentHourTime():Promise<string> {
s = s < 10 ? '0' + s : s; s = s < 10 ? '0' + s : s;
let ss = date.getMilliseconds(); let ss = date.getMilliseconds();
let nowSS = '' let nowSS = ''
if(ss < 10){ if (ss < 10) {
//@ts-ignore //@ts-ignore
nowSS = '00' + ss nowSS = '00' + ss
} }
if(ss >= 10 && ss < 100){ if (ss >= 10 && ss < 100) {
//@ts-ignore //@ts-ignore
nowSS = '0' + s 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 //@ts-ignore
const h = parseInt(time / 3600) const h = parseInt(time / 3600)
//@ts-ignore //@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就返回空数组 //判断如果不是数组(就没有length)或者size没有传值size小于1就返回空数组
if (!arr.length || !size || size < 1) return [] if (!arr.length || !size || size < 1) return []
let [start, end, result] = [null, null, []] let [start, end, result] = [null, null, []]
@ -177,7 +177,7 @@ export function deepClone(target) {
return target; return target;
} }
export function stringToASC(str){ export function stringToASC(str) {
const tempStr = str + ''; const tempStr = str + '';
const strArr = tempStr.split(''); const strArr = tempStr.split('');
//@ts-ignore //@ts-ignore
@ -185,7 +185,7 @@ export function stringToASC(str){
} }
export function fillZero (str, len) { export function fillZero(str, len) {
str = str + ''; str = str + '';
if (str.length > len || !len) { if (str.length > len || !len) {
return str return str
@ -200,16 +200,16 @@ export function fillZero (str, len) {
return zeroStr + str; return zeroStr + str;
} }
export function string2Bytes(number, len){ export function string2Bytes(number, len) {
let str = (Math.floor(+number)).toString(2); let str = (Math.floor(+number)).toString(2);
if(str.length > len) { if (str.length > len) {
console.log('数据长度不对~~'); console.log('数据长度不对~~');
return return
} }
var byteString = fillZero(str, len); var byteString = fillZero(str, len);
var arrBytes = new Array(); var arrBytes = new Array();
for (var i = byteString.length; i > 0;) { for (var i = byteString.length; i > 0; ) {
let j = i - 8; let j = i - 8;
if (j < 0) { if (j < 0) {
j = 0 j = 0
@ -227,22 +227,21 @@ export function string2Bytes(number, len){
export function Array2Byte(array) { export function Array2Byte(array) {
var buf = new ArrayBuffer(array.length); var buf = new ArrayBuffer(array.length);
var view = new Uint8Array(buf); 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; view[i] = array[i] & 0xFF;
} }
return view; return view;
} }
//经纬度转换 //经纬度转换
export function convertGpsCoord2 (num){ export function convertGpsCoord2(num) {
const tempNum = Math.floor(num); const tempNum = Math.floor(num);
const du = Math.floor(tempNum / 100); const du = Math.floor(tempNum / 100);
const fen = tempNum % 100 + num - tempNum; const fen = tempNum % 100 + num - tempNum;
return du + fen / 60 return du + fen / 60
} }
export function debounce(fn, delay){ export function debounce(fn, delay) {
// 利用闭包定义定时器id变量存储 // 利用闭包定义定时器id变量存储
let timer = null; let timer = null;
return () => { return () => {
@ -252,4 +251,32 @@ export function debounce(fn, delay){
} }
timer = setTimeout(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; key: string;
value: string; value: string;
}; };
export interface Response {
serialNumber: string
data: string
isForwordHttp: string
}

View File

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

View File

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

View File

@ -346,21 +346,25 @@ export default struct SignDisplayCom {
// getSignal(msg) // getSignal(msg)
// } // }
// }) // })
// 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) => { NewTcpClient.onMessage((msg) => {
console.log("zj msg", msg) console.log("zj msg", msg)
getSignal(msg) getSignal(msg)
}) })
} else {
clearInterval(globalThis.signalTimer)
globalThis.signalTimer = setInterval(() => {
const msgStr = globalThis.msgStr
if (msgStr) {
getSignal(msgStr)
} }
}, 200)
}
}
onPageShow() { onPageShow() {
console.info('SURENJUN', 123) console.info('SURENJUN', 123)

View File

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