diff --git a/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp b/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp index 08d1f0de..ee8f8f22 100644 --- a/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp +++ b/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp @@ -2346,7 +2346,6 @@ void ExamCarSub3::Calc_CarPosMeshList(int width, int height) double scale = VIEW_SCALE * m_graphic->scale() / 100.0; static constexpr int scaling = MESH_SCALE; - m_carPosMeshList.clear(); //SetLength(CarPosMeshList, 0); //1、真实GPS数据缩小5倍,画图区域放大5倍 //以考车基准点位置为中心,框出4个区域(把考车基准点当成正方形的中心点) @@ -2389,6 +2388,7 @@ void ExamCarSub3::Calc_CarPosMeshList(int width, int height) //找到显示区域对应的原始网格的索引 //这个代码比较难理解,慢慢理解。 + m_carPosMeshList.clear(); //SetLength(CarPosMeshList, 0); m_carPosMeshList.resize(widthCn * heightCn); //SetLength(CarPosMeshList, (WidthCn) * (HeightCn)); for(int i = 0; i < widthCn; i++) { diff --git a/entry/src/main/cpp/sdk/exam/ExamCarSub3.h b/entry/src/main/cpp/sdk/exam/ExamCarSub3.h index 49c93e37..19621e9e 100644 --- a/entry/src/main/cpp/sdk/exam/ExamCarSub3.h +++ b/entry/src/main/cpp/sdk/exam/ExamCarSub3.h @@ -49,8 +49,8 @@ public: //for IExamCarSub3 override virtual TCar* getTCar() override { return &m_car; } virtual TTestCtl* getTTestCtl() override { return &m_ctl; } - virtual int lastCrossPtNo() override { return PubLastChuanYuePtNo; } + virtual int lastCrossPtNo() override { return PubLastChuanYuePtNo; } virtual void setPUB_JDCC_ZT(int v) override { PUB_JDCC_ZT = v;} virtual int getPUB_JDCC_ZT() const override { return PUB_JDCC_ZT;} virtual void setChaoChe_Start_TM(int64 v) override { ChaoChe_Start_TM = v;} @@ -174,7 +174,7 @@ private: bool yjdg_road_code_kf = false; int Pub_JSC_JL = 0; - bool PubCanJudge_XiHuoFlag = false; + bool PubCanJudge_XiHuoFlag = true; //注意初始必须是true int PubKaoBianTCFinish_LJJL = 0; //bool FinishKM3Flag = false; diff --git a/entry/src/main/cpp/sdk/exam/IExamCar.h b/entry/src/main/cpp/sdk/exam/IExamCar.h index 0242c19a..d8a369e4 100644 --- a/entry/src/main/cpp/sdk/exam/IExamCar.h +++ b/entry/src/main/cpp/sdk/exam/IExamCar.h @@ -140,8 +140,8 @@ protected: ExamState m_examState = examStateEnd; //考试状态 std::string m_message = ""; //记录评判相关的一些显示信息,这些信息很重要,比如:直角转弯,未行驶到转弯处 - int m_disForward = 0; //累计前进距离(单位厘米) - int m_disBackward= 0; //累计倒车距离(单位厘米) + int m_disForward = 0; //累计前进距离(单位厘米) 老的代码里也叫累计距离, 行驶距离=累计距离-倒车距离 + int m_disBackward= 0; //累计倒车距离(单位厘米) 老的代码里也叫倒车距离 int m_grade = 0; //当前得分 int m_gradePass = 0; //考试及格分数 diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge10Ccxx.cpp b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge10Ccxx.cpp index 968c4da5..74ba97c6 100644 --- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge10Ccxx.cpp +++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge10Ccxx.cpp @@ -289,7 +289,7 @@ void Sub3Judge10Ccxx::dealJudgeItem() //5:回原车道阶段 6:完成回原车道阶段 if(m_itemv.Status == 2) { - if(sor.lb == 1) + if(sor.lb == SYES) { m_itemv.Temp_LaBa_Flag = true; } diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge12Ptdt.cpp b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge12Ptdt.cpp index de91ef0a..bd3382b0 100644 --- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge12Ptdt.cpp +++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge12Ptdt.cpp @@ -224,13 +224,11 @@ void Sub3Judge12Ptdt::dealJudgeItem() double a = std::abs(gps.hxj - m_itemv.CS_GPS_D); double b = std::abs(gps5.hxj- m_itemv.CS_GPS_D); //528:掉头N米内不判连续变道和方向灯 - int NJ_DiaoTou_JL = m_car->getNJ_DiaoTou_JL(); - if(NJ_DiaoTou_JL == 0 && TableSysSet->asInt528() > 0) + if(m_car->getNJ_DiaoTou_JL() == 0 && TableSysSet->asInt528() > 0) { if(a > 90 && a < 270 && b > 90 && b < 270) { - NJ_DiaoTou_JL = cg->ai_ljjl; - m_car->setNJ_DiaoTou_JL(NJ_DiaoTou_JL); + m_car->setNJ_DiaoTou_JL(cg->ai_ljjl); } } diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp index dbaa9f6f..fca21d7a 100644 --- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp +++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp @@ -749,6 +749,16 @@ void Sub3Judge20Comm::CallMoNiDengGuang() return; } + TKM3Item* item41 = m_car->findExamItem(Sub3ItemType41Mndg); + if(item41 == nullptr) //有可能免考,可能没这个项目 + { + return; + } + if(item41->Item_Color != itemStateWk) //正在考或者已经考过了 + { + return; + } + const TChuanGan* cg = m_car->historyChuanGan(); const TSensorInfo& sor = cg->real.sensor; const TChuanGan* his1 = m_car->historyChuanGan(1); @@ -764,11 +774,11 @@ void Sub3Judge20Comm::CallMoNiDengGuang() TCar* tcar = m_car->getTCar(); if((sor.fdjzs > 100 && sor1.fdjzs > 100 && sor2.fdjzs > 100 && sor3.fdjzs > 100) || - (Tools::pos("江淮电动", tcar->CarTypeName) && sor.dh1 == SYES) || + (Tools::pos(XCharacter("江淮电动"), tcar->CarTypeName) && sor.dh1 == SYES) || (s386 == "5" && sor.dh1 == SYES) || (sor.aqd == SYES && sor1.aqd == SYES && s386 == "6") ) //20170314 训练模式 只要有dh1就可以进行模拟灯光 { - //关闭灯光 20180809 + //关闭灯光 20180809 if((s322 != "1") && (sor.shtd + sor.skd + sor.ygd + sor.jgd + sor.zfxd + sor.yfxd > 0 || ksdd == siteof::nj)) { if(!m_itemvCJH.Gbdg_ID) @@ -776,7 +786,7 @@ void Sub3Judge20Comm::CallMoNiDengGuang() m_itemvCJH.Gbdg_ID = true; //ToDo:语音提示:请关闭所有灯光 m_itemvCJH.Gbdg_SndTk = cg->tkCnt; - //m_car->createEventSound({Sub3ItemType41Mndg, sound::sub3_4170015}); + m_car->createEventSound({Sub3ItemType41Mndg, sound::sub3_417001}); } if(m_itemvCJH.Gbdg_SndTk > 0 && m_itemvCJH.Gbdg_Kfyy == 0) { @@ -794,7 +804,6 @@ void Sub3Judge20Comm::CallMoNiDengGuang() if(sor.shtd + sor.skd + sor.ygd + sor.jgd == 0) { //开始模拟灯光 - TKM3Item* item41 = m_car->findExamItem(Sub3ItemType41Mndg); if(item41 && item41->Item_Color == itemStateWk) //有可能免考,可能没这个项目 { item41->Item_Color = itemStateZk; @@ -819,7 +828,6 @@ void Sub3Judge20Comm::CallMoNiDengGuang() } //开始模拟灯光 - TKM3Item* item41 = m_car->findExamItem(Sub3ItemType41Mndg); if(item41 && item41->Item_Color == itemStateWk) //有可能免考,可能没这个项目 { item41->Item_Color = itemStateZk; @@ -832,7 +840,6 @@ void Sub3Judge20Comm::CallMoNiDengGuang() else { //开始模拟灯光 - TKM3Item* item41 = m_car->findExamItem(Sub3ItemType41Mndg); if(item41 && item41->Item_Color == itemStateWk) { item41->Item_Color = itemStateZk; @@ -1927,18 +1934,14 @@ void Sub3Judge20Comm::Judge_QiBu_FXD_LaBa() //可以多次触发起步,但是起步方向灯,全程只评判一次 if(m_Pub_First_QiBu_Flag == true) return; m_Pub_First_QiBu_Flag = true; - bool FindFlag = false; - if(sor.zfxd == SYES && sor.yfxd == SNOT) - { - FindFlag = true; - } + bool FindFlag = (sor.zfxd == SYES && sor.yfxd == SNOT); if(!FindFlag) { for(int i = 1; i < 50; i++) { const TChuanGan* hisi = m_car->historyChuanGan(i); - const TSensorInfo& sori = hisi->real.sensor; if(hisi == nullptr) break; + const TSensorInfo& sori = hisi->real.sensor; if(hisi->move == moveStop) { if(sori.zfxd == SYES && sori.yfxd == SNOT) @@ -1957,9 +1960,10 @@ void Sub3Judge20Comm::Judge_QiBu_FXD_LaBa() { //看方向灯是否小于3秒 int OKNum = 0; - for(int i = 1; i < 50 ; i++) + for(int i = 1; i < 50; i++) { const TChuanGan* hisi = m_car->historyChuanGan(i); + if(hisi == nullptr) break; const TSensorInfo& sori = hisi->real.sensor; if(hisi->move == moveStop) { @@ -1976,34 +1980,27 @@ void Sub3Judge20Comm::Judge_QiBu_FXD_LaBa() } //起步喇叭评判 - // { - // FindFlag = false; - // if(sor.lb == SYES) - // { - // FindFlag = true; - // } - // if(! FindFlag) - // { - // for(int i = 1; i < 100 ; i++) - // { - // const TChuanGan* hisi = m_car->historyChuanGan(i); - // const TSensorInfo& sori = hisi->real.sensor; - // if(hisi->move == moveStop) - // { - // if(sori.lb == SYES) - // { - // FindFlag = true; - // break; - // } - // } - // } - // } - // if(!FindFlag) - // { - // JUDGE_MARK_SUB3(2, "102", false, true); - // } - // } - + FindFlag = (sor.lb == SYES); + if(!FindFlag) + { + for(int i = 1; i < 100 ; i++) + { + const TChuanGan* hisi = m_car->historyChuanGan(i); + const TSensorInfo& sori = hisi->real.sensor; + if(hisi->move == moveStop) + { + if(sori.lb == SYES) + { + FindFlag = true; + break; + } + } + } + } + if(!FindFlag) + { + JUDGE_MARK_SUB3(2, "102", false, true); + } } } @@ -2047,7 +2044,7 @@ bool Sub3Judge20Comm::Is_Lxbd_New() if(hisi == nullptr) break; const TGpsInfo& gpsi = hisi->real.gps; const TRTKResult& RTKKM3_i = hisi->RTKKM3; - if(SecondsBetween(gps.sj, gpsi.sj) > 10) break; + if(SecondsBetween(gps.sj, gpsi.sj) > m_LaneChangeTime) break; int TempCheDaoHao = RTKKM3_i.BasePointInLaneNo; if(TempCheDaoHao == 0) continue; if(TempCheDaoHao != LS1CheDaoHao && TempCheDaoHao != CurrentCheDaoHao) @@ -2073,8 +2070,8 @@ bool Sub3Judge20Comm::Is_Lxbd_New() const TRTKResult& RTKKM3_i1 = hisi1->RTKKM3; const TRTKResult& RTKKM3_i2 = hisi2->RTKKM3; - if(SecondsBetween(gps.sj, gpsi1.sj) > 10) break; - if(SecondsBetween(gps.sj, gpsi2.sj) > 10) break; + if(SecondsBetween(gps.sj, gpsi1.sj) > m_LaneChangeTime) break; + if(SecondsBetween(gps.sj, gpsi2.sj) > m_LaneChangeTime) break; //假如当前是b-->a,也就是说 LS1CheDaoHao=b CurrentCheDaoHao=a //追溯历史,需要监测到 a->b if(RTKKM3_i2.BasePointInLaneNo == CurrentCheDaoHao && RTKKM3_i1.BasePointInLaneNo == LS1CheDaoHao) @@ -2115,18 +2112,17 @@ bool Sub3Judge20Comm::Is_Lxbd_New() const TSensorInfo& sori = hisi->real.sensor; const TRTKResult& RTKKM3_i = hisi->RTKKM3; - if(LSFXDLeftFlag == true && (sori.zfxd == SNOT || sori.yfxd == SYES)) break; - if(LSFXDRightFlag == true && (sori.zfxd == SYES ||sori.yfxd == SNOT)) break; + if(LSFXDLeftFlag == true && (sori.zfxd == SNOT || sori.yfxd == SYES)) break; + if(LSFXDRightFlag == true && (sori.zfxd == SYES || sori.yfxd == SNOT)) break; int TempCheDaoHao = RTKKM3_i.BasePointInLaneNo; if(TempCheDaoHao == 0) continue; - if(TempCheDaoHao != LS1CheDaoHao && TempCheDaoHao!= CurrentCheDaoHao) + if(TempCheDaoHao != LS1CheDaoHao && TempCheDaoHao != CurrentCheDaoHao) { FindFlag2 = true; break; } } - TTestCtl* ctl = m_car->getTTestCtl(); //2、兼容aba if(ctl->LianXuBianDaoKind == 1) //允许aba方式 { @@ -2176,13 +2172,13 @@ bool Sub3Judge20Comm::Is_Lxbd_New2() const TChuanGan* cg = m_car->historyChuanGan(); const TRTKResult& RTKKM3 = cg->RTKKM3; - const TChuanGan* his1 = m_car->historyChuanGan(1); const TRTKResult& RTKKM3_1 = his1->RTKKM3; const std::string& ksdd = TableSysSet->get211(); TTestCtl* ctl = m_car->getTTestCtl(); + bool bYx = false; //20180604 是否压过线值 //变道一瞬间 if(RTKKM3.BasePointInLaneNo > 0 && RTKKM3_1.BasePointInLaneNo > 0 && RTKKM3.BasePointInLaneNo != RTKKM3_1.BasePointInLaneNo && @@ -2194,7 +2190,7 @@ bool Sub3Judge20Comm::Is_Lxbd_New2() return false; } //20170 - int zjcdtlsj = 10; // strtoint(readiniparam('连续变道', 'zjcdtlsj', '5')); + const int zjcdtlsj = m_LaneChangeTime; // strtoint(readiniparam('连续变道', 'zjcdtlsj', '5')); int Ora_Chedao = RTKKM3.BasePointInLaneNo; //原始车道 bool Fxd_HwID = false; //方向灯回位标 //c := cg.tkCnt; @@ -2219,7 +2215,6 @@ bool Sub3Judge20Comm::Is_Lxbd_New2() const TSensorInfo& sor_a = his_a->real.sensor; const TGpsInfo& gps_a = his_a->real.gps; const TRTKResult& RTKKM3_a = his_a->RTKKM3; - const TRTKResult& RTKKM3_b = his_b->RTKKM3; if(m_car->rtkEnabled(a)) @@ -2235,7 +2230,6 @@ bool Sub3Judge20Comm::Is_Lxbd_New2() { return false; } - bool bYx = false; //20180604 是否压过线值 //LS压线,当前不压线了(相当于历史记录中,再次找到了一次变道记录) if(RTKKM3_a.TouchLineType == TRTKResult::TouchLineType0 && RTKKM3_b.TouchLineType != TRTKResult::TouchLineType0) @@ -2333,6 +2327,68 @@ bool Sub3Judge20Comm::Is_Lxbd_New2() return false; } +bool Sub3Judge20Comm::Is_Lxbd_New3() +{ + const TChuanGan* cg = m_car->historyChuanGan(); + const TGpsInfo& gps = cg->real.gps; + const TRTKResult& RTKKM3 = cg->RTKKM3; + + const TChuanGan* his1 = m_car->historyChuanGan(1); + const TRTKResult& RTKKM3_1 = his1->RTKKM3; + + //1)10秒内,变化了2个或以上的车道 + //2)同一个方向灯,不关闭(变了2次或以上车道) + //变道一瞬间 + //1、只考虑那种车道总数不发生变化的 + //2、基准点所在的车道号发生变化了 + if(RTKKM3.BasePointInLaneNo > 0 && RTKKM3_1.BasePointInLaneNo > 0 && + RTKKM3.BasePointInLaneNo != RTKKM3_1.BasePointInLaneNo && + RTKKM3.BaseLaneCount == RTKKM3_1.BaseLaneCount) + { + + int cnt = 0; + int LaneNo = RTKKM3.BasePointInLaneNo; + for(int i = 1; i < 900; i++) //如果你的队列长队是500,那么把这个值改成500 + { + const TChuanGan* hisi = m_car->historyChuanGan(i); + if(hisi == nullptr) + { + break; + } + + const TRTKResult& RTKKM3_i = hisi->RTKKM3; + const TSensorInfo& sori = hisi->real.sensor; + const TGpsInfo& gpsi = hisi->real.gps; + + if(SecondsBetween(gps.sj, gpsi.sj) > m_LaneChangeTime) + { + break; + } + if(RTKKM3.BaseLaneCount != RTKKM3_i.BaseLaneCount) + { + break; + } + if(LaneNo != RTKKM3_i.BasePointInLaneNo) + { + LaneNo = RTKKM3_i.BasePointInLaneNo; + cnt++; + } + + bool Fxd_HwID = false; + if(sori.zfxd == SNOT && sori.yfxd == SNOT) + { + Fxd_HwID = true; + } + + if(!Fxd_HwID && cnt >= 2) + { + return true; + } + } + } + return false; +} + //7、连续变更两条以上车道 void Sub3Judge20Comm::Judge_LianXuBianDao() { @@ -2378,7 +2434,7 @@ void Sub3Judge20Comm::Judge_LianXuBianDao() { return; } - NJ_DiaoTou_JL = 0; + m_car->setNJ_DiaoTou_JL(0); if(m_car->rtkEnabled() && m_car->rtkEnabled(1)) { //连续变更车道方式(格式: 0^0):第一个数字0:abc方式 1:aba/abc方式; @@ -2389,7 +2445,7 @@ void Sub3Judge20Comm::Judge_LianXuBianDao() { if(Is_Lxbd_New2() == true) { - JUDGE_MARK_SUB3(20, "89", true); + JUDGE_MARK_SUB3(20, "89", false); } } } @@ -2397,7 +2453,7 @@ void Sub3Judge20Comm::Judge_LianXuBianDao() { if(Is_Lxbd_New2() == true) { - JUDGE_MARK_SUB3(20, "89", true); + JUDGE_MARK_SUB3(20, "89", false); } } else @@ -2408,7 +2464,7 @@ void Sub3Judge20Comm::Judge_LianXuBianDao() { if(Is_Lxbd_New2() == true) { - JUDGE_MARK_SUB3(20, "89", true); + JUDGE_MARK_SUB3(20, "89", false); } } } @@ -2814,14 +2870,13 @@ void Sub3Judge20Comm::Judge_BianDaoFangXiangDeng2() int s528 = TableSysSet->asInt528(); int NJ_DiaoTou_JL = m_car->getNJ_DiaoTou_JL(); - //SysSet[528]:掉头N米内不判连续变道和方向灯 if(NJ_DiaoTou_JL > 0 && s528 > 0 && cg->ai_ljjl - NJ_DiaoTou_JL < s528) { } else { - NJ_DiaoTou_JL = 0; + m_car->setNJ_DiaoTou_JL(0); int Tag = 0; //如果基准点所在车道数和保险杠所在的车道数不一致 if(RTKKM3.BaseLaneCount != RTKKM3.FrontPointLaneCount) @@ -2968,7 +3023,7 @@ void Sub3Judge20Comm::Judge_BianDaoFangXiangDeng2() if(RTKKM3.TouchLineType == TRTKResult::TouchLineType2 && RTKKM3_1.TouchLineType == TRTKResult::TouchLineType2 && - RTKKM3_2.TouchLineType == 0 && RTKKM3_2.BasePointInLaneNo != 0 && + RTKKM3_2.TouchLineType == TRTKResult::TouchLineType0 && RTKKM3_2.BasePointInLaneNo != 0 && RTKKM3.FrontPointLaneCount == RTKKM3_1.FrontPointLaneCount && RTKKM3_1.FrontPointLaneCount == RTKKM3_2.FrontPointLaneCount) diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.h b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.h index 9aeeb49c..359bc47f 100644 --- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.h +++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.h @@ -130,13 +130,11 @@ protected: //6、起步方向灯、喇叭 void Judge_QiBu_FXD_LaBa(); - //7、连续变更两条以上车道 + //7、连续变更两条以上车道 //重点 void Judge_LianXuBianDao(); - //(*XLG_Modify 2024-04-23*) - bool Is_Lxbd_New(); //是否是连续变道 //***没用到 - //(*XLG_Modify 2024-04-24*) - //重点 - bool Is_Lxbd_New2(); //是否是连续变道 + bool Is_Lxbd_New(); //是否是连续变道 //徐连刚实现 ***暂时没用到 + bool Is_Lxbd_New2(); //是否是连续变道 //老的实现 + bool Is_Lxbd_New3(); //是否是连续变道 //杨海洋实现 ***暂时没用到 //8、不能停止人行横道网格线内 //禁停评判 void Judge_ForbiddenTC(); @@ -213,7 +211,7 @@ private: Pointi m_PubLCTCPtt; double m_PubLCTC_GPS_JD = 0.0; double m_PubLCTC_GPS_WD = 0.0; - bool m_PubCanMarkLC50Flag = true; + bool m_PubCanMarkLC50Flag = true; //注意初始必须是true bool m_Pub_First_QiBu_Flag = false; //int Pub_JSC_JL = 0; //in car @@ -223,6 +221,9 @@ private: int m_DiaoTou_ID = 0; int64 m_PubLastMark_XuXian_TK = 0; + + + const int m_LaneChangeTime = 10; //连续变道时间 单位秒 杨海洋增加 }; #endif // SUB3JUDGE20COMM_H diff --git a/entry/src/main/cpp/sdk/utility/HTypes.h b/entry/src/main/cpp/sdk/utility/HTypes.h index 067c7d39..0e1d53f9 100644 --- a/entry/src/main/cpp/sdk/utility/HTypes.h +++ b/entry/src/main/cpp/sdk/utility/HTypes.h @@ -1133,26 +1133,15 @@ struct TCarZsBl int CarZsBMax = -1; }; +//TSub3CarCtl struct TCar { TCar() { } - std::string CarNo = "1148"; //考车号 - std::string CarBh; //考车编号 20170830 - //std::string KSCX; //考试车型 std::string CarTypeName; //车型名称 大货 int CarTypeSystemParmNo = 0; //对应的考车名称代码 - - int X_McH = 0; //百米脉冲值 - int X_McH_Calc = 0; //通过GPS计算值 - int LowGrade = 0; //合格成绩 int StartSpeed = 0; //起步档位 int AnQuanDai = 0; //安全带:0-不判 1-判保险带 2-气压 - bool chemen = false; //车门:0-不判 1-判 - int Stop_TC_ClrJZ = 0; //已停车,多少个plc周期(200MS)内无脉冲,则清除rec_QJ_LJMC,rec_HT_LJMC - int Stop_PanDuan = 0; //判断多少个plc周期(200MS)内无脉冲,则表示停车 - int DeadDirect = 0; //打死方向的判断值 - //MustTest_List: string; //必考项目列表 int Test_Sum = 0; //考试项目总数 bool AQD_QF = false; //安全带取反 bool LHQ_QF = false; //离合器取反 @@ -1162,57 +1151,16 @@ struct TCar int XSJL = 0; //本次行驶距离限制 bool bFDJDS = false; //发动机怠速值是否是设置 20141112 int FDJDS = 0; //本车发动机怠速值 - double fdjds_ddbl = 0.0, fdjds_ddbl_gd = 0.0 ; //抖动时发动机怠速比例 fdjds_ddbl_gd 高档怠速比例 - double fdjds_cdbl = 0.0; //抖动时发动机闯动比例 20140904 - double plc_cs_X = 0.0; //PLC的车速系数 int fxd3scs = 0; - - std::string ASize; //车型轮廓 - int StopOffsetX = 0, StopOffsetY = 0; //起始 - int StopInterval = 0; - int8 Gps_Dir_Type = 0; //不同GPS测向设备 0-无 1-诺瓦泰 2-天宝 - double Gps_Init_JiaJiao; //GPS初始夹角 - int8 Night_Hr = 0, Night_Mi = 0; //夜间考试开始的 时/分 bool Night_ID = false; - std::string Lcinfo; //里程信息 - - int8 PLC_CommNo = 0; - int8 Gps_CommNo = 0; - int8 Tly_CommNo = 0; - int8 Cdy_CommNo = 0; - int8 Dw_CommNo = 0; //20170420 挡位 - int8 FuShaChe_CommNo = 0; //20170420 挡位 - int8 CSB13_CommNo = 0; //20171113 超声波 int8 CSB24_CommNo = 0; //20171113 超声波 - - //{Add-LHQ 2016-5-25 牵引车} - int8 Gps_CommNo2 = 0; - int8 Gps_Dir_Type_t = 0; //不同GPS测向设备 0-无 1-诺瓦泰 2-天宝 - double Gps_Init_JiaJiao_t = 0.0; //GPS初始夹角 - //{-Add-LHQ 2016-5-25 牵引车} - - std::string Way_Name; - std::string Way_Next; - std::string Way_Item; - std::string Way_Next_ItemNos; //2,3 1-12*15,2-13,,13-14*15, - - int8 Km3_Next_Cnt = 0; - std::array Km3_Next_CurrItem; //array[1..100] of string[20]; - std::array Km3_Next_NextList; //array[1..100] of string[20]; - std::string No_ItemSNO; - std::string In_ItemSNO; //20160411 按线路进项目 std::array DwZsMax; //20140812 1:2000;2:1800;3:1500; 档位最高转速 //array[0..10] of integer; - std::array DwZsMin; //20151109 1:2000;2:1800;3:1500; 档位最低转速 //array[0..10] of integer; - - std::array DwZsMaxCsj; //20140812 1:2000;2:1800;3:1500; 长时档位最高转速 20151029 array[0..10] of integer; - //DwZsBl: array[1..5] of TCarZsBl; //20141111 档位转速比 std::string ZxxsCs; //20150504 按车型的直线行驶参数 - //20150623 bool ZFXD_QF= false; //左方向灯取反 bool YFXD_QF= false; //右方向灯取反 @@ -1223,36 +1171,68 @@ struct TCar bool SS_QF = false; //手刹取反 bool MKG_QF = false; //门开关取反 bool FS_QF = false; //副刹取反 - bool YGQ_QF = false; //雨刮器取反 20160427 - double FDJZSXS = 0.0; //发动转速系数 - double Zdbpsfz = 0.0; //Z轴加速度阈值 - std::array Test_Sums; //大车三阶段考试项目总数 20150805 array[1..3] of Integer; double Z_JSD_FZ = 0.0; //Z轴加速度阀值 int JJDXS = 0; //加减档限时 20161226 - double zxxsfz = 0.0; //直线行驶阀值 20161230 - bool bObdCs = false; //取OBD车速 20170331 bool bWDwcg = false; // 无挡位传感 20170508 - double QBCD = 0.0; //起步闯动 20170713 - bool sznight = false; //20171008 int CSBType = 0; //20171113 超声波模式 std::string DC_YK_Must; //夜考项目 20180301 - std::string MFXX_KSXM; //满分学习考试项目 std::string MFXX_Parm; //满分学习参数 - std::string DW_change; - std::array DwZsBl; //20141111 档位转速比 档位转速比 array[1..5] bool ZDB_Flag = false; -}; -struct TDw_Cs_JL -{ - int Ljjl = 0; - int64 LjSj = 0; //: Cardinal; + //********************以下目前没用到******************* + + std::string CarNo = "1148"; //考车号 + std::string CarBh; //考车编号 20170830 + //std::string KSCX; //考试车型 + int X_McH = 0; //百米脉冲值 + int X_McH_Calc = 0; //通过GPS计算值 + int LowGrade = 0; //合格成绩 + bool chemen = false; //车门:0-不判 1-判 + int Stop_TC_ClrJZ = 0; //已停车,多少个plc周期(200MS)内无脉冲,则清除rec_QJ_LJMC,rec_HT_LJMC + int Stop_PanDuan = 0; //判断多少个plc周期(200MS)内无脉冲,则表示停车 + int DeadDirect = 0; //打死方向的判断值 + //MustTest_List: string; //必考项目列表 + double fdjds_ddbl = 0.0, fdjds_ddbl_gd = 0.0 ; //抖动时发动机怠速比例 fdjds_ddbl_gd 高档怠速比例 + double fdjds_cdbl = 0.0; //抖动时发动机闯动比例 20140904 + double plc_cs_X = 0.0; //PLC的车速系数 + std::string ASize; //车型轮廓 + int StopOffsetX = 0, StopOffsetY = 0; //起始 + int StopInterval = 0; + int8 Gps_Dir_Type = 0; //不同GPS测向设备 0-无 1-诺瓦泰 2-天宝 + double Gps_Init_JiaJiao; //GPS初始夹角 + std::string Lcinfo; //里程信息 + int8 PLC_CommNo = 0; + int8 Gps_CommNo = 0; + int8 Tly_CommNo = 0; + int8 Cdy_CommNo = 0; + int8 Dw_CommNo = 0; //20170420 挡位 + int8 FuShaChe_CommNo = 0; //20170420 挡位 + //{Add-LHQ 2016-5-25 牵引车} + int8 Gps_CommNo2 = 0; + int8 Gps_Dir_Type_t = 0; //不同GPS测向设备 0-无 1-诺瓦泰 2-天宝 + double Gps_Init_JiaJiao_t = 0.0; //GPS初始夹角 + //{-Add-LHQ 2016-5-25 牵引车} + std::string Way_Name; + std::string Way_Next; + std::string Way_Item; + std::string Way_Next_ItemNos; //2,3 1-12*15,2-13,,13-14*15, + int8 Km3_Next_Cnt = 0; + std::array Km3_Next_CurrItem; //array[1..100] of string[20]; + std::array Km3_Next_NextList; //array[1..100] of string[20]; + std::array DwZsMaxCsj; //20140812 1:2000;2:1800;3:1500; 长时档位最高转速 20151029 array[0..10] of integer; + //DwZsBl: array[1..5] of TCarZsBl; //20141111 档位转速比 + bool YGQ_QF = false; //雨刮器取反 20160427 + double zxxsfz = 0.0; //直线行驶阀值 20161230 + bool bObdCs = false; //取OBD车速 20170331 + bool sznight = false; //20171008 + std::string DW_change; + }; struct TTestCtl @@ -1261,45 +1241,37 @@ struct TTestCtl bool ZXD_GuanBi = false; //转向灯关闭标记 std::set PassedItem; //std::string PassedItem; //已考项目编号列表 int MaxR = 0, MinR = 0; //最大及最小GPS搜索范围CM - - int8 Gps_St = 0; //0-普通GPS 1-差分GPS共用串口2 2-差分GPS独立串口 3-差分GPS独立串口未打开 4-华测的设备GPGGA int RtkOffset = 0; - - //std::string KSDD; - bool IsPassItem14 = false; //加减挡拉是否考过 20170117 - int JianSuLeiXing = 0; //20171007减速类型 - - int LianXuBianDaoKind = 0; //20171008 连续变更车道方式 0:abc 1:aba + int LianXuBianDaoKind = 0; //20171008 连续变更车道方式 0:abc 1:aba和abc都判 int LianXuBianDao_CC = 0; //连续变更车道在超车项目是否扣分 - int NanNingWavKind = 0; //南宁需求 公交、学校、人行语音 0:不需要 1:需要 - //上海个性需求定义 - int tsxhsj=0, tsdhsj =0; //估计是:提示熄火时间、提示点火时间 - + int tsxhsj = 0, tsdhsj = 0; //估计是:提示熄火时间、提示点火时间 std::string temp_336; //深圳个性需求 + //挡位车速距离定义 + struct TDw_Cs_JL { int Ljjl = 0; int64 LjSj = 0; }; + std::array Dw_Cs_JL1, Dw_Cs_JL2; //: array[0..8] of TDw_Cs_JL; + std::array Dw_Cs_JL; //: array[0..8] of TDw_Cs_JL; + bool Dw_Cs_Ok1 = false, Dw_Cs_Ok2 = false;//档位车速满足结束考试条件 Dw_Cs_Ok1=false and Dw_Cs_Ok2=false 扣多一点(sysset.308.1); Dw_Cs_Ok1=false and Dw_Cs_Ok2=true 扣少一点(sysset.308.2);Dw_Cs_Ok1=true 不扣分; + int dw_kf_sj = 0; //301评判时间,0-结束考试时评判,1-里程达标就评判 100-表示已评判过 20140630 + int Cs_type = 0, Cs_JlYq1 = 0, Cs_JlYq2 = 0, Cs_Yq = 0; //400参数中的Cs_JlYq1为平均距离判扣分,Cs_JlYq2为保持车速的距离 Cs_Yq:要达到的车速,0表示不判 20140418 20180810 - //以下是环境感知相关的,暂不考虑 - + //***以下是环境感知相关的,暂不考虑 int gz_aqjl = 0, gz_hxjl = 0, gz_jsjl = 0, gz_gchcjl = 0; //单位厘米 int gz_aqsj = 0; //单位秒 int gz_zawjl = 0; //障碍物距离阀值 20200525 int gz_dtfxjl = 0; //掉头反向车距离 单位厘米 20200529 bool b_gzpp = false, b_jsxw = false, b_gzvideo = false; - //(*XLG_Add 2024-01-16*) - //挡位车速距离定义 - std::array Dw_Cs_JL1, Dw_Cs_JL2; //: array[0..8] of TDw_Cs_JL; - std::array Dw_Cs_JL; //: array[0..8] of TDw_Cs_JL; - bool Dw_Cs_Ok1 = false, Dw_Cs_Ok2 = false, Dw_Cgd_OK = false; //档位车速满足结束考试条件 Dw_Cs_Ok1=false and Dw_Cs_Ok2=false 扣多一点(sysset.308.1); Dw_Cs_Ok1=false and Dw_Cs_Ok2=true 扣少一点(sysset.308.2);Dw_Cs_Ok1=true 不扣分; - int dw_kf_sj = 0; //301评判时间,0-结束考试时评判,1-里程达标就评判 100-表示已评判过 20140630 - int Cs_type = 0, Cs_JlYq1 = 0, Cs_JlYq2 = 0, Cs_Yq = 0; //400参数中的Cs_JlYq1为平均距离判扣分,Cs_JlYq2为保持车速的距离 Cs_Yq:要达到的车速,0表示不判 20140418 20180810 - //下面这个按规则翻译即可 + //********************以下目前没用到******************* + + int8 Gps_St = 0; //0-普通GPS 1-差分GPS共用串口2 2-差分GPS独立串口 3-差分GPS独立串口未打开 4-华测的设备GPGGA + //std::string KSDD; + //下面这个按规则翻译即可 int tsxhjs = 0, tsdhjs = 0; //开始考试后(n秒)提示点火,(m秒不点火扣分),格式:30,60, 此参数不能与512-9参数同时设置,两个参数最多只能设置一个 - - + bool Dw_Cgd_OK = false; }; /* diff --git a/entry/src/main/cpp/toolkit/ui/MainWindow.cpp b/entry/src/main/cpp/toolkit/ui/MainWindow.cpp index fcad94a7..3b311b02 100644 --- a/entry/src/main/cpp/toolkit/ui/MainWindow.cpp +++ b/entry/src/main/cpp/toolkit/ui/MainWindow.cpp @@ -1340,7 +1340,7 @@ void MainWindow::on_btnRunning_clicked() void MainWindow::on_btnPause_clicked() { bool pause = m_replay->replayIsPause(); - m_ui->btnPause->setText(pause ? CL8("暂停") : CL8("继续")); + m_ui->btnPause->setText(pause ? CL8("暂停") : CL8("继续")); m_replay->replayPause(!pause); } @@ -1380,6 +1380,7 @@ void MainWindow::on_btnTrackNext_clicked() void MainWindow::on_frameNum_editingFinished() { + m_ui->frameNum->clearFocus(); QString arg1 = m_ui->frameNum->text(); if(arg1.isEmpty()) return; int value = arg1.toInt(); diff --git a/entry/src/main/cpp/toolkit/ui/MainWindow.h b/entry/src/main/cpp/toolkit/ui/MainWindow.h index 74b1470b..cdb8a815 100644 --- a/entry/src/main/cpp/toolkit/ui/MainWindow.h +++ b/entry/src/main/cpp/toolkit/ui/MainWindow.h @@ -118,9 +118,6 @@ private slots: void on_artiItems_currentIndexChanged(int index); //void on_btnSend_clicked(); - - - private: Ui::MainWindow* m_ui = nullptr; QThread* m_thread = nullptr; diff --git a/entry/src/main/cpp/toolkit/ui/MainWindow.ui b/entry/src/main/cpp/toolkit/ui/MainWindow.ui index ba3e16e8..992d01d5 100644 --- a/entry/src/main/cpp/toolkit/ui/MainWindow.ui +++ b/entry/src/main/cpp/toolkit/ui/MainWindow.ui @@ -2503,7 +2503,7 @@ QSlider::sub-page:horizontal 410 500 - 91 + 121 16 @@ -2514,7 +2514,7 @@ QSlider::sub-page:horizontal - 510 + 530 500 91 16 @@ -2540,9 +2540,9 @@ QSlider::sub-page:horizontal - 610 + 630 500 - 91 + 81 16 @@ -2553,7 +2553,7 @@ QSlider::sub-page:horizontal - 510 + 530 517 91 16 @@ -2566,9 +2566,9 @@ QSlider::sub-page:horizontal - 610 + 630 517 - 91 + 81 16