Merge remote-tracking branch 'origin/代理服务方案' into 代理服务方案

This commit is contained in:
surenjun 2025-04-23 14:39:49 +08:00
commit c726ec81cd
19 changed files with 300 additions and 251 deletions

View File

@ -5,9 +5,9 @@
"name": "default", "name": "default",
"material": { "material": {
"certpath": "C:\\Users\\93218\\.ohos\\config\\openharmony\\auto_ohos_default_subject-two_com.oh.dts.cer", "certpath": "C:\\Users\\93218\\.ohos\\config\\openharmony\\auto_ohos_default_subject-two_com.oh.dts.cer",
"storePassword": "0000001B2A120129476E60A13CB90F2A118FC1DACD776EBF625CBC8C75E83CE8BC2DA4E57F6E6868B0CA45", "storePassword": "0000001BF9CC4AD294FB6AC2D8A5278FFFD88EEDF04B79D51256E066D7DD5E2E118E445F67468002D624CA",
"keyAlias": "debugKey", "keyAlias": "debugKey",
"keyPassword": "0000001BE3163B872A727924E46576C7DF1ACBE4283BA076307E0B53166334958EEE387B446DD981CBE5BA", "keyPassword": "0000001BF982C0CB222DFA95970757643CDB791BF698C923C974A4A81AD8C2B28B4CE7839BED505B4EE3E2",
"profile": "C:\\Users\\93218\\.ohos\\config\\openharmony\\auto_ohos_default_subject-two_com.oh.dts.p7b", "profile": "C:\\Users\\93218\\.ohos\\config\\openharmony\\auto_ohos_default_subject-two_com.oh.dts.p7b",
"signAlg": "SHA256withECDSA", "signAlg": "SHA256withECDSA",
"storeFile": "C:\\Users\\93218\\.ohos\\config\\openharmony\\auto_ohos_default_subject-two_com.oh.dts.p12" "storeFile": "C:\\Users\\93218\\.ohos\\config\\openharmony\\auto_ohos_default_subject-two_com.oh.dts.p12"

View File

@ -27,7 +27,7 @@
#define JUDGE_VERSION_MAJOR 1 #define JUDGE_VERSION_MAJOR 1
#define JUDGE_VERSION_MINOR 0 #define JUDGE_VERSION_MINOR 0
#define JUDGE_VERSION_PATCH 3 #define JUDGE_VERSION_PATCH 3
#define JUDGE_VERSION_STAMP "2504171042b" #define JUDGE_VERSION_STAMP "2504191100b"
#if JUDGE_USE_OLD #if JUDGE_USE_OLD
# undef JUDGE_VERSION_STAMP # undef JUDGE_VERSION_STAMP
# define JUDGE_VERSION_STAMP "2411121010b.old" # define JUDGE_VERSION_STAMP "2411121010b.old"

View File

@ -121,6 +121,7 @@ namespace siteof
siteof_declare(JXYTSF001); siteof_declare(JXYTSF001);
siteof_declare(hnzzkm3); siteof_declare(hnzzkm3);
siteof_declare(jswxbz); siteof_declare(jswxbz);
siteof_declare(scms);
siteof_declare(tcrx); //无锡所检测地点版本特殊 siteof_declare(tcrx); //无锡所检测地点版本特殊

View File

@ -135,7 +135,8 @@ ErrorCode ExamCarSub2::examGoonExam()
} }
//已经不合格了 如果是考试模式,只要分数不合格就立即结束考试 //已经不合格了 如果是考试模式,只要分数不合格就立即结束考试
if( (isExamMode() && !isQualified()) || allItemFinish() ) //20250418无锡科目二考试结束的地方网络不好存在考试结束无法上传需要支持ykxm项目全部做完了评判初始化、开始考试能调用成功问过工程wins是这么操作的。
if( (isExamMode() && !isQualified()) /*|| allItemFinish()*/ )
{ {
//createEventExamFinish(ExamFinishAuto); //杨 20240724 都由苏那边控制 //createEventExamFinish(ExamFinishAuto); //杨 20240724 都由苏那边控制
return QE(errorBeginNotQual); //已经不合格了 return QE(errorBeginNotQual); //已经不合格了
@ -347,7 +348,7 @@ void ExamCarSub2::dealJudgeExam()
} }
if(allItemFinish()) //如果所有项目都做过了,就不用再读项目了 if(allItemFinish()) //如果所有项目都做过了,就不用再读项目了
{ {
logdebug("allItemFinish"); //logdebug("allItemFinish");
return; return;
} }

View File

@ -1045,6 +1045,14 @@ void ExamCarSub3::UpdateCarParmWithSystemParm()
} }
}; };
const auto PARM_NO3_70 = [&](const TSystemparm* parm)->void
{
if(parm->TXT1 != "")
{
m_car.XiHuo = std::atoi(parm->TXT1.c_str());
}
};
//得到考车参数 //得到考车参数
int parm3Size = TableSysParm->parm3Size(); int parm3Size = TableSysParm->parm3Size();
for(int i = 0; i < parm3Size; i++) for(int i = 0; i < parm3Size; i++)
@ -1094,6 +1102,7 @@ void ExamCarSub3::UpdateCarParmWithSystemParm()
PARM_CASE_WITH(61); //61:按车型设置的靠边停车参数 PARM_CASE_WITH(61); //61:按车型设置的靠边停车参数
PARM_CASE_WITH(62); //62:按车型设置的夜间模拟灯光触发条件 PARM_CASE_WITH(62); //62:按车型设置的夜间模拟灯光触发条件
PARM_CASE_WITH(63); //63:满分学习的学员考试必考项目(非正常的科目三学员),目前可以暂不考虑这种学员 PARM_CASE_WITH(63); //63:满分学习的学员考试必考项目(非正常的科目三学员),目前可以暂不考虑这种学员
PARM_CASE_WITH(70); //同500熄火参数
PARM_SWITCH_END; PARM_SWITCH_END;
} }

View File

