2024-02-21 14:53:53 +08:00
|
|
|
|
import {string2Bytes,Array2Byte,getCurrentTime} from '../../../common/utils/tools'
|
2024-08-08 20:12:19 +08:00
|
|
|
|
import {testMarkRules,testRealExam} from '../dataTest/index'
|
2024-02-21 14:53:53 +08:00
|
|
|
|
|
|
|
|
|
|
import promptAction from '@ohos.promptAction'
|
|
|
|
|
|
import systemTime from '@ohos.systemDateTime';
|
2024-08-08 20:12:19 +08:00
|
|
|
|
import { expect } from '@ohos/hypium';
|
2024-01-31 14:35:16 +08:00
|
|
|
|
|
|
|
|
|
|
//获取本地扣分项
|
|
|
|
|
|
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
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2024-01-05 11:11:15 +08:00
|
|
|
|
|
|
|
|
|
|
// 中心信号转换
|
|
|
|
|
|
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])
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-02-23 10:43:11 +08:00
|
|
|
|
// c++评判考车行驶状态转换
|
2024-01-05 11:11:15 +08:00
|
|
|
|
export function getCarStatus(status: -1 | 0 | 1):string {
|
|
|
|
|
|
switch (status){
|
|
|
|
|
|
case -1:return '后退'
|
|
|
|
|
|
case 0:return '停车'
|
|
|
|
|
|
case 1:return '前进'
|
|
|
|
|
|
default :return ''
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 当前考车中心状态转换
|
2024-01-31 14:35:16 +08:00
|
|
|
|
export function getCarStatusType(carzt){
|
2024-01-05 11:11:15 +08:00
|
|
|
|
switch (carzt){
|
|
|
|
|
|
case -1:return [1,0]
|
|
|
|
|
|
case 0: return [0,0]
|
|
|
|
|
|
case 1: return [0,1]
|
2024-08-08 20:12:19 +08:00
|
|
|
|
default :return [0,0]
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 获取档位信号
|
|
|
|
|
|
export function getDwStatusType(dw){
|
|
|
|
|
|
switch (dw){
|
|
|
|
|
|
case 0:return [0,0,0,0]
|
|
|
|
|
|
case 1: return [0,0,0,1]
|
|
|
|
|
|
case 2: return [0,0,1,0]
|
|
|
|
|
|
case 3: return [0,0,1,1]
|
|
|
|
|
|
case 4: return [0,1,0,0]
|
|
|
|
|
|
case 5: return [0,1,0,1]
|
|
|
|
|
|
case 9: return [1,0,0,1]
|
|
|
|
|
|
default :return [0,0,0,0]
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 中心实时项目状态转换
|
2024-01-31 14:35:16 +08:00
|
|
|
|
export function getCenterProjectStatus(status){
|
2024-01-05 11:11:15 +08:00
|
|
|
|
switch (status){
|
2024-08-08 20:12:19 +08:00
|
|
|
|
//不考
|
2024-01-05 11:11:15 +08:00
|
|
|
|
case 0:return '00'
|
2024-08-08 20:12:19 +08:00
|
|
|
|
//未考
|
2024-01-05 11:11:15 +08:00
|
|
|
|
case 1:return '01'
|
2024-08-08 20:12:19 +08:00
|
|
|
|
//正在考
|
2024-08-15 09:01:09 +08:00
|
|
|
|
case 2:return '10'
|
2024-08-08 20:12:19 +08:00
|
|
|
|
//已考
|
2024-08-15 09:01:09 +08:00
|
|
|
|
case 3:return '11'
|
2024-08-08 20:12:19 +08:00
|
|
|
|
|
|
|
|
|
|
default :return '00'
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|
2024-01-31 14:35:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-15 16:22:48 +08:00
|
|
|
|
//获取科目三开始项目、结束项目语音
|
|
|
|
|
|
export function getKmProjectVoice(
|
|
|
|
|
|
projectCode,
|
|
|
|
|
|
// 1:项目开始 2:项目结束
|
2024-07-31 13:47:40 +08:00
|
|
|
|
type: 1 | 2,
|
|
|
|
|
|
judgeConfig,
|
|
|
|
|
|
lane
|
2024-05-15 16:22:48 +08:00
|
|
|
|
) {
|
|
|
|
|
|
const carInfo = globalThis.carInfo;
|
|
|
|
|
|
const { examSubject } = carInfo;
|
2024-07-31 13:47:40 +08:00
|
|
|
|
const param506Str = judgeConfig['506']?.split(',') || [];
|
|
|
|
|
|
const param512Str = judgeConfig['512']?.split(',') || [];
|
|
|
|
|
|
const param544Str = judgeConfig['544'] || 0;
|
|
|
|
|
|
const param405Str = judgeConfig['405'] || 0;
|
2024-05-15 16:22:48 +08:00
|
|
|
|
|
2024-07-31 13:47:40 +08:00
|
|
|
|
const {num,count} = lane
|
2024-05-15 16:22:48 +08:00
|
|
|
|
if(examSubject == 2){
|
|
|
|
|
|
return projectCode
|
|
|
|
|
|
}
|
|
|
|
|
|
switch (projectCode*1){
|
|
|
|
|
|
//直线行驶
|
|
|
|
|
|
case 40300: return type === 1 ? 403001 : 403002
|
|
|
|
|
|
//变更车道
|
|
|
|
|
|
case 40500: return type === 1 ? 405001 : 405002
|
|
|
|
|
|
//左转
|
|
|
|
|
|
case 40800 : return type === 1 ? 408001 : undefined
|
|
|
|
|
|
//右转
|
|
|
|
|
|
case 40900 : return type === 1 ? 409001 : undefined
|
2024-07-31 13:47:40 +08:00
|
|
|
|
//会车 506-6为1都报
|
2024-08-15 09:01:09 +08:00
|
|
|
|
case 41300 : return type === 1
|
|
|
|
|
|
? 413001
|
|
|
|
|
|
: (param506Str[5] == 1 ? undefined : 413002)
|
2024-07-31 13:47:40 +08:00
|
|
|
|
//超车
|
|
|
|
|
|
case 41400 : return type === 1
|
|
|
|
|
|
? (param405Str == 1 && (num == count)?undefined:414001)
|
|
|
|
|
|
: undefined
|
|
|
|
|
|
//直线行驶
|
|
|
|
|
|
case 40700 : return type === 1 ? 407001 : undefined
|
|
|
|
|
|
//TODO 通过学校 结束param544Str
|
|
|
|
|
|
case 41100 : return type === 1 ? (param512Str[2] ==3 ? 411001 : undefined):undefined
|
2024-05-15 16:22:48 +08:00
|
|
|
|
//通过车站
|
2024-07-31 13:47:40 +08:00
|
|
|
|
case 41200 : return type === 1 ? (param512Str[2] ==3 ? 412001 : undefined):undefined
|
|
|
|
|
|
//通过人行横道
|
|
|
|
|
|
case 41000 : return type === 1? (param512Str[2] == 3 ? 410001 : undefined):undefined
|
2024-05-15 16:22:48 +08:00
|
|
|
|
//靠边停车
|
|
|
|
|
|
case 40600 : return type === 1 ? 406001 : undefined
|
|
|
|
|
|
//掉头
|
|
|
|
|
|
case 41500 : return type === 1 ? 415001:undefined
|
2024-07-16 15:02:36 +08:00
|
|
|
|
//加减挡为
|
|
|
|
|
|
case 40400 : return type === 1 ? undefined : undefined
|
2024-05-15 16:22:48 +08:00
|
|
|
|
|
|
|
|
|
|
default :return undefined
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-08-12 10:19:31 +08:00
|
|
|
|
|
|
|
|
|
|
//获取科目三取消项目语音
|
|
|
|
|
|
export function getKmProjectCancelVoice(projectCode){
|
|
|
|
|
|
switch (projectCode*1){
|
|
|
|
|
|
//变更车道
|
|
|
|
|
|
case 40500: return 405004
|
|
|
|
|
|
//加减档
|
|
|
|
|
|
case 40400: return 404004
|
|
|
|
|
|
//超车
|
|
|
|
|
|
case 41400: return 414004
|
|
|
|
|
|
default :return 'empty'
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-02-21 14:53:53 +08:00
|
|
|
|
// 上传监管数据code转换
|
|
|
|
|
|
export function promptWxCode(
|
|
|
|
|
|
jkid:'17C52' | '17C54' |'17C55' | '17C53' | '17C56',
|
|
|
|
|
|
code:number
|
|
|
|
|
|
){
|
|
|
|
|
|
let toast = '';
|
2024-07-31 13:47:40 +08:00
|
|
|
|
|
2024-02-21 14:53:53 +08:00
|
|
|
|
const singlePlay = globalThis.singlePlay
|
|
|
|
|
|
if(singlePlay){
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
switch (jkid){
|
2024-08-20 14:49:22 +08:00
|
|
|
|
|
2024-02-21 14:53:53 +08:00
|
|
|
|
//项目开始
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
2024-07-31 13:47:40 +08:00
|
|
|
|
//TODO 兼容新监管code
|
|
|
|
|
|
// console.info('surenjun showToast')
|
|
|
|
|
|
// promptAction.showToast({
|
|
|
|
|
|
// message: decodeURIComponent(toast),
|
|
|
|
|
|
// duration: 4000
|
|
|
|
|
|
// });
|
2024-02-21 14:53:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 获取plc数据
|
|
|
|
|
|
export const plcStrToJson = async (plc:string) =>{
|
2024-05-15 16:22:48 +08:00
|
|
|
|
|
2024-02-21 14:53:53 +08:00
|
|
|
|
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,
|
|
|
|
|
|
//累计脉冲 溜车脉冲 超声波左后 超声波右后 超声波右前 超声波左前 座椅 仪表盘 后视镜 倒车镜 光照 雨量
|
2024-05-15 16:22:48 +08:00
|
|
|
|
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,
|
|
|
|
|
|
//TODO 数据待替换 油压 闪灯 信号灯
|
|
|
|
|
|
yy:0, sde:0, xhd:'',rmndg:0, wav:0 , mndg:''
|
2024-02-21 14:53:53 +08:00
|
|
|
|
},
|
|
|
|
|
|
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],
|
|
|
|
|
|
//龄期 经度因子 纬度因子 定位搜星数
|
2024-07-10 19:39:13 +08:00
|
|
|
|
age:p[87], jdyz:p[89], wdyz:p[88], dwsxs:p[84] || 0,
|
2024-02-21 14:53:53 +08:00
|
|
|
|
//@ts-ignore 角度搜星数
|
2024-07-10 19:39:13 +08:00
|
|
|
|
jdsxs:p[92].split('-')[1]*1 || 0
|
2024-02-21 14:53:53 +08:00
|
|
|
|
},
|
|
|
|
|
|
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
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-20 10:49:51 +08:00
|
|
|
|
export const senorToWXDataStr= async (tempData) => {
|
|
|
|
|
|
const {sensor,gps} = tempData;
|
|
|
|
|
|
const timeStr = await getTimeStr()
|
|
|
|
|
|
|
|
|
|
|
|
const {mkg,aqd,dh1,dh2, zfxd, yfxd, jgd, ygd,ssc , jsc, lhq, fsc, lb, ygq,wd} = sensor
|
|
|
|
|
|
const judgeSignal = [
|
|
|
|
|
|
//车门 安全带 熄火 发动机启动 左转向 右转向 前照灯近灯 前照灯远灯
|
|
|
|
|
|
mkg, aqd, dh1, dh2, zfxd, yfxd, jgd, ygd,
|
|
|
|
|
|
// 注车制动 行车制动 离合器 副制动 喇叭 雨刷 危险报警灯 示廓灯 系统未涉及的传感器信号
|
|
|
|
|
|
ssc , jsc, lhq, fsc, lb, ygq, 0, 0, 0
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
const judgeAnotherSignal = [
|
|
|
|
|
|
// 低三挡位 左侧单边桥1 左侧单边桥2 右侧单边桥1 右侧单边桥2 雾灯
|
2024-06-21 10:45:53 +08:00
|
|
|
|
'000', '0', '0', '0', '0', '0',,'0',
|
2024-06-20 10:49:51 +08:00
|
|
|
|
// 桩杆全无信号 左后绕车 右后绕车 右前绕车 左前绕车
|
|
|
|
|
|
'000', '0', '0', '0', '0', '0','0'
|
|
|
|
|
|
]
|
|
|
|
|
|
//@ts-ignore
|
|
|
|
|
|
const str1 = (judgeSignal.join('')*1).toString(16);
|
|
|
|
|
|
//@ts-ignore
|
|
|
|
|
|
const str2 = (judgeAnotherSignal.join('')*1).toString(16);
|
|
|
|
|
|
|
|
|
|
|
|
const wuXiData = [
|
|
|
|
|
|
// 卫星时间 精度 纬度 高度 方位角 俯仰角 速度角 速度 横滚 卫星定位状态
|
2024-06-21 10:45:53 +08:00
|
|
|
|
'$KSXT', timeStr, gps.jd, gps.wd, gps.hbg, gps.hxj, gps.fyj, '0' , gps.sd, '0', gps.dwzt,
|
2024-06-20 10:49:51 +08:00
|
|
|
|
//前天线可用星数 后天线可用星数 东向坐标位置 北向位置坐标 天向位置坐标 东向速度 北向速度 天向速度
|
2024-06-21 10:45:53 +08:00
|
|
|
|
'0', '0', '0', '0', '0', '0', '0', '0','0',
|
2024-06-20 10:49:51 +08:00
|
|
|
|
//@ts-ignore 评判信号1 评判信号2 发动机转速
|
2024-06-21 10:45:53 +08:00
|
|
|
|
// (judgeSignal.join('')*1).toString(16), (judgeAnotherSignal.join('')*1).toString(16) , sensor.fdjzs,
|
|
|
|
|
|
'0006', '0001' , sensor.fdjzs,
|
2024-06-20 10:49:51 +08:00
|
|
|
|
'0xFFFFFFF'
|
|
|
|
|
|
]
|
|
|
|
|
|
return wuXiData.map(d => (d + '')).join(',');
|
|
|
|
|
|
// console.log('wuXiData',wuXiData.join(','));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-21 10:45:53 +08:00
|
|
|
|
export const getTimeStr = async () =>{
|
|
|
|
|
|
const date = await systemTime.getDate()
|
|
|
|
|
|
const timeStr = '';
|
|
|
|
|
|
const Y = date.getFullYear();
|
|
|
|
|
|
const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) ;
|
|
|
|
|
|
const D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
|
|
|
|
|
|
const h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours());
|
|
|
|
|
|
const m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes());
|
|
|
|
|
|
const s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds());
|
|
|
|
|
|
const ss = (date.getMilliseconds() +'').slice(0,2);
|
|
|
|
|
|
return timeStr + Y + M +D +h +m +s +'.' + ss
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-02-23 10:43:11 +08:00
|
|
|
|
//蓝灯
|
2024-01-31 14:35:16 +08:00
|
|
|
|
export function sendBlue(){
|
|
|
|
|
|
const arrBlue = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00];
|
|
|
|
|
|
const arrBlueBuffer= Array2Byte(arrBlue).buffer
|
|
|
|
|
|
globalThis.lightLineUdp.send(arrBlueBuffer);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-02-23 10:43:11 +08:00
|
|
|
|
//绿灯
|
2024-01-31 14:35:16 +08:00
|
|
|
|
export function sendGreen(){
|
|
|
|
|
|
const arrGreen = [0x55, 0xaa, 0x01, 0x00, 0x02, 0x00, 0x03, 0x01];
|
|
|
|
|
|
const arrGreenBuffer= Array2Byte(arrGreen).buffer
|
|
|
|
|
|
globalThis.lightLineUdp.send(arrGreenBuffer);
|
|
|
|
|
|
}
|
2024-02-23 10:43:11 +08:00
|
|
|
|
|
|
|
|
|
|
//红灯
|
2024-01-31 14:35:16 +08:00
|
|
|
|
export function sendRed(){
|
|
|
|
|
|
const arrRed= [0x55, 0xaa, 0x01, 0x01, 0x02, 0x00, 0x03, 0x00];
|
|
|
|
|
|
const arrRedBuffer= Array2Byte(arrRed).buffer
|
|
|
|
|
|
globalThis.lightLineUdp.send(arrRedBuffer);
|
2024-05-15 16:22:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export const defaultJudgeConfigObj = {
|
|
|
|
|
|
//结束考试方式 0-不合格继续 1-考试不合格报靠边停车 2-不合格不报靠边 3-训练不合格报靠边 4-自动退出 5-不合格自动退出
|
|
|
|
|
|
302:'5',
|
|
|
|
|
|
332:'',
|
|
|
|
|
|
//是否能进行人工操作 0-不能人工评判 1-不能人工进项目 3-都不能
|
|
|
|
|
|
342:'',
|
|
|
|
|
|
//有项目未结束时可以靠边停车 0-否 1-是
|
|
|
|
|
|
343:'1',
|
|
|
|
|
|
//考试未结束且有扣分,是否可以退出
|
|
|
|
|
|
344:'0',
|
|
|
|
|
|
//直线行驶中是否可以进其它项目 0-否 1-是
|
|
|
|
|
|
348:'0',
|
|
|
|
|
|
//车上是否能点结束考试 0:否 1:是
|
|
|
|
|
|
353:'0',
|
|
|
|
|
|
//是否启动断电续考 0:否 1:是
|
|
|
|
|
|
369:'1',
|
|
|
|
|
|
//是否显示应考里程
|
|
|
|
|
|
375:'0',
|
|
|
|
|
|
//里程不够允许手工点靠边停车
|
|
|
|
|
|
387:'0',
|
|
|
|
|
|
//监管模式有扣分续考(0-否++1-是+把上次未考完的扣分带下来重新考试)
|
|
|
|
|
|
432:'1'
|
2024-01-05 11:11:15 +08:00
|
|
|
|
}
|