“wangzhongjie” 3b38330edd fix
2024-02-21 14:53:53 +08:00

269 lines
11 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {string2Bytes,Array2Byte,getCurrentTime} from '../../../common/utils/tools'
import {testMarkRules,testRealExam,testKm2Items} from '../dataTest/index'
import promptAction from '@ohos.promptAction'
import systemTime from '@ohos.systemDateTime';
//获取本地扣分项
export const getTestMarkRules = () =>{
testMarkRules.map((mark:any) => {
return {
itemno:mark.itemno*1,
markcatalog:mark.markcatalog,
markshow:mark.markshow,
markreal:mark.markreal*1,
markserial:mark.markserial,
kfxh:mark.kfxh
}
})
}
// 中心信号转换
export const getTranslateSignals = (tempItems) => {
const len = Math.floor(tempItems.length / 8);
const arr = [];
for(let i = 0;i < len;i++){
const temp = tempItems.slice( i*8 , (i+1)*8 );
arr.push(temp.join(''));
}
const temp = arr.map(numStr => parseInt(numStr,2))
return temp.map(item => string2Bytes(item , 8)[0])
}
// 当前考车行驶状态转换
export function getCarStatus(status: -1 | 0 | 1):string {
switch (status){
case -1:return '后退'
case 0:return '停车'
case 1:return '前进'
default :return ''
}
}
// 当前考车中心状态转换
export function getCarStatusType(carzt){
switch (carzt){
case -1:return [1,0]
case 0: return [0,0]
case 1: return [0,1]
}
}
// 中心实时项目状态转换
export function getCenterProjectStatus(status){
switch (status){
//不考
case 0:return '00'
//未考
case 1:return '01'
//已考
case 2:return '10'
}
}
// 上传监管数据code转换
export function promptWxCode(
jkid:'17C52' | '17C54' |'17C55' | '17C53' | '17C56',
code:number
){
let toast = '';
const singlePlay = globalThis.singlePlay
if(singlePlay){
return
}
switch (jkid){
//项目开始
case '17C52':
switch (code){
case 0:toast = '存在作弊嫌疑,已被取消或暂停考试';break;
case -1:toast = '无考生身份比对信息';break;
case -2:toast = '考试项目与考试安排信息不符';break;
case -3:toast = '考试设备未备案';break;
case -4:toast = '考试设备与考试项目不符';break;
case -5:toast = '考试设备使用状态异常';break;
case -6:toast = '考生考试车型与考试设备使用准驾车型范围不符';break;
case -7:toast = '该考生存在作弊嫌疑,已被暂停/取消考试';break;
case -8:toast = '项目开始时间不能小于科目开始时间';break;
case -9:toast = '存在未结束的考试项目、不能开始新的项目考试!';break;
case -10:toast = '科目三考车号牌不能为空';break;
case -11:toast = '同一考车存在未结束考试,不能开始应用于新的考试';break;
case -12:toast = '未找到考场记录';break;
case -13:toast = '未找到考车信息';break;
case -14:toast = '随机抽取考生的考车与当前考车不一致';break;
default:toast = '';break;
}
break;
//过程照片
case '17C54':
switch (code){
case -1:toast = '无当前科目考试信息';break;
case -2:toast = '考生身份证明号码与考生预约信息不符';break;
case -3:toast = '考试项目不正确';break;
case -4:toast = '考试过程中拍摄照片数量少于3张';break;
case -5:toast = '考试项目不符合要求';break;
case -6:toast = '存在未结束的考试项目!';break;
}
break;
//项目结束
case '17C55':
switch (code){
case -1:toast = '无当前考试项目开始信息';break;
case -2:toast = '考生身份证明号码与考生预约信息不符';break;
case -3:toast = '考试项目不正确';break;
case -4:toast = '考试设备序号不正确!';break;
case -5:toast = '考试项目结束时间写入错误';break;
case -6:toast = '考生未进行身份认证';break;
case -7:toast = '项目考试过程信息记录被非法篡改';break;
case -8:toast = '每个考试项目中必须至少抓拍一张照片';break;
case -12:toast = '未找到考场记录';break;
case -13:toast = '未找到考车信息';break;
case -15:toast = '考试过程信息必须由考车上传';break;
case -90:toast = '考试项目已经结束、无需重传';break;
case -91:toast = '实际道路考试,在完成科目考试时统一结束';break;
default:break;
}
break;
//扣分
case '17C53':
switch (code){
case 0:toast = '已存在同一时间的同一扣分记录';break
case -1:toast = '无当前考试项目开始信息';break;
case -2:toast = '扣分时间大于项目开始时间!';break;
case -3:toast = '考试项目与扣分项不符';break;
case -4:toast = '项目考试过程中,请传入当前考试项目代码';break;
case -5:toast = '考生未进行身份认证';break;
case -6:toast = '扣分时间写入错误';break;
case -7:toast = '项目考试过程信息记录被非法篡改';break;
case -12:toast = '未找到考场记录';break;
case -13:toast = '未找到考车信息';break;
case -15:toast = '考试过程信息必须由考车上传';break;
default:toast = '';break
}
break;
//考试结束
case '17C56':
switch (code){
case -1:toast = '无当前科目考试信息';break;
case -2:toast = '考生身份证明号码与考生预约信息不符';break;
case -3:toast = '考试结束时间不正确';break;
case -4:toast = '考试过程中拍摄照片数量少于3张';break;
case -5:toast = '考试项目不符合要求';break;
case -6:toast = '存在未结束的考试项目!';break;
case -7:toast = '传输的考试成绩非空';break;
case -91:toast = '考试成绩计算不一致';break;
case -91:toast = '日间考试已结束等待进行夜间考试';break;
default: toast = '';break
}
break;
default :break;
}
promptAction.showToast({
message: decodeURIComponent(toast),
duration: 4000
});
}
// 获取plc数据
export const plcStrToJson = async (plc:string) =>{
const p = plc.split(',').map((val,key)=>{
if(key !== 27 && key !== 92){
//@ts-ignore
return val*1
}else{
return val
}
});
let data:any = testRealExam;
const time = await systemTime.getCurrentTime()
const tempData = {
sensor:{
//安全带 车门门开关 手刹 脚刹 副刹 离合器 喇叭 示宽灯 近光灯 远光灯
aqd:p[19], mkg:p[14], ssc:p[13], jsc:p[12], fsc:p[18], lhq:p[17], lb:p[4], skd:p[9], jgd:p[7], ygd:p[8],
//左方向灯 右方向灯 双跳灯 雾灯 雨刮器 点火1 点火2 发动机转速 档位 车速
zfxd:p[2], yfxd:p[3], shtd:p[20],wd:p[10], ygq:p[11], dh1:p[5], dh2:p[6], fdjzs:p[25], dw:p[28], cs:p[23],
//@ts-ignore 方向盘
fxp:p[27].split('_')[0]*1,
//累计脉冲 溜车脉冲 超声波左后 超声波右后 超声波右前 超声波左前 座椅 仪表盘 后视镜 倒车镜 光照 雨量
ljmc:p[24], lcmc:0, csbzh:p[32], csbyh:p[30], csbyq:p[31], csbzq:p[29], zy:0, tbp:0, hsj:0, dcj:0, gx:0, yl:0
},
gps:{
//办卡类型 定位差分状态
bklx:p[56], dwzt:p[83],
//@ts-ignore 角度差分状态
jdzt:p[92].split('-')[0]*1,
//gps数据
//gps时间 经度 纬度 航向角 俯仰角 海拔高 高度差 速度
sj:time, jd:p[96], wd:p[95], hxj:p[90], fyj:p[91], hbg:p[85], gdc:p[86], sd:p[97],
//龄期 经度因子 纬度因子 定位搜星数
age:p[87], jdyz:p[89], wdyz:p[88], dwsxs:p[84],
//@ts-ignore 角度搜星数
jdsxs:p[92].split('-')[1]*1
},
gps2:data.gps,
vision:data.vision,
radar:data.radar,
extend:{}
}
return tempData
}
export const plcStrToWXJson = async (plc:string) =>{
const p = plc.split(',').map((val,key)=>{
if(key !== 27 && key !== 92){
//@ts-ignore
return val*1
}else{
return val
}
});
const timeStr = p[93] + '' + p[94];
const gps = {
//办卡类型 定位差分状态
bklx:p[56], dwzt:p[83],
// 经度 纬度 航向角 俯仰角 海拔高 高度差 速度
jd:p[96], wd:p[95], hxj:p[90], fyj:p[91], hbg:p[85], gdc:p[86], sd:p[97],
//龄期 经度因子 纬度因子 定位搜星数
age:p[87], jdyz:p[89], wdyz:p[88], dwsxs:p[84],
}
const judgeSignal = [
// 车门 安全带 熄火 发动机启动 左转向 右转向 前照灯近灯 前照灯远灯
p[14], p[19], p[5], p[6], p[2], p[3], p[7], p[8],
// 注车制动 行车制动 离合器 副制动 喇叭 雨刷 危险报警灯 示廓灯 系统未涉及的传感器信号
p[13], p[12], p[17], p[18], p[4], p[11], p[20], p[9], 0
]
const judgeAnotherSignal = [
// 低三挡位 左侧单边桥1 左侧单边桥2 右侧单边桥1 右侧单边桥2 雾灯
'000', '0', '0', '0', '0', p[10],
// 桩杆全无信号 左后绕车 右后绕车 右前绕车 左前绕车
'000', '0', '0', '0', '0'
]
const wuXiData = [
// 卫星时间 精度 纬度 高度 方位角 俯仰角 速度角 速度 横滚 卫星定位状态
'$KSXT', timeStr, gps.jd, gps.wd, gps.hbg, gps.hxj, gps.fyj, '' , gps.sd, '', gps.dwzt, gps.dwzt,
//前天线可用星数 后天线可用星数 东向坐标位置 北向位置坐标 天向位置坐标 东向速度 北向速度 天向速度
'', '', '', '', '', '', '', '',
//@ts-ignore 评判信号1 评判信号2 发动机转速
(judgeSignal.join('')*1).toString(16), (judgeAnotherSignal.join('')*1).toString(16) , p[25],
'0xFFFFFFF'
]
const wuXiDataStr = wuXiData.join(',')
return wuXiDataStr
}
export function sendBlue(){
const arrBlue = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00];
const arrBlueBuffer= Array2Byte(arrBlue).buffer
globalThis.lightLineUdp.send(arrBlueBuffer);
}
export function sendGreen(){
const arrGreen = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x00, 0x03, 0x01];
const arrGreenBuffer= Array2Byte(arrGreen).buffer
globalThis.lightLineUdp.send(arrGreenBuffer);
}
export function sendRed(){
const arrRed= [0x55, 0xaa, 0x01, 0x01, 0x02, 0x00, 0x03, 0x00];
const arrRedBuffer= Array2Byte(arrRed).buffer
globalThis.lightLineUdp.send(arrRedBuffer);
}