@ -282,6 +282,10 @@ void Sub3Judge20Comm::Init_ZongHe()
//自动熄火评判方式:熄火次数扣分,1:根据PLC熄火次数 2根据点火2其它值根据发动机转速为0或点火2+转速大于100 //自动熄火评判方式:熄火次数扣分,1:根据PLC熄火次数 2根据点火2其它值根据发动机转速为0或点火2+转速大于100
m_itemvCJH.zdxhkf = s500.size() > 1 && s500[1] != "" ? std::atoi(s500[1].c_str()) : 0; m_itemvCJH.zdxhkf = s500.size() > 1 && s500[1] != "" ? std::atoi(s500[1].c_str()) : 0;
if(tcar->XiHuo != INVALID_INDEX) //优先以车型代码参数NO3=70,同500参数
{
m_itemvCJH.zdxhkf = tcar->XiHuo;
}
//踩副刹时长 //踩副刹时长
m_itemvCJH.fscys = s500.size() > 2 && s500[2] != "" ? std::atoi(s500[2].c_str()) : 5; m_itemvCJH.fscys = s500.size() > 2 && s500[2] != "" ? std::atoi(s500[2].c_str()) : 5;
//挡位扣分间隔 //挡位扣分间隔
@ -1316,9 +1320,23 @@ void Sub3Judge20Comm::Judge_KongDangHuaXing()
//空挡滑行30115 相关评判 //空挡滑行30115 相关评判
if(m_itemvCJH.kdhx_tk > 0) if(m_itemvCJH.kdhx_tk > 0)
{ {
if(sor.dw > 0 || cg->move != moveForward || Tools::isZero(gps.sd) || sor.lhq == SYES || bool i = false;
(ksdd == siteof::changzhoukm3 && sor.lhq == SYES) || if(sor.dw > 0 || cg->move != moveForward || Tools::isZero(gps.sd))
(ksdd == siteof::zjhz && sor.lhq == SYES)) {
i = true;
}
if(ksdd != siteof::scms && sor.lhq == SYES)
{
i = true;
}
const std::vector<std::string>& s507 = TableSysSet->asArray507();
std::string ss507 = s507.size() > 11 ? s507[11] : "";
if(ss507 != "1" && sor.lhq == SYES)
{
i = true;
}
if(i)
{ {
m_itemvCJH.kdhx_tk = 0; m_itemvCJH.kdhx_tk = 0;
} }
@ -4557,6 +4575,7 @@ void Sub3Judge20Comm::Judge_YueJi_JiaJianDang()
if(gps.sd < 5.0 && gps1.sd < 5.0 && gps2.sd < 5.0) return; if(gps.sd < 5.0 && gps1.sd < 5.0 && gps2.sd < 5.0) return;
#define HIS(x) m_car->historySensor(x).dw
//SysSet[425] 一档一离合相关 //SysSet[425] 一档一离合相关
// (* // (*
// 加减档位操作挂一个挡位要松一次离合器(项目,全程0-否 1-是)() // 加减档位操作挂一个挡位要松一次离合器(项目,全程0-否 1-是)()
@ -4566,8 +4585,7 @@ void Sub3Judge20Comm::Judge_YueJi_JiaJianDang()
TKM3Item* item14 = m_car->findExamItem(Sub3ItemType14Jjdw);//加减挡 TKM3Item* item14 = m_car->findExamItem(Sub3ItemType14Jjdw);//加减挡
if(item14 && item14->TestPro == ItemProFlagIdle && ss425 == "1") if(item14 && item14->TestPro == ItemProFlagIdle && ss425 == "1")
{ {
const TSensorInfo& sor3 = m_car->historySensor(3); if(sor.dw == HIS(1) && sor.dw != HIS(2) && sor.dw != HIS(3) && sor.dw > 0)
if(sor.dw == sor1.dw && sor.dw != sor2.dw && sor.dw != sor3.dw && sor.dw > 0)
{ {
int dw = sor.dw; int dw = sor.dw;
int k = 0; int k = 0;
@ -4580,18 +4598,12 @@ void Sub3Judge20Comm::Judge_YueJi_JiaJianDang()
} }
const TSensorInfo& sori = m_car->historySensor(i); const TSensorInfo& sori = m_car->historySensor(i);
int dw_i0 = sori.dw;
int dw_i1 = m_car->historySensor(i + 1).dw;
int dw_i2 = m_car->historySensor(i + 2).dw;
int dw_i3 = m_car->historySensor(i + 3).dw;
int dw_i4 = m_car->historySensor(i + 4).dw;
int dw_i5 = m_car->historySensor(i + 5).dw;
int dw_i6 = m_car->historySensor(i + 6).dw;
if(sori.lhq == SNOT) break; if(sori.lhq == SNOT) break;
if(dw_i0 == SNOT) continue; if(sori.dw == 0) continue;
if(dw != dw_i0 && dw_i0 == dw_i1 && dw_i0 == dw_i2 && dw_i0 == dw_i3 && if(dw != sori.dw &&
dw_i0 == dw_i4 && dw_i0 == dw_i5 && dw_i0 == dw_i6) sori.dw == HIS(i+1) && sori.dw == HIS(i+2) && sori.dw == HIS(i+3) &&
sori.dw == HIS(i+4) && sori.dw == HIS(i+5) && sori.dw == HIS(i+6))
{ {
k = k + 1; k = k + 1;
dw = sori.dw; dw = sori.dw;
@ -4604,11 +4616,45 @@ void Sub3Judge20Comm::Judge_YueJi_JiaJianDang()
} }
} }
/*
if Ctl.ksdd = 'wuxijiance' then
begin
if (cg.di_lhq = 1) and (cg.ai_dw = 3) then
begin
for i := 1 to 100 do
begin
if lscg[zj(i)].di_lhq = 0 then
Break;
if lscg[zj(i)].ai_dw > 3 then
Break;
if lscg[zj(i)].ai_dw = 1 then
begin
Mark(14, '01', True);
Break;
end;
end;
end;
end;
*/
int count = m_car->historyCount(); int count = m_car->historyCount();
bool btempkf = false;
bool btemp1 = false;
bool btemp2 = false;
//越级加减档持续时间 //越级加减档持续时间
if(m_itemvCJH.yjjdcxsj == 0) if(m_itemvCJH.yjjdcxsj == 0)
{ {
if(sor.dw == sor1.dw && sor.dw == sor2.dw && sor.dw > 0 && sor.dw < 9 && bool ix = 0;
if(sor.lhq == SNOT)
{
ix = 1;
}
if(ksdd == siteof::lfgakm3)
{
ix = 1;
}
if(sor.dw == HIS(1) && sor.dw == HIS(2) && sor.dw > 0 && sor.dw < 9 &&
sor.lhq == SNOT && gps.sd > 5 && !IS_C2(m_carType) && !IS_C5(m_carType)) //增加了车速>5 20151214 sor.lhq == SNOT && gps.sd > 5 && !IS_C2(m_carType) && !IS_C5(m_carType)) //增加了车速>5 20151214
{ {
for(int i = 3; i < 53; i++) for(int i = 3; i < 53; i++)
@ -4619,31 +4665,27 @@ void Sub3Judge20Comm::Judge_YueJi_JiaJianDang()
} }
const TChuanGan* hisi = m_car->historyChuanGan(i); const TChuanGan* hisi = m_car->historyChuanGan(i);
const TSensorInfo& sori = hisi->real.sensor; const TSensorInfo& sori = hisi->real.sensor;
int dw_i0 = sori.dw;
if(dw_i0 != 0) continue;
int dw_i1 = m_car->historySensor(i + 1).dw; if(sori.dw >= sor.dw && sori.lhq == SNOT) break;
int dw_i2 = m_car->historySensor(i + 2).dw; if(sori.dw + 1 == sor.dw && sori.lhq == SNOT) break;
if(dw_i1 >= sor.dw && sori.lhq == SNOT) break; if(sori.dw == 0)
if(dw_i1 + 1 == sor.dw && sori.lhq == SNOT) break; btemp1 = true;
if(sori.lhq == SYES)
btemp2 = true;
if(ksdd == siteof::shandong)
btemp2 = true;
if(ksdd == siteof::scms || ksdd == siteof::hnay || ksdd == siteof::lfgakm3)
btemp1 = true;
if(btemp1 && btemp2)
btempkf = true;
if(dw_i1 < sor.dw && dw_i1 > 0 && dw_i1 == dw_i2) if(sori.dw < sor.dw && HIS(i+1) == sori.dw && sori.dw > 0)
{ {
if(sor.dw - dw_i1 > 1 && m_itemvCJH.yjjdkfjs != hisi->tkCnt) if(sor.dw - sori.dw > 1 && m_itemvCJH.yjjdkfjs != hisi->tkCnt && btempkf)
{ {
bool FindFlag = false;
if(ksdd == siteof::JXNC || m_itemvCJH.qcyjjdkf == 1)
{
FindFlag = true;
}
TKM3Item* item14 = m_car->findExamItem(Sub3ItemType14Jjdw); //加减挡 TKM3Item* item14 = m_car->findExamItem(Sub3ItemType14Jjdw); //加减挡
if(item14 && item14->TestPro > ItemProFlagIdle) if((item14 && item14->TestPro > ItemProFlagIdle) || ksdd == siteof::JXNC || m_itemvCJH.qcyjjdkf == 1)
{
FindFlag = true;
}
if(FindFlag == true)
{ {
JUDGE_MARK_SUB3(14, "01", true); JUDGE_MARK_SUB3(14, "01", true);
} }
@ -4660,12 +4702,18 @@ void Sub3Judge20Comm::Judge_YueJi_JiaJianDang()
} }
else if(m_itemvCJH.yjjdcxsj == 1) else if(m_itemvCJH.yjjdcxsj == 1)
{ {
const TSensorInfo& sor2 = m_car->historySensor(2); bool ix = 0;
const TSensorInfo& sor3 = m_car->historySensor(3); if(sor.lhq == SNOT && sor1.lhq == SNOT)
const TSensorInfo& sor4 = m_car->historySensor(4); {
if(sor.dw == sor1.dw && sor.dw == sor2.dw && sor.dw == sor3.dw && sor.dw == sor4.dw && ix = 1;
sor.dw > 0 && sor.dw < 9 && sor.lhq == SNOT && sor4.lhq == SNOT && gps.sd > 5 && }
!IS_C2(m_carType) && !IS_C5(m_carType)) //增加了车速>5 20151214 if(ksdd == siteof::lfgakm3)
{
ix = 1;
}
if(sor.dw == HIS(1) && sor.dw == HIS(2) && sor.dw == HIS(3) && sor.dw == HIS(4) &&
sor.dw > 0 && sor.dw < 9 && sor.lhq == SNOT && sor1.lhq == SNOT &&
gps.sd > 5 && !IS_C2(m_carType) && !IS_C5(m_carType)) //增加了车速>5 20151214
{ {
for(int i = 5; i <= 55; i++) for(int i = 5; i <= 55; i++)
{ {
@ -4676,35 +4724,29 @@ void Sub3Judge20Comm::Judge_YueJi_JiaJianDang()
const TChuanGan* hisi = m_car->historyChuanGan(i); const TChuanGan* hisi = m_car->historyChuanGan(i);
const TSensorInfo& sori = hisi->real.sensor; const TSensorInfo& sori = hisi->real.sensor;
int dw_i0 = sori.dw;
if(dw_i0 != 0) continue;
int dw_i1 = m_car->historySensor(i + 1).dw; if(sori.dw > sor.dw && sori.lhq == SNOT) break;
int dw_i2 = m_car->historySensor(i + 2).dw; if(sori.dw + 1 == sor.dw && sori.lhq == SNOT) break;
int dw_i3 = m_car->historySensor(i + 3).dw;
int dw_i4 = m_car->historySensor(i + 4).dw;
int dw_i5 = m_car->historySensor(i + 5).dw;
if(dw_i1 > sor.dw && sori.lhq == SNOT) break; if(sori.dw == 0)
if(dw_i1 + 1 == sor.dw && sori.lhq == SNOT) break; btemp1 = true;
if(sori.lhq == SYES)
btemp2 = true;
if(ksdd == siteof::shandong)
btemp2 = true;
if(ksdd == siteof::scms || ksdd == siteof::hnay || ksdd == siteof::lfgakm3)
btemp1 = true;
if(btemp1 && btemp2)
btempkf = true;
if(dw_i1 < sor.dw && dw_i1 > 0 && if(sori.dw < sor.dw &&
dw_i2 == dw_i1 && dw_i3 == dw_i1 && dw_i4 == dw_i1 && dw_i5 == dw_i1) HIS(i+1) == sori.dw && HIS(i+2) == sori.dw &&
HIS(i+3) == sori.dw && HIS(i+4) == sori.dw && sori.dw > 0)
{ {
if(sor.dw - dw_i1 > 1 && m_itemvCJH.yjjdkfjs != hisi->tkCnt) if(sor.dw - sori.dw > 1 && m_itemvCJH.yjjdkfjs != hisi->tkCnt && btempkf)
{ {
bool FindFlag = false;
if(ksdd == siteof::JXNC || m_itemvCJH.qcyjjdkf == 1)
{
FindFlag = true;
}
TKM3Item* item14 = m_car->findExamItem(Sub3ItemType14Jjdw); //加减挡 TKM3Item* item14 = m_car->findExamItem(Sub3ItemType14Jjdw); //加减挡
if(item14 && item14->TestPro > ItemProFlagIdle) if((item14 && item14->TestPro > ItemProFlagIdle) || ksdd == siteof::JXNC || m_itemvCJH.qcyjjdkf == 1)
{
FindFlag = true;
}
if(FindFlag == true)
{ {
JUDGE_MARK_SUB3(14, "01", true); JUDGE_MARK_SUB3(14, "01", true);
} }
@ -4721,18 +4763,20 @@ void Sub3Judge20Comm::Judge_YueJi_JiaJianDang()
} }
else if(m_itemvCJH.yjjdcxsj == 2) else if(m_itemvCJH.yjjdcxsj == 2)
{ {
const TSensorInfo& sor3 = m_car->historySensor(3); bool ix = 0;
const TSensorInfo& sor4 = m_car->historySensor(4); if(sor.lhq == SNOT && sor2.lhq == SNOT)
const TSensorInfo& sor5 = m_car->historySensor(5); {
const TSensorInfo& sor6 = m_car->historySensor(6); ix = 1;
const TSensorInfo& sor7 = m_car->historySensor(7); }
const TSensorInfo& sor8 = m_car->historySensor(8); if(ksdd == siteof::lfgakm3)
{
ix = 1;
}
if(sor.dw == sor1.dw && sor.dw == sor2.dw && sor.dw == sor3.dw && if(sor.dw == HIS(1) && sor.dw == HIS(2) && sor.dw == HIS(3) &&
sor.dw == sor4.dw && sor.dw == sor5.dw && sor.dw == sor6.dw && sor.dw == HIS(4) && sor.dw == HIS(5) && sor.dw == HIS(6) &&
sor.dw == sor7.dw && sor.dw == sor8.dw && sor.dw > 0 && sor.dw == HIS(7) && sor.dw == HIS(8) && sor.dw > 0 && sor.dw < 9 &&
sor.dw < 9 && sor.lhq == SNOT && sor2.lhq == SNOT && ix == 1 && gps.sd > 5 && !IS_C2(m_carType) && !IS_C5(m_carType)) //增加了车速>5 20151214
gps.sd > 5 && !IS_C2(m_carType) && !IS_C5(m_carType)) //增加了车速>5 20151214
{ {
for(int i = 9; i < 59; i++) for(int i = 9; i < 59; i++)
{ {
@ -4742,44 +4786,31 @@ void Sub3Judge20Comm::Judge_YueJi_JiaJianDang()
} }
const TChuanGan* hisi = m_car->historyChuanGan(i); const TChuanGan* hisi = m_car->historyChuanGan(i);
const TSensorInfo& sori = hisi->real.sensor; const TSensorInfo& sori = hisi->real.sensor;
int dw_i0 = sori.dw;
if(dw_i0 != 0) continue;
int dw_i1 = m_car->historySensor(i + 1).dw; if(sori.dw > sor.dw && sori.lhq == SNOT) break;
int dw_i2 = m_car->historySensor(i + 2).dw; if(sori.dw + 1 == sor.dw && sori.lhq == SNOT) break;
int dw_i3 = m_car->historySensor(i + 3).dw;
int dw_i4 = m_car->historySensor(i + 4).dw;
int dw_i5 = m_car->historySensor(i + 5).dw;
int dw_i6 = m_car->historySensor(i + 6).dw;
int dw_i7 = m_car->historySensor(i + 7).dw;
int dw_i8 = m_car->historySensor(i + 8).dw;
int dw_i9 = m_car->historySensor(i + 9).dw;
int dw_i10 = m_car->historySensor(i + 10).dw;
if(dw_i1 > sor.dw && sori.lhq == SNOT) break; if(sori.dw == 0)
if(dw_i1 + 1 == sor.dw && sori.lhq == SNOT) break; btemp1 = true;
if(sori.lhq == SYES)
btemp2 = true;
if(ksdd == siteof::shandong)
btemp2 = true;
if(ksdd == siteof::scms || ksdd == siteof::hnay || ksdd == siteof::lfgakm3)
btemp1 = true;
if(btemp1 && btemp2)
btempkf = true;
if(dw_i1 < sor.dw && dw_i1 > 0 && dw_i2 == dw_i1 && dw_i3 == dw_i1 && if(sori.dw < sor.dw &&
dw_i4 == dw_i1 && dw_i5 == dw_i1 && dw_i6 == dw_i1 && dw_i7 == dw_i1 && HIS(i+1) == sori.dw && HIS(i+2) == sori.dw && HIS(i+3) == sori.dw &&
dw_i8 == dw_i1 && dw_i9 == dw_i1 && dw_i10 == dw_i1) HIS(i+4) == sori.dw && HIS(i+5) == sori.dw && HIS(i+6) == sori.dw &&
HIS(i+7) == sori.dw && HIS(i+8) == sori.dw && HIS(i+9) == sori.dw && sori.dw > 0)
{ {
if(sor.dw - dw_i1 > 1 && m_itemvCJH.yjjdkfjs != hisi->tkCnt) if(sor.dw - sori.dw > 1 && m_itemvCJH.yjjdkfjs != hisi->tkCnt && btempkf)
{ {
bool FindFlag = false;
if(ksdd == siteof::JXNC || m_itemvCJH.qcyjjdkf == 1)
{
FindFlag = true;
}
TKM3Item* item14 = m_car->findExamItem(Sub3ItemType14Jjdw); //加减挡 TKM3Item* item14 = m_car->findExamItem(Sub3ItemType14Jjdw); //加减挡
if(item14 && item14->TestPro > ItemProFlagIdle) if((item14 && item14->TestPro > ItemProFlagIdle) || ksdd == siteof::JXNC || m_itemvCJH.qcyjjdkf == 1)
{ {
FindFlag = true;
}
if(FindFlag == true)
{
//安卓档位评判好像逻辑上做了优化,比方说越级加档,中间必须出现 0 才判1 跳 3 的情况,没出现 0 不判
//项目经理吉说的先按照这样做
JUDGE_MARK_SUB3(14, "01", true); JUDGE_MARK_SUB3(14, "01", true);
} }
else else
@ -4800,44 +4831,23 @@ void Sub3Judge20Comm::Judge_YueJi_JiaJianDang()
{ {
break; break;
} }
const TChuanGan* hisi = m_car->historyChuanGan(i); const TChuanGan* hisi = m_car->historyChuanGan(i);
const TSensorInfo& sori = hisi->real.sensor; const TSensorInfo& sori = hisi->real.sensor;
int dw_i0 = sori.dw;
int dw_i1 = m_car->historySensor(i + 1).dw; if(sori.dw == 9) break;
int dw_i2 = m_car->historySensor(i + 2).dw;
int dw_i3 = m_car->historySensor(i + 3).dw;
int dw_i4 = m_car->historySensor(i + 4).dw;
int dw_i5 = m_car->historySensor(i + 5).dw;
int dw_i6 = m_car->historySensor(i + 6).dw;
int dw_i7 = m_car->historySensor(i + 7).dw;
int dw_i8 = m_car->historySensor(i + 8).dw;
int dw_i9 = m_car->historySensor(i + 9).dw;
if(dw_i0 == 9) break;
if(hisi->move != moveForward) break; if(hisi->move != moveForward) break;
if(dw_i0 < sor.dw && sori.lhq == SNOT) break; if(sori.dw < sor.dw && sori.lhq == SNOT) break;
if(dw_i0 - 1 == sor.dw && sori.lhq == SNOT) break; if(sori.dw - 1 == sor.dw && sori.lhq == SNOT) break;
if(dw_i0 > sor.dw && dw_i0 > 0 && if(sori.dw > sor.dw &&
dw_i1 == dw_i0 && dw_i2 == dw_i0 && dw_i3 == dw_i0 && HIS(i+1) == sori.dw && HIS(i+2) == sori.dw && HIS(i+3) == sori.dw &&
dw_i4 == dw_i0 && dw_i5 == dw_i0 && dw_i6 == dw_i0 && HIS(i+4) == sori.dw && HIS(i+5) == sori.dw && HIS(i+6) == sori.dw &&
dw_i7 == dw_i0 && dw_i8 == dw_i0 && dw_i9 == dw_i0) HIS(i+7) == sori.dw && HIS(i+8) == sori.dw && HIS(i+9) == sori.dw && sori.dw > 0)
{ {
if(dw_i0 - sor.dw > 1 && m_itemvCJH.yjjdkfjs != hisi->tkCnt) if(sori.dw - sor.dw > 1 && m_itemvCJH.yjjdkfjs != hisi->tkCnt)
{ {
bool FindFlag = false;
if(ksdd == siteof::JXNC || m_itemvCJH.qcyjjdkf == 1)
{
FindFlag = true;
}
TKM3Item* item14 = m_car->findExamItem(Sub3ItemType14Jjdw); //加减挡 TKM3Item* item14 = m_car->findExamItem(Sub3ItemType14Jjdw); //加减挡
if(item14 && item14->TestPro > ItemProFlagIdle) if((item14 && item14->TestPro > ItemProFlagIdle) || ksdd == siteof::JXNC || m_itemvCJH.qcyjjdkf == 1)
{
FindFlag = true;
}
if(FindFlag == true)
{ {
JUDGE_MARK_SUB3(14, "01", true); JUDGE_MARK_SUB3(14, "01", true);
} }

View File

@ -1468,6 +1468,8 @@ struct TCar
std::string XSJL_Parm; std::string XSJL_Parm;
int XiHuo = INVALID_INDEX;
//档位转速比 2014111 //档位转速比 2014111
struct TCarZsBl { int CarZsBmin = -1; int CarZsBMax = -1; }; struct TCarZsBl { int CarZsBmin = -1; int CarZsBMax = -1; };
std::array<TCarZsBl, 7> DwZsBl; //20141111 档位转速比 档位转速比 array[1..5] std::array<TCarZsBl, 7> DwZsBl; //20141111 档位转速比 档位转速比 array[1..5]

View File

@ -71,15 +71,15 @@ void MainWindow::init()
KIT_CONNECT(updateNextDoing()); KIT_CONNECT(updateNextDoing());
KIT_CONNECT(updateCheckVersion(int, const QString&)); KIT_CONNECT(updateCheckVersion(int, const QString&));
connect(&m_audio, SIGNAL(QMediaPlayer::error(QMediaPlayer::Error)), //connect(&m_audio, SIGNAL(QMediaPlayer::error(QMediaPlayer::Error)),
SLOT([&](QMediaPlayer::Error error) // SLOT([&](QMediaPlayer::Error error)
{ // {
QMediaPlayer::Error err = m_audio.error(); // QMediaPlayer::Error err = m_audio.error();
QString errStr = m_audio.errorString(); // QString errStr = m_audio.errorString();
//
logwarning("paly-audio file:%s, err:%d-%s ", // logwarning("paly-audio file:%s, err:%d-%s ",
filepath.toUtf8().data(), err, errStr.toUtf8().data()); // filepath.toUtf8().data(), err, errStr.toUtf8().data());
})); // }));
m_ui->loop->clear(); m_ui->loop->clear();
m_ui->loop->addItem(CL8(""), false); m_ui->loop->addItem(CL8(""), false);

View File

@ -413,7 +413,7 @@ p, li { white-space: pre-wrap; }
<rect> <rect>
<x>600</x> <x>600</x>
<y>180</y> <y>180</y>
<width>101</width> <width>111</width>
<height>20</height> <height>20</height>
</rect> </rect>
</property> </property>
@ -426,7 +426,7 @@ p, li { white-space: pre-wrap; }
<rect> <rect>
<x>600</x> <x>600</x>
<y>163</y> <y>163</y>
<width>101</width> <width>111</width>
<height>20</height> <height>20</height>
</rect> </rect>
</property> </property>

View File

@ -35,9 +35,9 @@ export default class ServiceExtImpl extends IdlServiceExtStub {
}).catch(err => { }).catch(err => {
callback(0, JSON.stringify({ callback(0, JSON.stringify({
code: 1, code: 1,
data: JSON.stringify({ data: {
code: 2300007 code: 2300007
}) }
})); }));
console.log("lixiao paste error", JSON.stringify(err)) console.log("lixiao paste error", JSON.stringify(err))
}) })

View File

@ -107,8 +107,8 @@ export const WarnFlagTipData = {
9: ['dianhuoVideo.wav', 'xihuoVideo.wav'], 9: ['dianhuoVideo.wav', 'xihuoVideo.wav'],
10: ['check31.wav'], 10: ['check31.wav'],
11: ['check30.wav'], 11: ['check30.wav'],
12: ['check28.wav'], 12: ['check29.wav'],
13: ['check29.wav'], 13: ['check28.wav'],
14: ['check11.wav'], 14: ['check11.wav'],
15: ['check12.wav'], 15: ['check12.wav'],
16: ['check13.wav'], 16: ['check13.wav'],
@ -136,8 +136,8 @@ export const RealNumData = {
8: 18, 8: 18,
9: 5, 9: 5,
10: 29, 10: 29,
11: 30, 11: 31,
12: 31, 12: 30,
13: 32, 13: 32,
14: 28, 14: 28,
15: 28, 15: 28,

View File

@ -5,6 +5,9 @@ import TopLogo from './compontents/TopLogo';
import testNapi from '@ohos.hiserialsdk'; import testNapi from '@ohos.hiserialsdk';
import { dateFormat } from '../common/utils/tools'; import { dateFormat } from '../common/utils/tools';
import { DwMapData, PassData, RealNumData, StackValueData, WarnFlagData, WarnFlagTipData } from '../mock'; import { DwMapData, PassData, RealNumData, StackValueData, WarnFlagData, WarnFlagTipData } from '../mock';
import FileUtil from '../common/utils/File';
import { GlobalConfig } from '../config';
import common from '@ohos.app.ability.common';
@Entry @Entry
@Component @Component
@ -37,6 +40,7 @@ export default struct Index {
@State stopFlag: boolean = false @State stopFlag: boolean = false
@State fromIndex: boolean = false @State fromIndex: boolean = false
private vocObj = null; private vocObj = null;
private context = getContext(this) as common.UIAbilityContext;
// private AccountTable = new AccountTable(()=>{},CommonConstants); // private AccountTable = new AccountTable(()=>{},CommonConstants);
aboutToAppear() { aboutToAppear() {
@ -114,28 +118,66 @@ export default struct Index {
} }
// //
carConfigurationInfoFn() { async carConfigurationInfoFn() {
// const fileUtil = new FileUtil(context) const fileUtil = new FileUtil(this.context)
// const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/deviceNo.txt'); const checkListStr = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/carcheck.txt');
// if (data === '' || data === undefined) {
// promptAction.showToast({ if (checkListStr === '' || checkListStr === undefined) {
// message: `请先进行设备注册`, //模拟真实数据
// duration: 3000 const param = {
// }); "body":
// globalThis.type='1' {
// globalThis.title=decodeURIComponent('请先进行设备注册') "carIdString": globalThis.carInfo.carId, //考车ID
// globalThis.errorDialog.open() "deviceNo": globalThis.deviceNo
// resolve('') }
// } else { }
// const fileData=JSON.parse(data)
// globalThis.deviceNo = fileData.deviceName carConfigurationInfo(param).then(res => {
// console.log('globalThis.deviceNo', globalThis.deviceNo) // @ts-ignore
// // getCarInfo() console.log('ES_CHECK_CAR_ITEM',JSON.stringify(res.body))
// resolve(fileData.deviceName) // @ts-ignore
// } if(res?.body?.ES_CHECK_CAR_ITEM){
if (globalThis.singlePlay) { // @ts-ignore
const str = "1:5;2:5;3:5;4:5;5:5;6:5;7:5;8:5;9:5;10:5;11:5;12:5;13:5;14:5;15:5;16:5;17:5;18:5;19:5;20:5;21:5;22:2;23:5;24:5" const data = res.body.ES_CHECK_CAR_ITEM[0].ITEMS.split(';');
const data = str.split(';') this.checkList = []
const list = data
list.map(res => {
const arr = res.split(':')
this.checkList.push({
'key': parseInt(arr[0]) + 2, 'time': arr[1]
})
})
this.checkListCopy = JSON.parse(JSON.stringify(this.checkList))
}else{
const str = "1:5;2:5;3:5;4:5;5:5;6:5;7:5;8:5;9:5;10:5;11:5;12:5;13:5;14:5;15:5;16:5;17:5;18:5;19:5;20:5;21:5;22:2;23:5;24:5"
const data = str.split(';')
this.checkList = []
const list = data
list.map(res => {
const arr = res.split(':')
this.checkList.push({
'key': parseInt(arr[0]) + 2, 'time': arr[1]
})
})
this.checkListCopy = JSON.parse(JSON.stringify(this.checkList))
}
}).catch((error) => {
console.log('error12error' + error)
const str = "1:5;2:5;3:5;4:5;5:5;6:5;7:5;8:5;9:5;10:5;11:5;12:5;13:5;14:5;15:5;16:5;17:5;18:5;19:5;20:5;21:5;22:2;23:5;24:5"
const data = str.split(';')
this.checkList = []
const list = data
list.map(res => {
const arr = res.split(':')
this.checkList.push({
'key': parseInt(arr[0]) + 2, 'time': arr[1]
})
})
this.checkListCopy = JSON.parse(JSON.stringify(this.checkList))
})
}else {
const data = checkListStr.split(';')
this.checkList = [] this.checkList = []
const list = data const list = data
list.map(res => { list.map(res => {
@ -147,30 +189,7 @@ export default struct Index {
this.checkListCopy = JSON.parse(JSON.stringify(this.checkList)) this.checkListCopy = JSON.parse(JSON.stringify(this.checkList))
return return
} }
//模拟真实数据
const param = {
"body":
{
"carIdString": globalThis.carInfo.carId, //考车ID
"deviceNo": globalThis.deviceNo
}
}
carConfigurationInfo(param).then(res => {
// @ts-ignore
const data = res.body.ES_CHECK_CAR_ITEM[0].ITEMS.split(';');
this.checkList = []
const list = data
list.map(res => {
const arr = res.split(':')
this.checkList.push({
'key': parseInt(arr[0]) + 2, 'time': arr[1]
})
})
this.checkListCopy = JSON.parse(JSON.stringify(this.checkList))
}).catch((error) => {
console.log('error12error' + error)
})
} }
async kszj() { async kszj() {
@ -224,8 +243,10 @@ export default struct Index {
this.warnFlag[26] = '2' this.warnFlag[26] = '2'
} }
} }
console.log('msgmsgmsg',msg)
if (that.index == 10 || that.index == 11 || that.index == 12 || that.index == 13) { if (that.index == 10 || that.index == 11 || that.index == 12 || that.index == 13) {
console.log('msgmsgmsg000',that.index,that.signArr[that.realNum[that.index]])
if (that.signArr[that.realNum[that.index]] != '1200') { if (that.signArr[that.realNum[that.index]] != '1200') {
that.warnFlag[that.index] = '2' that.warnFlag[that.index] = '2'
} else { } else {
@ -308,37 +329,37 @@ export default struct Index {
} }
initfackCheck(index){ initfackCheck(index){
const that=this const that=this
setTimeout(()=>{ setTimeout(()=>{
console.log('indexindex',index) console.log('indexindex',index)
if(index>=3){ if(index>=3){
this.getCheckList() this.getCheckList()
return return
} }
console.log('this.index',index,) console.log('this.index',index,)
that.passArray[index]=true that.passArray[index]=true
if(index==2){ if(index==2){
let flag=false let flag=false
console.log('globalThis.spzd[key]',globalThis.spzd) console.log('globalThis.spzd[key]',globalThis.spzd)
for(let key in globalThis.spzd){ for(let key in globalThis.spzd){
console.log('globalThis.spzd[key]',globalThis.spzd[key]) console.log('globalThis.spzd[key]',globalThis.spzd[key])
if(globalThis.spzd[key]){ if(globalThis.spzd[key]){
that.warnFlag[index]='1' that.warnFlag[index]='1'
flag=true flag=true
}
} }
if(!flag){ }
that.warnFlag[index]='2' if(!flag){
}
}else{
that.warnFlag[index]='2' that.warnFlag[index]='2'
} }
that.passArray=JSON.parse(JSON.stringify(that.passArray)) }else{
that.warnFlag=JSON.parse(JSON.stringify(that.warnFlag)) that.warnFlag[index]='2'
index++ }
this.initfackCheck(index) that.passArray=JSON.parse(JSON.stringify(that.passArray))
},1000) that.warnFlag=JSON.parse(JSON.stringify(that.warnFlag))
index++
this.initfackCheck(index)
},1000)
} }
async getCheckList() { async getCheckList() {
@ -456,14 +477,14 @@ export default struct Index {
} }
Row() { Row() {
Image(this.warnFlag[12] == '1' ? $r('app.media.zh_r') : this.warnFlag[12] == '2' ? $r('app.media.zh') : '') Image(this.warnFlag[13] == '1' ? $r('app.media.zh_r') : this.warnFlag[13] == '2' ? $r('app.media.zh') : '')
.width(103 * this.ratio)
.height(118.5 * this.ratio)
.visibility(this.passArray[12] ? Visibility.Visible : Visibility.Hidden)
Image(this.warnFlag[13] == '1' ? $r('app.media.yh_r') : this.warnFlag[13] == '2' ? $r('app.media.yh') : '')
.width(103 * this.ratio) .width(103 * this.ratio)
.height(118.5 * this.ratio) .height(118.5 * this.ratio)
.visibility(this.passArray[13] ? Visibility.Visible : Visibility.Hidden) .visibility(this.passArray[13] ? Visibility.Visible : Visibility.Hidden)
Image(this.warnFlag[12] == '1' ? $r('app.media.yh_r') : this.warnFlag[12] == '2' ? $r('app.media.yh') : '')
.width(103 * this.ratio)
.height(118.5 * this.ratio)
.visibility(this.passArray[12] ? Visibility.Visible : Visibility.Hidden)
} }
} }
.backgroundImage($r('app.media.rc')) .backgroundImage($r('app.media.rc'))

View File

@ -60,7 +60,7 @@ struct Index {
private context = getContext(this) as common.UIAbilityContext; private context = getContext(this) as common.UIAbilityContext;
private serviceExtProxy: IdlServiceExtProxy private serviceExtProxy: IdlServiceExtProxy
@State judgeVersion: string = "" @State judgeVersion: string = ""
private version: string = "2025.04.17.01" private version: string = "2025.04.22.01"
@Styles @Styles
commStyle(){ commStyle(){
@ -578,10 +578,10 @@ struct Index {
this.fileHelper = new FileHelper(); this.fileHelper = new FileHelper();
const time = await getCurrentTime() const time = await getCurrentTime()
const date = time.split(' ')[0] const date = time.split(' ')[0]
this.fileHelper.createAlbum(date);
this.fileHelper.createAlbum('jt') this.fileHelper.createAlbum('jt')
// this.fileHelper.createAlbum('2025-01-02') // this.fileHelper.createAlbum('2025-01-02')
this.fileHelper.createAlbum('pz'); this.fileHelper.createAlbum('pz');
this.fileHelper.createAlbum(date);
} }

View File

@ -111,7 +111,7 @@ struct Index {
FLAG: carInfo.flag, FLAG: carInfo.flag,
BK1: carInfo.bk1, BK1: carInfo.bk1,
BK2: carInfo.bk2, BK2: carInfo.bk2,
X_MCH:carInfo.x_mch, X_MCH: carInfo.x_mch,
}) })
console.info('surenjun =>carinfoArrr',JSON.stringify( this.carinfoArr)) console.info('surenjun =>carinfoArrr',JSON.stringify( this.carinfoArr))
} }

View File

@ -140,7 +140,9 @@ struct UserInfo {
// 同一学员连续第二次考试时不再验证身份 // 同一学员连续第二次考试时不再验证身份
if (this.currentUser.kssycs == '1' && this.systemParam.Param830Str == '1') { if (this.currentUser.kssycs == '1' && this.systemParam.Param830Str == '1') {
this.sfbdinterfaceFn() this.sfbdinterfaceFn()
} else { } else {
this.ksksLimit = false
this.showFaceCompare = true this.showFaceCompare = true
} }
} else { } else {
@ -148,6 +150,7 @@ struct UserInfo {
} }
} catch (e) { } catch (e) {
console.info('Throw Error', JSON.stringify(e)) console.info('Throw Error', JSON.stringify(e))
this.ksksLimit = false
} }
} }
@ -881,6 +884,7 @@ struct UserInfo {
//身份比对 //身份比对
async sfbdinterfaceFn() { async sfbdinterfaceFn() {
this.ksksLimit = false
globalThis.statue = 4 globalThis.statue = 4
this.stepFlag = true this.stepFlag = true
const carInfo = globalThis.carInfo; const carInfo = globalThis.carInfo;
@ -894,7 +898,7 @@ struct UserInfo {
carId, carId,
lsh: this.currentUser.lsh || '', lsh: this.currentUser.lsh || '',
examinationRoomId examinationRoomId
}); })
} }
this.currentUser.id = '1' this.currentUser.id = '1'
const avPlayer = this.avPlayer; const avPlayer = this.avPlayer;
@ -1280,7 +1284,7 @@ struct UserInfo {
return return
} }
//835参数值和预约考试次数对比 //835参数值和预约考试次数对比
if(Number(this.systemParam.Param835)<=Number(this.currentUser.yycs)){ if(Number(this.systemParam.Param835)<=Number(this.currentUser.yycs)&&!globalThis.singlePlay){
this.type='4' this.type='4'
this.title='当前考生预约考试次数为'+this.currentUser.yycs this.title='当前考生预约考试次数为'+this.currentUser.yycs
this.errorDialog.open() this.errorDialog.open()

View File

@ -73,6 +73,7 @@ export interface CARINFO {
FLAG: string, FLAG: string,
BK1: string, BK1: string,
BK2: string BK2: string
X_MCH: string
} }
export interface MAPPOINT { export interface MAPPOINT {

View File

@ -1,7 +1,7 @@
//考试回放开关 //考试回放开关
export const judgeConfig = { export const judgeConfig = {
//本地目录开关 //本地目录开关
isTrajectoryOpen: false, isTrajectoryOpen: true,
//是否开启拍照 //是否开启拍照
isPhotoOpen: true, isPhotoOpen: true,
//扣分语音是否强制开启 //扣分语音是否强制开启
@ -15,7 +15,7 @@ export const judgeConfig = {
// 本地模型地址 // 本地模型地址
modelPath: 'models/model_enc', modelPath: 'models/model_enc',
// 济南科目三 // 济南科目三
trajectoryPath: 'logs/2024_12_26/2024_12_26_14_12_51_2412505941910_370125200404041910_赵宇/judge_exam_data.txt', trajectoryPath: 'logs/2024_10_12/2024_10_12_11_50_10_9999427676823_744299437502336256_隋统/judge_exam_data.txt',
//四合一画面配置 //四合一画面配置
fourInOneScreen:{ fourInOneScreen:{
//gps位数 //gps位数

View File

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIICFjCCAZygAwIBAgIJAKp/RlmaT1oCMAoGCCqGSM49BAMDMGMxCzAJBgNVBAYT MIICFzCCAZygAwIBAgIJAO9FWZQgKzxyMAoGCCqGSM49BAMDMGMxCzAJBgNVBAYT
AkNOMRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkg AkNOMRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkg
VGVhbTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjUw VGVhbTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjUw
NDE1MDkwMzM2WhcNMzUwNDEzMDkwMzM2WjBKMRUwEwYDVQQDDAxpZGVfZGVtb19h NDIyMDc1NDI2WhcNMzUwNDIwMDc1NDI2WjBKMRUwEwYDVQQDDAxpZGVfZGVtb19h
cHAxDTALBgNVBAsTBFVuaXQxFTATBgNVBAoTDE9yZ2FuaXphdGlvbjELMAkGA1UE cHAxDTALBgNVBAsTBFVuaXQxFTATBgNVBAoTDE9yZ2FuaXphdGlvbjELMAkGA1UE
BhMCQ04wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQm//kXDxgKlUSc1COTY0Kq BhMCQ04wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQUPoxdYBvC4QlondlBnCEe
nYbFzDL+P7WhBd4LivOJmHHcWBh4L+vIC1+t+4prdF4Oy9KC9QAoH+VPYou5Taq9 oxxkFKTZwhcA+xW31gNCOOwboVPyCB++6EuUa/0fJ/jlEeyNzErXflXkGG7GZVPa
o1IwUDAdBgNVHQ4EFgQUwMgtlNBiWYUlHzLb3NzFySav544wDgYDVR0PAQH/BAQD o1IwUDAdBgNVHQ4EFgQUrAmchwjJTxwrv09H+c4xS7+oEvIwDgYDVR0PAQH/BAQD
AgeAMB8GA1UdIwQYMBaAFNuGtyIW1QuhS7fdJXu58QV9oi1HMAoGCCqGSM49BAMD AgeAMB8GA1UdIwQYMBaAFNuGtyIW1QuhS7fdJXu58QV9oi1HMAoGCCqGSM49BAMD
A2gAMGUCMQC9Nc7V1n17UoCL654+9WdsLHFn3JilQGXoCeeY3wI+gUMTzX46TB/T A2kAMGYCMQCZzMs9H/mMi+59hO4EfDHTXChO6QoBYH+pwB66g7dw7apGXhayBIwq
Yl9mO0cSvwkCMG/cucH1pP3ET2H3l466eEijj8yZF3aNCNY9mYtQsNcXsLpUMmWN qOeVnlTVbPkCMQCc2hQf+ypiZpZQog1dMSGdlNs8heypj97d7DahjTgEzrxGxcZK
qKa5HKyVmPM5ew== PtMtg35cJa+JtN4=
-----END CERTIFICATE----- -----END CERTIFICATE-----
67310D35AF33C65F515453B57F0093354AC76A9916134B0621D0116BCEA0E6C4 071A11E92B83EE8977A794F1B387ADA40780BFF19C301A5C63F407531B2C2C1A