feat_surenjun #60
@ -26,7 +26,6 @@ export async function writeObjectOut(params,filePath?:string): Promise<WR> {
 | 
				
			|||||||
  if (singlePlay) {
 | 
					  if (singlePlay) {
 | 
				
			||||||
    return {code:1}
 | 
					    return {code:1}
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					 | 
				
			||||||
  //获取监管接口地址路径
 | 
					  //获取监管接口地址路径
 | 
				
			||||||
  if (!globalThis.JGPATH) {
 | 
					  if (!globalThis.JGPATH) {
 | 
				
			||||||
    const syssetParams = await getSyncData('MA_SYSSET') || [];
 | 
					    const syssetParams = await getSyncData('MA_SYSSET') || [];
 | 
				
			||||||
@ -47,7 +46,11 @@ export async function writeObjectOut(params,filePath?:string): Promise<WR> {
 | 
				
			|||||||
    return await writeObjectOutNew(params,filePath)
 | 
					    return await writeObjectOutNew(params,filePath)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  drvexam.zp = drvexam.zp === undefined ? undefined : encodeURIComponent( drvexam.zp)
 | 
					  drvexam.zp = drvexam.zp === undefined ? undefined : encodeURIComponent( drvexam.zp)
 | 
				
			||||||
  const drvexamArrs = Reflect.ownKeys(drvexam).map((key: string) => (`<${key}>${drvexam[key]}</${key}>`));
 | 
					
 | 
				
			||||||
 | 
					  const drvexamArrs = Reflect.ownKeys(drvexam)
 | 
				
			||||||
 | 
					    .filter(dKey => drvexam[dKey] != undefined)
 | 
				
			||||||
 | 
					    .map((key: string) => (
 | 
				
			||||||
 | 
					    `<${key}>${drvexam[key]}</${key}>`));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if(filePath){
 | 
					  if(filePath){
 | 
				
			||||||
    const fileUtil = new FileUtil(globalThis.context);
 | 
					    const fileUtil = new FileUtil(globalThis.context);
 | 
				
			||||||
 | 
				
			|||||||
@ -289,27 +289,27 @@ export async function setJudgeUdp() {
 | 
				
			|||||||
  let udpIndex = 0;
 | 
					  let udpIndex = 0;
 | 
				
			||||||
  let currentUdpIndex = 0;
 | 
					  let currentUdpIndex = 0;
 | 
				
			||||||
  let judgeUdpTimer
 | 
					  let judgeUdpTimer
 | 
				
			||||||
  clearInterval(judgeUdpTimer)
 | 
					  clearInterval(globalThis.judgeUdpTimer)
 | 
				
			||||||
  judgeUdpTimer = setInterval(() => {
 | 
					  globalThis.judgeUdpTimer = setInterval(() => {
 | 
				
			||||||
    udpIndex += 1;
 | 
					    udpIndex += 1;
 | 
				
			||||||
  }, 1000);
 | 
					  }, 1000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (config && config.udplocalIp) {
 | 
					  if (config && config.udplocalIp) {
 | 
				
			||||||
    const {udplocalIp} = config;
 | 
					    const {udplocalIp} = config;
 | 
				
			||||||
    const udpClientbyCenter: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '8080', globalThis.carInfo?.gpsAddress, globalThis.carInfo?.hintPort)
 | 
					    const udpClientbyCenter: UdpClientByCenter = new UdpClientByCenter(udplocalIp, '8080', globalThis.carInfo?.gpsAddress, globalThis.carInfo?.hintPort)
 | 
				
			||||||
 | 
					    await udpClientbyCenter.onError_Callback(()=>{})
 | 
				
			||||||
    await udpClientbyCenter.bindUdp()
 | 
					    await udpClientbyCenter.bindUdp()
 | 
				
			||||||
    await udpClientbyCenter.onMessage_2((val) => {
 | 
					    await udpClientbyCenter.onMessage_2((val) => {})
 | 
				
			||||||
      console.log('valval', val)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
    // globalThis.judgeUdpClient = udpClientbyCenter;
 | 
					    // globalThis.judgeUdpClient = udpClientbyCenter;
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
      send(bytes) {
 | 
					      send(bytes) {
 | 
				
			||||||
        if (udpIndex > currentUdpIndex) {
 | 
					        if (udpIndex > currentUdpIndex) {
 | 
				
			||||||
          udpClientbyCenter.sendMsgExt({ id: 45,
 | 
					          udpClientbyCenter.sendMsgExt({
 | 
				
			||||||
 | 
					            id: 45,
 | 
				
			||||||
            list: bytes,
 | 
					            list: bytes,
 | 
				
			||||||
            carNo: globalThis.carInfo.carNo,
 | 
					            carNo: globalThis.carInfo.carNo,
 | 
				
			||||||
            placeId: globalThis.carInfo.examinationRoomId })
 | 
					            placeId: globalThis.carInfo.examinationRoomId
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
          currentUdpIndex = udpIndex
 | 
					          currentUdpIndex = udpIndex
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -22,6 +22,7 @@ import { fillZero, string2Bytes } from '../utils/tools'
 | 
				
			|||||||
const TAG = '[UdpDemo.UdpClient]'
 | 
					const TAG = '[UdpDemo.UdpClient]'
 | 
				
			||||||
import hilog from '@ohos.hilog';
 | 
					import hilog from '@ohos.hilog';
 | 
				
			||||||
import prompt from '@ohos.prompt'
 | 
					import prompt from '@ohos.prompt'
 | 
				
			||||||
 | 
					import promptAction from '@ohos.promptAction';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class UdpClientByCenter {
 | 
					export default class UdpClientByCenter {
 | 
				
			||||||
@ -59,7 +60,9 @@ export default class UdpClientByCenter {
 | 
				
			|||||||
    return this.isWorking
 | 
					    return this.isWorking
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rebindUdp(localIp: string, localIpPort: string, oppositeIp: string, oppositeIpPort: string) {
 | 
					  rebindUdp(localIp: string, localIpPort: string, oppositeIp: string, oppositeIpPort: string)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    console.log(`${TAG}getUDPudpCLient rebindUdp enter localIp:${localIp},localIpPort:${localIpPort},oppositeIp:${oppositeIp},oppositeIpPort:${oppositeIpPort}`);
 | 
				
			||||||
    this.localIp = localIp
 | 
					    this.localIp = localIp
 | 
				
			||||||
    this.oppositeIp = oppositeIp
 | 
					    this.oppositeIp = oppositeIp
 | 
				
			||||||
    this.localIpPort = localIpPort
 | 
					    this.localIpPort = localIpPort
 | 
				
			||||||
@ -141,9 +144,7 @@ export default class UdpClientByCenter {
 | 
				
			|||||||
  setMsgBody({id,list}) {
 | 
					  setMsgBody({id,list}) {
 | 
				
			||||||
    let tmpList = []
 | 
					    let tmpList = []
 | 
				
			||||||
    tmpList = list
 | 
					    tmpList = list
 | 
				
			||||||
 | 
					 | 
				
			||||||
    return tmpList;
 | 
					    return tmpList;
 | 
				
			||||||
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  sendHeadMsg(msgData) {
 | 
					  sendHeadMsg(msgData) {
 | 
				
			||||||
@ -175,6 +176,10 @@ export default class UdpClientByCenter {
 | 
				
			|||||||
          console.log(`${TAG}getUDPudpCLient udp send success:oppositeIp${this.oppositeIp},oppositeIpPort:${this.oppositeIpPort},localIp:${this.localIp},localIpPort,${this.localIpPort}`);
 | 
					          console.log(`${TAG}getUDPudpCLient udp send success:oppositeIp${this.oppositeIp},oppositeIpPort:${this.oppositeIpPort},localIp:${this.localIp},localIpPort,${this.localIpPort}`);
 | 
				
			||||||
        }).catch(err => {
 | 
					        }).catch(err => {
 | 
				
			||||||
          console.log(`${TAG}getUDPudpCLient udp send fail:oppositeIp${this.oppositeIp},oppositeIpPort:${this.oppositeIpPort},localIp:${this.localIp},localIpPort,${this.localIpPort}`);
 | 
					          console.log(`${TAG}getUDPudpCLient udp send fail:oppositeIp${this.oppositeIp},oppositeIpPort:${this.oppositeIpPort},localIp:${this.localIp},localIpPort,${this.localIpPort}`);
 | 
				
			||||||
 | 
					          promptAction.showToast({
 | 
				
			||||||
 | 
					            message:`${TAG}getUDPudpCLient udp send fail:oppositeIp${this.oppositeIp},oppositeIpPort:${this.oppositeIpPort},localIp:${this.localIp},localIpPort,${this.localIpPort}`,
 | 
				
			||||||
 | 
					            duration:4000
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      console.log('getUDPgetState success:' + JSON.stringify(data));
 | 
					      console.log('getUDPgetState success:' + JSON.stringify(data));
 | 
				
			||||||
 | 
				
			|||||||
@ -39,8 +39,8 @@ export const getMessageHeartbeat = async (msg) => {
 | 
				
			|||||||
  const { examSubject,plateNo } = carInfo;
 | 
					  const { examSubject,plateNo } = carInfo;
 | 
				
			||||||
  const ksyh='0000000000000'
 | 
					  const ksyh='0000000000000'
 | 
				
			||||||
  const {fourInOneScreen:{gpsDigit}} = judgeConfig
 | 
					  const {fourInOneScreen:{gpsDigit}} = judgeConfig
 | 
				
			||||||
  const asclshArr = stringToASC(fillZero(globalThis.lsh || 0, 13));
 | 
					  const asclshArr = stringToASC(fillZero('0000000000000', 13));
 | 
				
			||||||
  const ascksyhArr = stringToASC(fillZero(ksyh || 0, 13))
 | 
					  const ascksyhArr = stringToASC(fillZero('0000000000000', 13))
 | 
				
			||||||
  const ascsbxhArr = stringToASC('00000000')
 | 
					  const ascsbxhArr = stringToASC('00000000')
 | 
				
			||||||
  // const ascsbxhArr = stringToASC('153216400880')
 | 
					  // const ascsbxhArr = stringToASC('153216400880')
 | 
				
			||||||
  const serialIndex = globalThis.serialIndex
 | 
					  const serialIndex = globalThis.serialIndex
 | 
				
			||||||
@ -93,7 +93,19 @@ export const getMessageHeartbeat = async (msg) => {
 | 
				
			|||||||
    //扣分项数量
 | 
					    //扣分项数量
 | 
				
			||||||
    string2Bytes(0, 8),
 | 
					    string2Bytes(0, 8),
 | 
				
			||||||
    //n个扣分序号
 | 
					    //n个扣分序号
 | 
				
			||||||
    [].map(kf => string2Bytes(kf.markcatalog, 8))
 | 
					    [].map(kf => string2Bytes(kf.markcatalog, 8)),
 | 
				
			||||||
 | 
					    //牵引车第二gps精度、纬度
 | 
				
			||||||
 | 
					    string2Bytes(0, 4 * 8), string2Bytes(0, 4 * 8),
 | 
				
			||||||
 | 
					    //牵引车第二航向角
 | 
				
			||||||
 | 
					    string2Bytes(0, 2 * 8),
 | 
				
			||||||
 | 
					    //摩托压线 Byte[20],
 | 
				
			||||||
 | 
					    string2Bytes(0, 20 * 8),
 | 
				
			||||||
 | 
					    //考试用时
 | 
				
			||||||
 | 
					    string2Bytes(fillZero(0+'',4), 4 * 8),
 | 
				
			||||||
 | 
					    //项目用时
 | 
				
			||||||
 | 
					    string2Bytes(fillZero(0,2), 2 * 8),
 | 
				
			||||||
 | 
					    //设备信号状态
 | 
				
			||||||
 | 
					    string2Bytes(0, 4 * 8),
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  let tempArr = [];
 | 
					  let tempArr = [];
 | 
				
			||||||
  arr.forEach(itemArr => {
 | 
					  arr.forEach(itemArr => {
 | 
				
			||||||
 | 
				
			|||||||
@ -118,7 +118,7 @@ struct Index {
 | 
				
			|||||||
    const {xm,sfzmhm,lsh,kszp,ksdd,kssycs,kslx,ksxl} = stuInfo;
 | 
					    const {xm,sfzmhm,lsh,kszp,ksdd,kssycs,kslx,ksxl} = stuInfo;
 | 
				
			||||||
    this.name = xm || '测试考生';
 | 
					    this.name = xm || '测试考生';
 | 
				
			||||||
    this.idCard = sfzmhm || '01234567891010';
 | 
					    this.idCard = sfzmhm || '01234567891010';
 | 
				
			||||||
    this.lsh = lsh;
 | 
					    this.lsh = globalThis.singlePlay?'0000000000000':lsh;
 | 
				
			||||||
    this.kszp = kszp;
 | 
					    this.kszp = kszp;
 | 
				
			||||||
    this.ksdd = ksdd;
 | 
					    this.ksdd = ksdd;
 | 
				
			||||||
    this.kssycs = kssycs;
 | 
					    this.kssycs = kssycs;
 | 
				
			||||||
 | 
				
			|||||||
@ -6,6 +6,7 @@ import { upDateTableByArray} from '../common/service/initable'
 | 
				
			|||||||
import { getSyncData} 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';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Entry
 | 
					@Entry
 | 
				
			||||||
@ -83,7 +84,7 @@ struct Index {
 | 
				
			|||||||
            const fileUtil = new FileUtil(this.context)
 | 
					            const fileUtil = new FileUtil(this.context)
 | 
				
			||||||
            const folderPath = await fileUtil.initFolder(`/config`);
 | 
					            const folderPath = await fileUtil.initFolder(`/config`);
 | 
				
			||||||
            const param={udplocalIp:this.inputTextList1[9],udplocalIpPort:this.inputTextList1[10],udpOppositeIp:this.inputTextList1[7],udpOppositeIpPort:this.inputTextList1[8],tcplocalIp:this.inputTextList1[9],tcplocalIpPort:'8088',tcpOppositeIp:this.inputTextList1[0],tcpOppositePort:this.inputTextList1[1],netMask:this.inputTextList1[4],gateway:this.inputTextList1[5],dnsServers:this.inputTextList1[6],centerIp:this.inputTextList1[2],centerPort:this.inputTextList1[3]}
 | 
					            const param={udplocalIp:this.inputTextList1[9],udplocalIpPort:this.inputTextList1[10],udpOppositeIp:this.inputTextList1[7],udpOppositeIpPort:this.inputTextList1[8],tcplocalIp:this.inputTextList1[9],tcplocalIpPort:'8088',tcpOppositeIp:this.inputTextList1[0],tcpOppositePort:this.inputTextList1[1],netMask:this.inputTextList1[4],gateway:this.inputTextList1[5],dnsServers:this.inputTextList1[6],centerIp:this.inputTextList1[2],centerPort:this.inputTextList1[3]}
 | 
				
			||||||
            fileUtil.addFile(`${folderPath}/ipConfig.txt`, JSON.stringify(param))
 | 
					            fileUtil.addFile(`${folderPath}/ipConfig.txt`, JSON.stringify(param),'')
 | 
				
			||||||
            // upDateTableByArray('IpConfigTable',[])
 | 
					            // upDateTableByArray('IpConfigTable',[])
 | 
				
			||||||
            ethernet.setIfaceConfig("eth0", {
 | 
					            ethernet.setIfaceConfig("eth0", {
 | 
				
			||||||
              mode: 0,
 | 
					              mode: 0,
 | 
				
			||||||
@ -131,27 +132,31 @@ struct Index {
 | 
				
			|||||||
    .backgroundImageSize({ width: '100%', height: '100%' })
 | 
					    .backgroundImageSize({ width: '100%', height: '100%' })
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  aboutToAppear() {
 | 
					  async aboutToAppear() {
 | 
				
			||||||
    getSyncData('IpConfigTable').then((result:Array<any>)=>{
 | 
					    const fileUtil = new FileUtil(this.context)
 | 
				
			||||||
      console.log('result222',JSON.stringify(result))
 | 
					    const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/ipConfig.txt');
 | 
				
			||||||
      if(result.length){
 | 
					    console.log('datadata',data)
 | 
				
			||||||
 | 
					    if (data === '' || data === undefined) {
 | 
				
			||||||
 | 
					    }else{
 | 
				
			||||||
 | 
					      const result=JSON.parse(data)
 | 
				
			||||||
        console.log('tagtag',JSON.stringify(result))
 | 
					        console.log('tagtag',JSON.stringify(result))
 | 
				
			||||||
        this.inputTextList1[9]=result[0].udplocalIp
 | 
					        this.inputTextList1[9]=result.udplocalIp
 | 
				
			||||||
        this.inputTextList1[10]=result[0].udplocalIpPort
 | 
					        this.inputTextList1[10]=result.udplocalIpPort
 | 
				
			||||||
        this.inputTextList1[7]=result[0].udpOppositeIp
 | 
					        this.inputTextList1[7]=result.udpOppositeIp
 | 
				
			||||||
        this.inputTextList1[8]=result[0].udpOppositeIpPort
 | 
					        this.inputTextList1[8]=result.udpOppositeIpPort
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // this.inputTextList1[0]=result[0].tcplocalIp
 | 
					        // this.inputTextList1[0]=result[0].tcplocalIp
 | 
				
			||||||
        // this.inputTextList1[13]=result[0].tcplocalIpPort
 | 
					        // this.inputTextList1[13]=result[0].tcplocalIpPort
 | 
				
			||||||
        this.inputTextList1[0]=result[0].tcpOppositeIp
 | 
					        this.inputTextList1[0]=result.tcpOppositeIp
 | 
				
			||||||
        this.inputTextList1[1]=result[0].tcpOppositePort
 | 
					        this.inputTextList1[1]=result.tcpOppositePort
 | 
				
			||||||
        this.inputTextList1[5]=result[0].gateway
 | 
					        this.inputTextList1[5]=result.gateway
 | 
				
			||||||
        this.inputTextList1[4]=result[0].netMask
 | 
					        this.inputTextList1[4]=result.netMask
 | 
				
			||||||
        this.inputTextList1[6]=result[0].dnsServers
 | 
					        this.inputTextList1[6]=result.dnsServers
 | 
				
			||||||
        this.inputTextList1[2]=result[0].centerIp
 | 
					        this.inputTextList1[2]=result.centerIp
 | 
				
			||||||
        this.inputTextList1[3]=result[0].centerPort
 | 
					        this.inputTextList1[3]=result.centerPort
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    })
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ethernet.getIfaceConfig("eth0", (error, value) => {
 | 
					    ethernet.getIfaceConfig("eth0", (error, value) => {
 | 
				
			||||||
      if (error) {
 | 
					      if (error) {
 | 
				
			||||||
        // that.errorMsg='error'
 | 
					        // that.errorMsg='error'
 | 
				
			||||||
 | 
				
			|||||||
@ -163,7 +163,6 @@ struct UserInfo {
 | 
				
			|||||||
          return
 | 
					          return
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.showFaceCompare = true
 | 
					 | 
				
			||||||
        this.pageIndex = Math.floor(index / 4)
 | 
					        this.pageIndex = Math.floor(index / 4)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
@ -238,7 +237,7 @@ struct UserInfo {
 | 
				
			|||||||
    this.stepFlag = false
 | 
					    this.stepFlag = false
 | 
				
			||||||
    this.faceCompareSucess = 0
 | 
					    this.faceCompareSucess = 0
 | 
				
			||||||
    this.showFaceCompare = false
 | 
					    this.showFaceCompare = false
 | 
				
			||||||
    this.lsh = '0000000000000'
 | 
					    this.lsh = '000000000000'
 | 
				
			||||||
    this.callBackFlag = false
 | 
					    this.callBackFlag = false
 | 
				
			||||||
    globalThis.lsh = this.lsh
 | 
					    globalThis.lsh = this.lsh
 | 
				
			||||||
    // this.currentUser = EmptyCandidateObject
 | 
					    // this.currentUser = EmptyCandidateObject
 | 
				
			||||||
@ -314,16 +313,22 @@ struct UserInfo {
 | 
				
			|||||||
        that.ksxtbh = ksxtbhArr?.[0]?.v_value || '222'
 | 
					        that.ksxtbh = ksxtbhArr?.[0]?.v_value || '222'
 | 
				
			||||||
        const studentRefreshParam = syssetParams.filter(sys => sys.v_no === '452')
 | 
					        const studentRefreshParam = syssetParams.filter(sys => sys.v_no === '452')
 | 
				
			||||||
        that.studentRefreshStatue = studentRefreshParam?.[0]?.v_value || '0'
 | 
					        that.studentRefreshStatue = studentRefreshParam?.[0]?.v_value || '0'
 | 
				
			||||||
 | 
					        const openCheckFlagParam = syssetParams.filter(sys => sys.v_no == '17')
 | 
				
			||||||
 | 
					        const openCheckFlag =openCheckFlagParam?.[0]?.v_value == '1' ? '1' : '0'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const faceParam = syssetParams.filter(sys => sys.v_no == '2413')
 | 
					        const faceParam = syssetParams.filter(sys => sys.v_no == '2413')
 | 
				
			||||||
        that.FaceOpenStatue = faceParam?.[0]?.v_value == '3' ? '1' : '0'
 | 
					
 | 
				
			||||||
        that.FaceOpenStatue = '0'
 | 
					        // that.FaceOpenStatue =  '0'
 | 
				
			||||||
        console.log('that.FaceOpenStatue', that.FaceOpenStatue)
 | 
					 | 
				
			||||||
        // faceParam?.[0]?.v_value ||
 | 
					        // faceParam?.[0]?.v_value ||
 | 
				
			||||||
        // 1身份证读卡器 2指纹 3人脸
 | 
					        // 1身份证读卡器 2指纹 3人脸
 | 
				
			||||||
 | 
					        if(openCheckFlag=='1'){
 | 
				
			||||||
 | 
					          that.FaceOpenStatue = faceParam?.[0]?.v_value == '3' ? '1' : '0'
 | 
				
			||||||
          this.faceFlag = faceParam?.[0]?.v_value || '0'
 | 
					          this.faceFlag = faceParam?.[0]?.v_value || '0'
 | 
				
			||||||
          if (faceParam?.[0]?.v_value == '1') {
 | 
					          if (faceParam?.[0]?.v_value == '1') {
 | 
				
			||||||
            that.openDeviceByIDCard()
 | 
					            that.openDeviceByIDCard()
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //0不自动更新 1自动更新(不限次数) 2没有考生更新2次
 | 
					        //0不自动更新 1自动更新(不限次数) 2没有考生更新2次
 | 
				
			||||||
        if (that.studentRefreshStatue == '2') {
 | 
					        if (that.studentRefreshStatue == '2') {
 | 
				
			||||||
          clearInterval(that.interval)
 | 
					          clearInterval(that.interval)
 | 
				
			||||||
@ -371,13 +376,6 @@ struct UserInfo {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    this.pageIndex--;
 | 
					    this.pageIndex--;
 | 
				
			||||||
    this.dataList = this.list.slice(this.pageIndex * 4, this.pageIndex * 4 + 4)
 | 
					    this.dataList = this.list.slice(this.pageIndex * 4, this.pageIndex * 4 + 4)
 | 
				
			||||||
    this.dataList.forEach(listData => {
 | 
					 | 
				
			||||||
      for (let i in listData) {
 | 
					 | 
				
			||||||
        listData[i] = decodeURI(listData[i])
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      listData.kszp = this.photo + listData.kszp
 | 
					 | 
				
			||||||
      listData.ksmjzp = this.photo + listData.ksmjzp
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //获取下载考生
 | 
					  //获取下载考生
 | 
				
			||||||
@ -386,7 +384,7 @@ struct UserInfo {
 | 
				
			|||||||
      return
 | 
					      return
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    const param = `<getExaminationStudentInfoReq><head><checkCode>${Md5.Instance.get_md5(globalThis.carInfo.carId + globalThis.carInfo.examinationRoomId + globalThis.username)}</checkCode></head><body><carId>${globalThis.carInfo.carId}</carId><examinationRoomId>${globalThis.carInfo.examinationRoomId}</examinationRoomId><examinerName>${globalThis.username}</examinerName></body></getExaminationStudentInfoReq>`
 | 
					    const param = `<getExaminationStudentInfoReq><head><checkCode>${Md5.Instance.get_md5(globalThis.carInfo.carId + globalThis.carInfo.examinationRoomId + globalThis.username)}</checkCode></head><body><carId>${globalThis.carInfo.carId}</carId><examinationRoomId>${globalThis.carInfo.examinationRoomId}</examinationRoomId><examinerName>${globalThis.username}</examinerName></body></getExaminationStudentInfoReq>`
 | 
				
			||||||
    getExaminationStudentInfo(param).then(async res => {
 | 
					    getExaminationStudentInfo(param).then(async(res) => {
 | 
				
			||||||
      setTimeout(() => {
 | 
					      setTimeout(() => {
 | 
				
			||||||
        this.updateTimeLimit = true
 | 
					        this.updateTimeLimit = true
 | 
				
			||||||
      }, 30000)
 | 
					      }, 30000)
 | 
				
			||||||
@ -413,7 +411,15 @@ struct UserInfo {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      this.list = JSON.parse(JSON.stringify(dataList))
 | 
					      this.list = JSON.parse(JSON.stringify(dataList))
 | 
				
			||||||
 | 
					      this.list.forEach(listData => {
 | 
				
			||||||
 | 
					        for (let i in listData) {
 | 
				
			||||||
 | 
					          listData[i] = decodeURI(listData[i])
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        listData.kszp = this.photo + listData.kszp
 | 
				
			||||||
 | 
					        listData.ksmjzp = this.photo + listData.ksmjzp
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
      dataList = this.list.length > 4 ? this.list.slice(this.pageIndex * 4, this.pageIndex * 4 + 4) : this.list;
 | 
					      dataList = this.list.length > 4 ? this.list.slice(this.pageIndex * 4, this.pageIndex * 4 + 4) : this.list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      this.dataList = dataList
 | 
					      this.dataList = dataList
 | 
				
			||||||
      if (this.dataList.length) {
 | 
					      if (this.dataList.length) {
 | 
				
			||||||
        this.currentUser = this.dataList[0]
 | 
					        this.currentUser = this.dataList[0]
 | 
				
			||||||
 | 
				
			|||||||
@ -94,8 +94,13 @@ export default struct RealTime {
 | 
				
			|||||||
      .backgroundColor('#fff')
 | 
					      .backgroundColor('#fff')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Row(){
 | 
					      Row(){
 | 
				
			||||||
        Image($rawfile('judge/big.png')).width(60).onClick(()=>{this.scaleFn(-10)})
 | 
					        Image($rawfile('judge/big.png')).width(60).onClick(()=>{
 | 
				
			||||||
        Image($rawfile('judge/small.png')).width(60).onClick(()=>{this.scaleFn(10)}).margin({left:20})
 | 
					          this.scaleFn( -this.getScaleNum() )
 | 
				
			||||||
 | 
					          console.info('surenjun getScaleNum',-this.getScaleNum())
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        Image($rawfile('judge/small.png')).width(60).onClick(()=>{
 | 
				
			||||||
 | 
					          this.scaleFn( this.getScaleNum() )
 | 
				
			||||||
 | 
					        }).margin({left:20})
 | 
				
			||||||
      }.position({x:'32%',y:60})
 | 
					      }.position({x:'32%',y:60})
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    .height('100%')
 | 
					    .height('100%')
 | 
				
			||||||
@ -112,6 +117,37 @@ export default struct RealTime {
 | 
				
			|||||||
    this.timer = timer
 | 
					    this.timer = timer
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  getScaleNum = ()=>{
 | 
				
			||||||
 | 
					    const scaleNum = this.scaleNum;
 | 
				
			||||||
 | 
					    if(scaleNum < 200){
 | 
				
			||||||
 | 
					      return 10
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if(scaleNum >= 200 && scaleNum < 400){
 | 
				
			||||||
 | 
					      return 30
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(scaleNum >= 400 && scaleNum < 600){
 | 
				
			||||||
 | 
					      return 50
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(scaleNum >= 600 && scaleNum < 800){
 | 
				
			||||||
 | 
					      return 70
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(scaleNum >= 800 && scaleNum < 1000){
 | 
				
			||||||
 | 
					      return 100
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(scaleNum >= 1000 && scaleNum < 2000){
 | 
				
			||||||
 | 
					      return 500
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if(scaleNum >= 2000 && scaleNum <= 5000){
 | 
				
			||||||
 | 
					      return 1000
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return 1000
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  getValues(roadColumn) {
 | 
					  getValues(roadColumn) {
 | 
				
			||||||
    const lane = this.lane || {};
 | 
					    const lane = this.lane || {};
 | 
				
			||||||
    let key = roadColumn.key;
 | 
					    let key = roadColumn.key;
 | 
				
			||||||
@ -148,17 +184,18 @@ export default struct RealTime {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  scaleFn = async (num)=>{
 | 
					  scaleFn = async (num)=>{
 | 
				
			||||||
    const scaleNum = this.scaleNum
 | 
					    const scaleNum = this.scaleNum
 | 
				
			||||||
    if(scaleNum >0 && scaleNum < 200){
 | 
					    console.info('surenjun getScaleNum',scaleNum)
 | 
				
			||||||
 | 
					    if(scaleNum >0 && scaleNum < 5000){
 | 
				
			||||||
      this.scaleNum += num;
 | 
					      this.scaleNum += num;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if(scaleNum === 0 && num > 0){
 | 
					    if(scaleNum === 0 && num > 0){
 | 
				
			||||||
      this.scaleNum += num;
 | 
					      this.scaleNum += num;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if(scaleNum === 200 && num < 0){
 | 
					    if(scaleNum > 5000 && num < 0){
 | 
				
			||||||
      this.scaleNum += num;
 | 
					      this.scaleNum += num;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    await examJudgeMapSetScaling(this.scaleNum);
 | 
					    await examJudgeMapSetScaling(this.scaleNum);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  }
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -603,6 +603,7 @@ export default class Judge {
 | 
				
			|||||||
        kssj: time
 | 
					        kssj: time
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    console.info(judgeTag +'filePath' , filePath)
 | 
				
			||||||
    const {code} = await writeObjectOut(data,filePath)
 | 
					    const {code} = await writeObjectOut(data,filePath)
 | 
				
			||||||
    console.info(judgeTag, '项目开始 end')
 | 
					    console.info(judgeTag, '项目开始 end')
 | 
				
			||||||
    if (code === 2300007) {
 | 
					    if (code === 2300007) {
 | 
				
			||||||
@ -774,25 +775,36 @@ export default class Judge {
 | 
				
			|||||||
          this.isExamEnd = true
 | 
					          this.isExamEnd = true
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
 | 
					        const param302 = judgeConfigObj['302'];
 | 
				
			||||||
 | 
					        const param342 = judgeConfigObj['342'];
 | 
				
			||||||
 | 
					        const param512 = (judgeConfigObj['512'] || '').split(',');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //成绩不合格
 | 
					        //成绩不合格
 | 
				
			||||||
        if (totalScore < passingGrade) {
 | 
					        if (totalScore < passingGrade) {
 | 
				
			||||||
 | 
					          //科目三不合格报靠边停车
 | 
				
			||||||
 | 
					          if(examSubject == 3 && param302 ==1){
 | 
				
			||||||
 | 
					            avPlayer.playAudio([`voice/考试结束.mp3`]);
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
          await examJudgeEndExam()
 | 
					          await examJudgeEndExam()
 | 
				
			||||||
          this.isExamEnd = true
 | 
					          this.isExamEnd = true
 | 
				
			||||||
          return
 | 
					          return
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        //成绩合格
 | 
					        //成绩合格
 | 
				
			||||||
        if (isAllProjectsEnd && totalScore >= passingGrade && isEndTip) {
 | 
					        if (isAllProjectsEnd && totalScore >= passingGrade && isEndTip) {
 | 
				
			||||||
          const param302 = judgeConfigObj['302'];
 | 
					          //考试合格自动退出
 | 
				
			||||||
          const param342 = judgeConfigObj['342'];
 | 
					          if(examSubject == 3 && param302 == 4){
 | 
				
			||||||
          const param512 = (judgeUI.judgeConfigObj['512'] || '').split(',');
 | 
					            await examJudgeEndExam()
 | 
				
			||||||
          if (examSubject == 3 && param342 != 0 && (param302 != 6 || param302 != 7 || param302 != 8)) {
 | 
					            this.isExamEnd = true
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          if (examSubject == 3 && (param342 == 0 || param342 == 2) && (param302 != 6 || param302 != 7 || param302 != 8)) {
 | 
				
			||||||
            if(param512[7] != 0){
 | 
					            if(param512[7] != 0){
 | 
				
			||||||
              avPlayer.playAudio(['voice/综合评判.mp3'])
 | 
					              avPlayer.playAudio(['voice/综合评判.mp3'])
 | 
				
			||||||
              this.judgeUI.isDeductedPopShow = true
 | 
					              this.judgeUI.isDeductedPopShow = true
 | 
				
			||||||
              this.judgeUI.defaultTabIndex = 1
 | 
					              this.judgeUI.defaultTabIndex = 1
 | 
				
			||||||
              this.isEndTip = true
 | 
					              this.isEndTip = true
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					 | 
				
			||||||
          } else {
 | 
					          } else {
 | 
				
			||||||
            await examJudgeEndExam()
 | 
					            await examJudgeEndExam()
 | 
				
			||||||
            this.isExamEnd = true
 | 
					            this.isExamEnd = true
 | 
				
			||||||
@ -980,6 +992,7 @@ export default class Judge {
 | 
				
			|||||||
  getMessageHeartbeat = async (isEnd?: Boolean) => {
 | 
					  getMessageHeartbeat = async (isEnd?: Boolean) => {
 | 
				
			||||||
    const carInfo = globalThis.carInfo;
 | 
					    const carInfo = globalThis.carInfo;
 | 
				
			||||||
    const { examSubject,plateNo,ksyh } = carInfo;
 | 
					    const { examSubject,plateNo,ksyh } = carInfo;
 | 
				
			||||||
 | 
					    console.info(judgeTag,1)
 | 
				
			||||||
    const {
 | 
					    const {
 | 
				
			||||||
      judgeUI,
 | 
					      judgeUI,
 | 
				
			||||||
      isExam,
 | 
					      isExam,
 | 
				
			||||||
@ -994,19 +1007,32 @@ export default class Judge {
 | 
				
			|||||||
      getTranslateProject,
 | 
					      getTranslateProject,
 | 
				
			||||||
      getSbxh
 | 
					      getSbxh
 | 
				
			||||||
    } = this;
 | 
					    } = this;
 | 
				
			||||||
    const {lsh,startHourTime,totalScore} = judgeUI;
 | 
					    console.info(judgeTag,2)
 | 
				
			||||||
 | 
					    const {lsh,startHourTime,totalScore,examTime} = judgeUI;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const {fourInOneScreen:{gpsDigit}} = judgeConfig
 | 
					    const {fourInOneScreen:{gpsDigit}} = judgeConfig
 | 
				
			||||||
 | 
					    console.info(judgeTag,3)
 | 
				
			||||||
    const examType = examSubject == 2?2:3
 | 
					    const examType = examSubject == 2?2:3
 | 
				
			||||||
    const {sensor,gps} = tempData;
 | 
					    const {sensor,gps} = tempData;
 | 
				
			||||||
 | 
					    console.info(judgeTag,4)
 | 
				
			||||||
 | 
					    console.info(judgeTag,JSON.stringify(tempData))
 | 
				
			||||||
 | 
					    if(tempData.sensor === undefined){
 | 
				
			||||||
 | 
					      return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    const {zfxd,yfxd,shtd,ygd,jgd,skd,dh1,dh2,lhq,jsc,ssc,fsc,lb,mkg,aqd,ygq,cs,fdjzs,dw} = sensor
 | 
					    const {zfxd,yfxd,shtd,ygd,jgd,skd,dh1,dh2,lhq,jsc,ssc,fsc,lb,mkg,aqd,ygq,cs,fdjzs,dw} = sensor
 | 
				
			||||||
    const {jd,wd, hxj,  fyj,  hbg,} = gps
 | 
					    const {jd,wd, hxj,  fyj,  hbg,} = gps
 | 
				
			||||||
 | 
					    console.info(judgeTag,5)
 | 
				
			||||||
    const translateProject = getTranslateProject();
 | 
					    const translateProject = getTranslateProject();
 | 
				
			||||||
    const sbxh = getSbxh(xmdm, xmxh)
 | 
					    const sbxh = getSbxh(xmdm, xmxh)
 | 
				
			||||||
    const {carzt,dcjl,qjjl,dxjl,bxjl} = performInfo;
 | 
					    console.info(judgeTag,JSON.stringify(performInfo))
 | 
				
			||||||
 | 
					    const {carzt,dcjl,qjjl,dxjl,bxjl} = performInfo || {};
 | 
				
			||||||
    const asclshArr = stringToASC(fillZero(lsh || 0, 13));
 | 
					    const asclshArr = stringToASC(fillZero(lsh || 0, 13));
 | 
				
			||||||
    //13不足要补0
 | 
					    //13不足要补0
 | 
				
			||||||
 | 
					    console.info(judgeTag,6)
 | 
				
			||||||
    const ascksyhArr = stringToASC(fillZero(ksyh || 0, 13))
 | 
					    const ascksyhArr = stringToASC(fillZero(ksyh || 0, 13))
 | 
				
			||||||
 | 
					    console.info(judgeTag,7)
 | 
				
			||||||
    const ascsbxhArr = stringToASC(sbxh)
 | 
					    const ascsbxhArr = stringToASC(sbxh)
 | 
				
			||||||
 | 
					    console.info(judgeTag,8)
 | 
				
			||||||
    const translateSignals = getTranslateSignals(
 | 
					    const translateSignals = getTranslateSignals(
 | 
				
			||||||
      [zfxd, yfxd, shtd, ygd, jgd, skd, dh1, dh2, lhq, jsc, ssc, fsc, lb, mkg, aqd].concat(getDwStatusType(dw)).concat(getCarStatusType(carzt)).concat([ygq, sensor.wd, 0])
 | 
					      [zfxd, yfxd, shtd, ygd, jgd, skd, dh1, dh2, lhq, jsc, ssc, fsc, lb, mkg, aqd].concat(getDwStatusType(dw)).concat(getCarStatusType(carzt)).concat([ygq, sensor.wd, 0])
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
@ -1016,9 +1042,13 @@ export default class Judge {
 | 
				
			|||||||
    const translateWd = convertGpsCoord2(jd).toFixed(gpsDigit) * Math.pow(10, gpsDigit)
 | 
					    const translateWd = convertGpsCoord2(jd).toFixed(gpsDigit) * Math.pow(10, gpsDigit)
 | 
				
			||||||
    //@ts-ignore
 | 
					    //@ts-ignore
 | 
				
			||||||
    const translateProjects = translateProject.map(numStr => string2Bytes(parseInt(numStr, 2), 8)[0])
 | 
					    const translateProjects = translateProject.map(numStr => string2Bytes(parseInt(numStr, 2), 8)[0])
 | 
				
			||||||
 | 
					    console.info(judgeTag,6)
 | 
				
			||||||
    // console.info(judgeTag,JSON.stringify(translateProject))
 | 
					    // console.info(judgeTag,JSON.stringify(translateProject))
 | 
				
			||||||
    //@ts-ignore
 | 
					    //@ts-ignore
 | 
				
			||||||
    // const translateProjects= translateProject.map(num => string2Bytes(p,8)[0])
 | 
					    // const translateProjects= translateProject.map(num => string2Bytes(p,8)[0])
 | 
				
			||||||
 | 
					    console.info('surenjunxstartHourTime' , startHourTime)
 | 
				
			||||||
 | 
					    console.info('surenjunxmmcexamTime' , examTime)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const arr = [
 | 
					    const arr = [
 | 
				
			||||||
      //考生号
 | 
					      //考生号
 | 
				
			||||||
      asclshArr.map(lsh => string2Bytes(lsh, 8)[0]),
 | 
					      asclshArr.map(lsh => string2Bytes(lsh, 8)[0]),
 | 
				
			||||||
@ -1032,7 +1062,7 @@ export default class Judge {
 | 
				
			|||||||
      translateSignals,
 | 
					      translateSignals,
 | 
				
			||||||
      //速度                                                发动机转速                          GPS纬度                         GPS经度                         主天线位置
 | 
					      //速度                                                发动机转速                          GPS纬度                         GPS经度                         主天线位置
 | 
				
			||||||
      //@ts-ignore
 | 
					      //@ts-ignore
 | 
				
			||||||
      string2Bytes(Math.floor(gps.sd*1.852) , 2 * 8), string2Bytes(fdjzs / 100, 8), string2Bytes(translateJd, 4 * 8), string2Bytes(translateWd, 4 * 8), string2Bytes(1, 8),
 | 
					      string2Bytes(cs * 100, 2 * 8), string2Bytes(fdjzs / 100, 8), string2Bytes(translateJd, 4 * 8), string2Bytes(translateWd, 4 * 8), string2Bytes(1, 8),
 | 
				
			||||||
      //GPS东向距离
 | 
					      //GPS东向距离
 | 
				
			||||||
      string2Bytes(dxjl < 0 ? (dxjl + 4294967296) : dxjl, 4 * 8),
 | 
					      string2Bytes(dxjl < 0 ? (dxjl + 4294967296) : dxjl, 4 * 8),
 | 
				
			||||||
      //GPS北向距离
 | 
					      //GPS北向距离
 | 
				
			||||||
@ -1055,7 +1085,19 @@ export default class Judge {
 | 
				
			|||||||
      //扣分项数量
 | 
					      //扣分项数量
 | 
				
			||||||
      string2Bytes(kfArr.length, 8),
 | 
					      string2Bytes(kfArr.length, 8),
 | 
				
			||||||
      //n个扣分序号
 | 
					      //n个扣分序号
 | 
				
			||||||
      kfArr.map(kf => string2Bytes(kf.kfxh, 8)[0])
 | 
					      kfArr.map(kf => string2Bytes(kf.kfxh, 8)[0]),
 | 
				
			||||||
 | 
					      //TODO 牵引车第二gps精度、纬度
 | 
				
			||||||
 | 
					      string2Bytes(0, 4 * 8), string2Bytes(0, 4 * 8),
 | 
				
			||||||
 | 
					      //TODO 牵引车第二航向角
 | 
				
			||||||
 | 
					      string2Bytes(0, 2 * 8),
 | 
				
			||||||
 | 
					      //TODO 摩托压线 Byte[20],
 | 
				
			||||||
 | 
					      string2Bytes(0, 20 * 8),
 | 
				
			||||||
 | 
					      //TODO 考试用时
 | 
				
			||||||
 | 
					      string2Bytes(fillZero(examTime+'',4), 4 * 8),
 | 
				
			||||||
 | 
					      //TODO 项目用时
 | 
				
			||||||
 | 
					      string2Bytes(fillZero(0,2), 2 * 8),
 | 
				
			||||||
 | 
					      //TODO 设备信号状态
 | 
				
			||||||
 | 
					      string2Bytes(0, 4 * 8),
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let tempArr = [];
 | 
					    let tempArr = [];
 | 
				
			||||||
@ -1063,20 +1105,31 @@ export default class Judge {
 | 
				
			|||||||
      tempArr = tempArr.concat(itemArr)
 | 
					      tempArr = tempArr.concat(itemArr)
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    this.serialIndex += 1;
 | 
					    this.serialIndex += 1;
 | 
				
			||||||
 | 
					    console.info('message-judge-udp' + Array2Byte(tempArr).toString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return Array2Byte(tempArr)
 | 
					    return Array2Byte(tempArr)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  //获取场地序号
 | 
					  //获取场地序号
 | 
				
			||||||
  getSbxh = (ksxm, xmxh) => {
 | 
					  getSbxh = (ksxm, xmxh) => {
 | 
				
			||||||
    const {judgeUI} = this;
 | 
					    const {judgeUI} = this;
 | 
				
			||||||
 | 
					    console.info(judgeTag,10)
 | 
				
			||||||
    const {cdsbInfoObj,projectsObj} = judgeUI;
 | 
					    const {cdsbInfoObj,projectsObj} = judgeUI;
 | 
				
			||||||
 | 
					    console.info(judgeTag,11)
 | 
				
			||||||
    const project = projectsObj[ksxm]
 | 
					    const project = projectsObj[ksxm]
 | 
				
			||||||
    if (project === undefined) {
 | 
					    console.info(judgeTag,12)
 | 
				
			||||||
      return '00000000'
 | 
					    if(project == 3){
 | 
				
			||||||
 | 
					      return '0000000000'
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    if (project === undefined) {
 | 
				
			||||||
 | 
					      return '0000000000'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    console.info(judgeTag,13)
 | 
				
			||||||
    const projectType = project.sbxh;
 | 
					    const projectType = project.sbxh;
 | 
				
			||||||
    const projectKey = `${ksxm}_${xmxh}`;
 | 
					    const projectKey = `${ksxm}_${xmxh}`;
 | 
				
			||||||
 | 
					    console.info(judgeTag,14)
 | 
				
			||||||
    const currentCdsb = cdsbInfoObj[projectKey] || {};
 | 
					    const currentCdsb = cdsbInfoObj[projectKey] || {};
 | 
				
			||||||
    const sbxh = currentCdsb.sbbh || '00000000'
 | 
					    console.info(judgeTag,15)
 | 
				
			||||||
 | 
					    const sbxh = currentCdsb.sbbh || '0000000000'
 | 
				
			||||||
    return sbxh
 | 
					    return sbxh
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1125,7 +1178,9 @@ export default class Judge {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      arr.push(tempArr.join(''));
 | 
					      arr.push(tempArr.join(''));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return arr.map(numStr => parseInt(numStr, 2));
 | 
					    console.info(judgeTag,JSON.stringify(arr))
 | 
				
			||||||
 | 
					    // return arr.map(numStr => parseInt(numStr, 2));
 | 
				
			||||||
 | 
					    return arr
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  // 获取考试项目详情
 | 
					  // 获取考试项目详情
 | 
				
			||||||
  getProjectInfo = (projectCode) => {
 | 
					  getProjectInfo = (projectCode) => {
 | 
				
			||||||
@ -1264,6 +1319,7 @@ export default class Judge {
 | 
				
			|||||||
    if (udpIndex % 5 === 0) {
 | 
					    if (udpIndex % 5 === 0) {
 | 
				
			||||||
      const judgeUdp = globalThis.judgeUdp
 | 
					      const judgeUdp = globalThis.judgeUdp
 | 
				
			||||||
      const bytes = await this.getMessageHeartbeat();
 | 
					      const bytes = await this.getMessageHeartbeat();
 | 
				
			||||||
 | 
					      console.info(judgeTag+'UDP',JSON.stringify(bytes))
 | 
				
			||||||
      judgeUdp.send(bytes)
 | 
					      judgeUdp.send(bytes)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    globalThis.udpIndex += 1
 | 
					    globalThis.udpIndex += 1
 | 
				
			||||||
@ -1339,8 +1395,11 @@ export default class Judge {
 | 
				
			|||||||
        setJudgeItem(msg.itemno, msg.serial)
 | 
					        setJudgeItem(msg.itemno, msg.serial)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      await examJudgeRealExam(msg)
 | 
					      await examJudgeRealExam(msg)
 | 
				
			||||||
 | 
					      // const bytes = await this.getMessageHeartbeat();
 | 
				
			||||||
 | 
					      // bytes && globalThis.judgeUdp.send(bytes)
 | 
				
			||||||
      num++
 | 
					      num++
 | 
				
			||||||
    }, 50)
 | 
					    }, 200)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    globalThis.judgeTimer = judgeTimer;
 | 
					    globalThis.judgeTimer = judgeTimer;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  // 统计必考项目、所有项目、已考数量
 | 
					  // 统计必考项目、所有项目、已考数量
 | 
				
			||||||
 | 
				
			|||||||
@ -36,6 +36,7 @@ export default class FileLog {
 | 
				
			|||||||
    const hourTime = time.split(' ')[1].split(':').join('_')
 | 
					    const hourTime = time.split(' ')[1].split(':').join('_')
 | 
				
			||||||
    const folderPath = await fileUtil.initFolder(`/logs/${date}/${date}_${hourTime}_${lsh}_${idCard}_${name}`);
 | 
					    const folderPath = await fileUtil.initFolder(`/logs/${date}/${date}_${hourTime}_${lsh}_${idCard}_${name}`);
 | 
				
			||||||
    this.folderPath = folderPath;
 | 
					    this.folderPath = folderPath;
 | 
				
			||||||
 | 
					    return folderPath
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 过程文件数据
 | 
					  // 过程文件数据
 | 
				
			||||||
 | 
				
			|||||||
@ -74,9 +74,9 @@ export function getCenterProjectStatus(status){
 | 
				
			|||||||
    //未考
 | 
					    //未考
 | 
				
			||||||
    case 1:return '01'
 | 
					    case 1:return '01'
 | 
				
			||||||
    //正在考
 | 
					    //正在考
 | 
				
			||||||
    case 2:return '11'
 | 
					    case 2:return '10'
 | 
				
			||||||
    //已考
 | 
					    //已考
 | 
				
			||||||
    case 3:return '10'
 | 
					    case 3:return '11'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    default :return '00'
 | 
					    default :return '00'
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -111,7 +111,9 @@ export function getKmProjectVoice(
 | 
				
			|||||||
    //右转
 | 
					    //右转
 | 
				
			||||||
    case 40900 : return type === 1 ? 409001 : undefined
 | 
					    case 40900 : return type === 1 ? 409001 : undefined
 | 
				
			||||||
    //会车 506-6为1都报
 | 
					    //会车 506-6为1都报
 | 
				
			||||||
    case 41300 : return type === 1 ? 413001: (param506Str[5]===1?413002:undefined)
 | 
					    case 41300 : return type === 1
 | 
				
			||||||
 | 
					      ? 413001
 | 
				
			||||||
 | 
					      : (param506Str[5] == 1 ? undefined : 413002)
 | 
				
			||||||
    //超车
 | 
					    //超车
 | 
				
			||||||
    case 41400 : return type === 1
 | 
					    case 41400 : return type === 1
 | 
				
			||||||
      ? (param405Str == 1 && (num == count)?undefined:414001)
 | 
					      ? (param405Str == 1 && (num == count)?undefined:414001)
 | 
				
			||||||
 | 
				
			|||||||
@ -2,21 +2,21 @@
 | 
				
			|||||||
//考试回放开关
 | 
					//考试回放开关
 | 
				
			||||||
export const judgeConfig = {
 | 
					export const judgeConfig = {
 | 
				
			||||||
  //本地目录开关
 | 
					  //本地目录开关
 | 
				
			||||||
  isTrajectoryOpen: false,
 | 
					  isTrajectoryOpen: true,
 | 
				
			||||||
  //是否开启拍照
 | 
					  //是否开启拍照
 | 
				
			||||||
  isPhotoOpen: true,
 | 
					  isPhotoOpen: false,
 | 
				
			||||||
  //扣分语音是否强制开启
 | 
					  //扣分语音是否强制开启
 | 
				
			||||||
  kfVoiceOpen: true,
 | 
					  kfVoiceOpen: false,
 | 
				
			||||||
  //忽略的考试项目
 | 
					  //忽略的考试项目
 | 
				
			||||||
  ignoreProjects:[41],
 | 
					  ignoreProjects:[],
 | 
				
			||||||
  // 是否忽略考试前熄火、车门检查
 | 
					  // 是否忽略考试前熄火、车门检查
 | 
				
			||||||
  isCheckFireOpen: true,
 | 
					  isCheckFireOpen: true,
 | 
				
			||||||
  //是否开启Udp
 | 
					  //轨迹回放是否开启Udp
 | 
				
			||||||
  udpOpen:false,
 | 
					  udpOpen:true,
 | 
				
			||||||
  // 本地模型地址
 | 
					  // 本地模型地址
 | 
				
			||||||
  modelPath: 'models/model_enc',
 | 
					  modelPath: 'models/model_enc',
 | 
				
			||||||
  // 济南科目三
 | 
					  // 济南科目三
 | 
				
			||||||
  trajectoryPath: 'logs/2024_08_10/2024_08_10_14_24_20_0000000000001_342323199501470011_测试学员1/judge_exam_data.txt',
 | 
					  trajectoryPath: 'logs/2024_08_14/2024_08_14_11_30_20_9999805761528_344094918358022656_葛李弯/judge_exam_data.txt',
 | 
				
			||||||
  //四合一画面配置
 | 
					  //四合一画面配置
 | 
				
			||||||
  fourInOneScreen:{
 | 
					  fourInOneScreen:{
 | 
				
			||||||
    //gps位数
 | 
					    //gps位数
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user