Merge branch '代理服务方案' of http://88.22.24.105:3000/harmony_car/subject-two into 代理服务方案
This commit is contained in:
		
						commit
						164bdd11d2
					
				| @ -27,7 +27,7 @@ | ||||
| #define JUDGE_VERSION_MAJOR  1 | ||||
| #define JUDGE_VERSION_MINOR  0 | ||||
| #define JUDGE_VERSION_PATCH  3 | ||||
| #define JUDGE_VERSION_STAMP  "2504191100b" | ||||
| #define JUDGE_VERSION_STAMP  "2504281937b" | ||||
| #if JUDGE_USE_OLD | ||||
| #   undef JUDGE_VERSION_STAMP | ||||
| #   define JUDGE_VERSION_STAMP  "2411121010b.old" | ||||
|  | ||||
| @ -247,6 +247,7 @@ namespace sound | ||||
|     sound_sub3(456001);      // \sound\通过急弯.wav
 | ||||
|     sound_sub3(458001);      // \sound\通过拱桥.wav
 | ||||
|     sound_sub3(zhpp);        // \sound\综合评判.wav 请考官综合评判
 | ||||
|     sound_sub3(ksjs);        // \sound\考试结束.wav
 | ||||
| 
 | ||||
|     sound_subx(xmqx);        //项目取消
 | ||||
| 
 | ||||
|  | ||||
| @ -198,6 +198,7 @@ class JUDGE_API SysSetTable : public IDBTable | ||||
|     SYSSET_DECLARE(411);                             //靠边停车以右前、后轮判靠边距离(0-否 1-是) //0
 | ||||
|     SYSSET_DECLARE(414);                             //变道、超车以前后轮都过线(0-否 1-是)   //0
 | ||||
|     SYSSET_DECLARE(415, type_array, "^");            //自动报靠边停车(启用标记^全部结束n米报^)启用标记:0-否 1-是 319参数为2有效 //0^1^
 | ||||
|     SYSSET_DECLARE(417);                             //417参数,在差分状态才能进入自动评判项目,0否1是,417为1的时候,我们读卡进项目读卡必须在查分状态下面才能读卡。417没设的话,不判断是不是差分状态。就这就这个没有其他作用。
 | ||||
|     SYSSET_DECLARE(418);                             //扣分时实时播报语音(0-否 1-是)  //0
 | ||||
|     SYSSET_DECLARE(419, type_int);                   //里程按百米脉冲计算(0-否 1-是 )
 | ||||
|     SYSSET_DECLARE(421);                             //模拟夜间:车辆发生故障,按近光灯和双跳进行评判(0-是 1-否)
 | ||||
| @ -261,6 +262,7 @@ class JUDGE_API SysSetTable : public IDBTable | ||||
|     SYSSET_DECLARE(615);                             //侧方停车读卡前进时碰6线不合格 0
 | ||||
|     SYSSET_DECLARE(617, type_int);                   //参数617:语音实时播报项目是否合格(0-否 1-是)语音码:xmhg,xmbhg
 | ||||
|     SYSSET_DECLARE(624);                             //考试评判车门模式
 | ||||
|     SYSSET_DECLARE(629);                             //默认的在车辆进入坡道区域才评判停车定点,坡道中停立刻评判,默认的在车辆进入定点10米区域才评判停车定点
 | ||||
|     SYSSET_DECLARE(641, type_int);                   //641=1 是车尾过5-6延长线结束
 | ||||
|     SYSSET_DECLARE(660);                             //侧方停车项目 停车距离判断阈值控制参数
 | ||||
|     SYSSET_DECLARE(668);                             //安全带评判模式
 | ||||
| @ -344,6 +346,7 @@ class JUDGE_API SysSetTable : public IDBTable | ||||
|         SYSSET_ASSIGN(411); | ||||
|         SYSSET_ASSIGN(414); | ||||
|         SYSSET_ASSIGN(415); | ||||
|         SYSSET_ASSIGN(417); | ||||
|         SYSSET_ASSIGN(418); | ||||
|         SYSSET_ASSIGN(419); | ||||
|         SYSSET_ASSIGN(421); | ||||
| @ -407,6 +410,7 @@ class JUDGE_API SysSetTable : public IDBTable | ||||
|         SYSSET_ASSIGN(615); | ||||
|         SYSSET_ASSIGN(617); | ||||
|         SYSSET_ASSIGN(624); | ||||
|         SYSSET_ASSIGN(629); | ||||
|         SYSSET_ASSIGN(641); | ||||
|         SYSSET_ASSIGN(660); | ||||
|         SYSSET_ASSIGN(668); | ||||
|  | ||||
| @ -91,46 +91,40 @@ ErrorCode ExamCarSub2::examBeginExam() | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     return QE(codeSuccess); | ||||
| } | ||||
|     //2、执行扣分
 | ||||
|     int grade = 0; | ||||
|     for(size_t i = 0; i < m_stuInfo.kfxm.size(); i++) | ||||
|     { | ||||
|         const TKfXm& markItem = m_stuInfo.kfxm[i]; | ||||
|         const TMarkRule* rule = TableMark->find(markItem.xmdm, markItem.kfdm); | ||||
|         if(nullptr == rule) | ||||
|         { | ||||
|             logwarning("not find mark-rule item=%d, serial=%s", markItem.xmdm, markItem.kfdm.c_str()); | ||||
|             return QE(errorMarkNotFind); | ||||
|         } | ||||
|         grade += rule->markreal; | ||||
|         TMarkInfo mark(rule->itemno, rule->markserial, rule->markcatalog, 0, 0, 0); | ||||
|         m_marks.push_back(mark); | ||||
| 
 | ||||
| ErrorCode ExamCarSub2::examGoonExam() | ||||
| { | ||||
|         IExamItem* item = findExamItem(markItem.xmdm); | ||||
|         TASSERT(item != nullptr, ""); | ||||
|         if(item) | ||||
|         { | ||||
|             item->setMarkGrade(rule->markreal); | ||||
|         } | ||||
| 
 | ||||
|         loginfo("ddxk-mark xmdm=%d,kfdm=%s", markItem.xmdm, markItem.kfdm.c_str()); | ||||
|     } | ||||
|     m_grade -= grade; | ||||
|     if(m_grade < 0) | ||||
|     { | ||||
|         m_grade = 0; | ||||
|     } | ||||
| 
 | ||||
|     //3、处理断点续考
 | ||||
|     if(m_stuInfo.ddxk) | ||||
|     { | ||||
|         m_disForward = m_stuInfo.yklc; | ||||
| 
 | ||||
|         //1、处理已考项目
 | ||||
| 
 | ||||
|         //2、执行扣分
 | ||||
|         int grade = 0; | ||||
|         for(size_t i = 0; i < m_stuInfo.kfxm.size(); i++) | ||||
|         { | ||||
|             const TKfXm& markItem = m_stuInfo.kfxm[i]; | ||||
|             const TMarkRule* rule = TableMark->find(markItem.xmdm, markItem.kfdm); | ||||
|             if(nullptr == rule) | ||||
|             { | ||||
|                 logwarning("not find mark-rule item=%d, serial=%s", markItem.xmdm, markItem.kfdm.c_str()); | ||||
|                 return QE(errorMarkNotFind); | ||||
|             } | ||||
|             grade += rule->markreal; | ||||
|             TMarkInfo mark(rule->itemno, rule->markserial, rule->markcatalog, 0, 0, 0); | ||||
|             m_marks.push_back(mark); | ||||
| 
 | ||||
|             IExamItem* item = findExamItem(markItem.xmdm); | ||||
|             TASSERT(item != nullptr, ""); | ||||
|             if(item) | ||||
|             { | ||||
|                 item->setMarkGrade(rule->markreal); | ||||
|             } | ||||
| 
 | ||||
|             loginfo("ddxk-mark xmdm=%d,kfdm=%s", markItem.xmdm, markItem.kfdm.c_str()); | ||||
|         } | ||||
|         m_grade -= grade; | ||||
|         if(m_grade < 0) | ||||
|         { | ||||
|             m_grade = 0; | ||||
|         } | ||||
|         //m_timeBegin = m_stuInfo.ddkssj;
 | ||||
|     } | ||||
| 
 | ||||
| @ -141,7 +135,6 @@ ErrorCode ExamCarSub2::examGoonExam() | ||||
|         //createEventExamFinish(ExamFinishAuto); //杨 20240724 都由苏那边控制
 | ||||
|         return QE(errorBeginNotQual); //已经不合格了
 | ||||
|     } | ||||
| 
 | ||||
|     return QE(codeSuccess); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -23,7 +23,6 @@ public: | ||||
| public:  //for IExamCar override
 | ||||
|     virtual ErrorCode examCarInitInfo(TInitInfo* info) override; | ||||
|     virtual ErrorCode examBeginExam() override; | ||||
|     virtual ErrorCode examGoonExam() override; | ||||
|     virtual ErrorCode examEndExam() override; | ||||
|     virtual ErrorCode examJudgeExam() override; | ||||
|     virtual ErrorCode examArtifMark(ExamItemCode itemno, const std::string& serial, MarkType type) override; | ||||
|  | ||||
| @ -66,7 +66,7 @@ ErrorCode ExamCarSub3::examBeginExam() | ||||
|         TKM3Item* item = findExamItem(itemNo); | ||||
|         if(item != nullptr) | ||||
|         { | ||||
|             KM3EndItem(itemNo, false); | ||||
|             KM3EndItem(itemNo, false, false); | ||||
|             //item->Item_Color = itemStateHg;
 | ||||
|             //item->TestPro = ItemProFlagEnd;
 | ||||
|             //item->FinishFlag = true; //防止已考发项目结束事件
 | ||||
| @ -83,54 +83,43 @@ ErrorCode ExamCarSub3::examBeginExam() | ||||
|     { | ||||
|         m_newSub3->examBegin(); | ||||
|     } | ||||
|     return QE(codeSuccess); | ||||
| } | ||||
| 
 | ||||
| ErrorCode ExamCarSub3::examGoonExam() | ||||
| { | ||||
|     //4、执行扣分(如果StuInfo.CSH_Marks 不为空)
 | ||||
|     //这个时候,Tds的Grade会被重新赋值
 | ||||
|     //2、执行扣分
 | ||||
|     int grade = 0; | ||||
|     for(size_t i = 0; i < m_stuInfo.kfxm.size(); i++) | ||||
|     { | ||||
|         const TKfXm& markItem = m_stuInfo.kfxm[i]; | ||||
|         const TMarkRule* rule = TableMark->find(markItem.xmdm, markItem.kfdm); | ||||
|         if(nullptr == rule) | ||||
|         { | ||||
|             logwarning("not find mark-rule item=%d, serial=%s", markItem.xmdm, markItem.kfdm.c_str()); | ||||
|             return QE(errorMarkNotFind); | ||||
|         } | ||||
|         grade += rule->markreal; | ||||
|         TMarkInfo mark(rule->itemno, rule->markserial, rule->markcatalog, 0, 0, 0); | ||||
|         m_marks.push_back(mark); | ||||
| 
 | ||||
|         //断点扣分不要生成任何事件通知,关心的就是本地扣出来即可 //???yhyflag
 | ||||
|         //Mark(markItem.xmdm, markItem.kfdm, false, true, 0, true); //Self.Mark(TempItemNo, Str3, False, True, 0, True);
 | ||||
|         //扣分只记录分数,不需要根据扣分记录项目状态 20240816 在洛阳确认的
 | ||||
|         //TKM3Item* item = findExamItem(markItem.xmdm);
 | ||||
|         //TASSERT(item != nullptr, "");
 | ||||
|         //if(item)
 | ||||
|         //{
 | ||||
|         //    item->Item_Color = itemStateBhg;
 | ||||
|         //}
 | ||||
|         loginfo("ddxk-mark xmdm=%d,kfdm=%s", markItem.xmdm, markItem.kfdm.c_str()); | ||||
|     } | ||||
|     m_grade -= grade; | ||||
|     if(m_grade < 0) | ||||
|     { | ||||
|         m_grade = 0; | ||||
|     } | ||||
| 
 | ||||
|     //3、处理断点续考
 | ||||
|     if(m_stuInfo.ddxk) | ||||
|     { | ||||
|         m_disForward = m_stuInfo.yklc; | ||||
| 
 | ||||
|         //1、处理已考项目
 | ||||
| 
 | ||||
|         //2、执行扣分
 | ||||
|         int grade = 0; | ||||
|         for(size_t i = 0; i < m_stuInfo.kfxm.size(); i++) | ||||
|         { | ||||
|             const TKfXm& markItem = m_stuInfo.kfxm[i]; | ||||
|             const TMarkRule* rule = TableMark->find(markItem.xmdm, markItem.kfdm); | ||||
|             if(nullptr == rule) | ||||
|             { | ||||
|                 logwarning("not find mark-rule item=%d, serial=%s", markItem.xmdm, markItem.kfdm.c_str()); | ||||
|                 return QE(errorMarkNotFind); | ||||
|             } | ||||
|             grade += rule->markreal; | ||||
|             TMarkInfo mark(rule->itemno, rule->markserial, rule->markcatalog, 0, 0, 0); | ||||
|             m_marks.push_back(mark); | ||||
| 
 | ||||
|             //断点扣分不要生成任何事件通知,关心的就是本地扣出来即可 //???yhyflag
 | ||||
|             //Mark(markItem.xmdm, markItem.kfdm, false, true, 0, true); //Self.Mark(TempItemNo, Str3, False, True, 0, True);
 | ||||
| 
 | ||||
|             //扣分只记录分数,不需要根据扣分记录项目状态 20240816 在洛阳确认的
 | ||||
|             //TKM3Item* item = findExamItem(markItem.xmdm);
 | ||||
|             //TASSERT(item != nullptr, "");
 | ||||
|             //if(item)
 | ||||
|             //{
 | ||||
|             //    item->Item_Color = itemStateBhg;
 | ||||
|             //}
 | ||||
| 
 | ||||
|             loginfo("ddxk-mark xmdm=%d,kfdm=%s", markItem.xmdm, markItem.kfdm.c_str()); | ||||
|         } | ||||
|         m_grade -= grade; | ||||
|         if(m_grade < 0) | ||||
|         { | ||||
|             m_grade = 0; | ||||
|         } | ||||
| 
 | ||||
|         //3、更新开始时间
 | ||||
|         //m_timeBegin = m_stuInfo.ddkssj != 0 ? m_stuInfo.ddkssj : Tools::nowTime();
 | ||||
|         //m_StartTime = GetCurrentTime2();
 | ||||
| @ -667,7 +656,7 @@ bool ExamCarSub3::Init_KM3_Global() | ||||
|                 //examItem->TestPro = ItemProFlagIdle;
 | ||||
|                 //examItem->FinishFlag = true;
 | ||||
|                 examItem->NoID = true; | ||||
|                 KM3EndItem(itemNo,true,false); | ||||
|                 KM3EndItem(itemNo,isReplay(),false); //轨迹回放工具回放模式要发时间,不然项目不好变绿
 | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @ -1281,7 +1270,6 @@ void ExamCarSub3::Deal_KM3_Judge() | ||||
| 
 | ||||
|     m_curItem = nullptr; | ||||
| 
 | ||||
|     dealItemNoIDEnd14Jjdw(); //必须放这里
 | ||||
|     dealItemNoIDEndItem(); //必须放这里
 | ||||
|     //执行具体的专项评判
 | ||||
|     std::string msg; | ||||
| @ -1336,6 +1324,7 @@ void ExamCarSub3::Deal_KM3_Judge() | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     finishExamBroad(); | ||||
|     //如果考试结束(训练不存在结束的概念,都是界面上点击结束考试,一般科目三都是可以重复进项目的)
 | ||||
|     if(isExamMode())  //考试模式的
 | ||||
|     { | ||||
| @ -3240,11 +3229,23 @@ void ExamCarSub3::Km3NewEnterItem() | ||||
|     TChuanGan* cg = m_cg; | ||||
|     //1、非前进状态忽略
 | ||||
|     TChuanGan* his1 = historyChuanGan(1); | ||||
|     if(cg->move != moveForward || his1->move != moveForward) return; | ||||
|     if(cg->move != moveForward || his1->move != moveForward) | ||||
|     { | ||||
|         return; | ||||
|     } | ||||
|     //2、速度是0也退出
 | ||||
|     //if(cg->real.gps.sd < 0.1 || his1->real.gps.sd < 0.1) return; //ai_CS_GPS
 | ||||
|     //3、非差分状态忽略
 | ||||
|     if(!cg->real.gps.valid()) return; //非差分状态不不允许进项目
 | ||||
|     //3、非差分状态忽略//非差分状态不允许进项目
 | ||||
|     //417参数为1,在差分状态才能进入自动评判项目 417没设的话,不判断是不是差分状态 20250428
 | ||||
|     if(TableSysSet->get417() == "1") | ||||
|     { | ||||
|         if(!cg->real.gps.rtkEnabled) | ||||
|         { | ||||
|             return; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(!cg->real.gps.valid()) return; | ||||
| 
 | ||||
|     static constexpr double KK0 = GPS_DIV; | ||||
|     if(E_1Deg2Cm == 0) | ||||
| @ -3894,24 +3895,24 @@ bool ExamCarSub3::KM3AllPass() | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     for(auto it = m_sub3Items.begin(); it != m_sub3Items.end(); it++) | ||||
|     { | ||||
|         const TKM3Item* item = it->second->getExamItem(); | ||||
|         //必考项目未完成
 | ||||
|         if(item->NoID == false && (item->Item_Color == itemStateWk || item->Item_Color == itemStateZk)) | ||||
|         { | ||||
|             return false; | ||||
|         } | ||||
|         //科目三项目结束,免考项目处理
 | ||||
|         //重要流程
 | ||||
|         if(item->NoID == true)  //20240731
 | ||||
|         { | ||||
|             if(item->FinishFlag == false) | ||||
|             { | ||||
|                 KM3EndItem(item->ItemNo); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     //for(auto it = m_sub3Items.begin(); it != m_sub3Items.end(); it++)
 | ||||
|     //{
 | ||||
|     //    const TKM3Item* item = it->second->getExamItem();
 | ||||
|     //    //必考项目未完成
 | ||||
|     //    if(item->NoID == false && (item->Item_Color == itemStateWk || item->Item_Color == itemStateZk))
 | ||||
|     //    {
 | ||||
|     //        return false;
 | ||||
|     //    }
 | ||||
|     //    //科目三项目结束,免考项目处理
 | ||||
|     //    //重要流程
 | ||||
|     //    if(item->NoID == true)  //20240731
 | ||||
|     //    {
 | ||||
|     //        if(item->FinishFlag == false)
 | ||||
|     //        {
 | ||||
|     //            KM3EndItem(item->ItemNo);
 | ||||
|     //        }
 | ||||
|     //    }
 | ||||
|     //}
 | ||||
| 
 | ||||
|     return true; | ||||
| } | ||||
| @ -5022,24 +5023,6 @@ void ExamCarSub3::dealOffset() | ||||
| } | ||||
| 
 | ||||
| void ExamCarSub3::dealItemNoIDEndItem() | ||||
| { | ||||
|     if(isMileage()) | ||||
|     { | ||||
|         for(auto it = m_sub3Items.begin(); it != m_sub3Items.end(); it++) | ||||
|         { | ||||
|             TKM3Item* item = it->second->getExamItem(); | ||||
|             if(item->NoID == true && item->ItemNo != Sub3ItemType14Jjdw) //20240731
 | ||||
|             { | ||||
|                 if(item->FinishFlag == false) | ||||
|                 { | ||||
|                     KM3EndItem(item->ItemNo); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void ExamCarSub3::dealItemNoIDEnd14Jjdw() | ||||
| { | ||||
|     TKM3Item* item14 = findExamItem(Sub3ItemType14Jjdw); //20240731
 | ||||
|     if(item14 && item14->NoID == true) //免考加减挡的 即:全程加减档
 | ||||
| @ -5059,7 +5042,7 @@ void ExamCarSub3::dealItemNoIDEnd14Jjdw() | ||||
|             else | ||||
|             { | ||||
|                 TKM3Item* item = findExamItem(Sub3ItemType11Kbtc); | ||||
|                 if(item && item->TestPro == ItemProFlagInit) | ||||
|                 if(item && item->TestPro >= ItemProFlagInit) | ||||
|                 { | ||||
|                     //ToDo1:生成 全程加减挡 进项目事件
 | ||||
|                     //createEventEnterItem({item14->ItemNo, ""});
 | ||||
| @ -5068,6 +5051,147 @@ void ExamCarSub3::dealItemNoIDEnd14Jjdw() | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(isMileage()) | ||||
|     { | ||||
|         for(auto it = m_sub3Items.begin(); it != m_sub3Items.end(); it++) | ||||
|         { | ||||
|             TKM3Item* item = it->second->getExamItem(); | ||||
|             if(item->NoID == true) | ||||
|             { | ||||
|                 if(item->ItemNo == Sub3ItemType13Yjxs) | ||||
|                 { | ||||
|                     if(item->FinishFlag == false) | ||||
|                     { | ||||
|                         KM3EndItem(item->ItemNo); | ||||
|                     } | ||||
|                 } | ||||
|                 else if(item->ItemNo == Sub3ItemType14Jjdw) //加减档单独处理
 | ||||
|                 { | ||||
|                 } | ||||
|                 else  //20240731
 | ||||
|                 { | ||||
|                     if(item->Item_Color == itemStateWk) //&& item->FinishFlag == false
 | ||||
|                     { | ||||
|                         KM3EndItem(item->ItemNo); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void ExamCarSub3::finishExamBroad() | ||||
| { | ||||
|     /*
 | ||||
|     程军华-多伦科技 2025-04-25 | ||||
|     不合格的: | ||||
|     302=4、5、7、8,考试模式,自动退出; | ||||
|     302=1,考试模式,报:考试结束.wav | ||||
|     302=3,报:考试结束.wav | ||||
| 
 | ||||
|     考试完成,合格的: | ||||
|     302=8,延迟n秒退出 | ||||
|     302=7,自动退出 | ||||
| 
 | ||||
|     靠边完成,且考试完成的: | ||||
|     302=4,自动退出 | ||||
|     302=5,不合格,自动退出 | ||||
|     302=6,合格,自动退出 | ||||
| 
 | ||||
|     考试完成,指的是必考项目完成,里程完成 | ||||
|     */ | ||||
| 
 | ||||
|     bool finish = true; | ||||
|     for(auto it = m_sub3Items.begin(); it != m_sub3Items.end(); it++) | ||||
|     { | ||||
|         const TKM3Item* item = it->second->getExamItem(); | ||||
|         if(item->Item_Color == itemStateWk || item->Item_Color == itemStateZk) | ||||
|         { | ||||
|             finish = false; | ||||
|             break; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     bool play_zhpp = false; | ||||
|     bool play_ksjs = false; | ||||
|     bool mileage = isMileage(); | ||||
|     bool qualified = isQualified(); | ||||
|     bool exam = isExamMode(); | ||||
|     const std::string& s302 = TableSysSet->get302(); | ||||
|     if(s302 == "0") | ||||
|     { | ||||
|         if(mileage && finish && qualified) | ||||
|         { | ||||
|             play_zhpp = true; | ||||
|         } | ||||
|     } | ||||
|     if(s302 == "1") | ||||
|     { | ||||
|         if(mileage && finish && qualified) | ||||
|         { | ||||
|             play_zhpp = true; | ||||
|         } | ||||
|         if(exam && !qualified) | ||||
|         { | ||||
|             play_ksjs = true; | ||||
|         } | ||||
|     } | ||||
|     else if(s302 == "2") | ||||
|     { | ||||
|         if(mileage && finish && qualified) | ||||
|         { | ||||
|             play_zhpp = true; | ||||
|         } | ||||
|     } | ||||
|     else if(s302 == "3") | ||||
|     { | ||||
|         if(mileage && finish && qualified) | ||||
|         { | ||||
|             play_zhpp = true; | ||||
|         } | ||||
|         if(!qualified) | ||||
|         { | ||||
|             play_ksjs = true; | ||||
|         } | ||||
|     } | ||||
|     else if(s302 == "4") | ||||
|     { | ||||
|     } | ||||
|     else if(s302 == "5") | ||||
|     { | ||||
|         if(mileage && finish && qualified) | ||||
|         { | ||||
|             play_zhpp = true; | ||||
|         } | ||||
|     } | ||||
|     else if(s302 == "6") | ||||
|     { | ||||
|     } | ||||
|     else if(s302 == "7") | ||||
|     { | ||||
|     } | ||||
|     else if(s302 == "8") | ||||
|     { | ||||
|     } | ||||
| 
 | ||||
|     if(play_zhpp) | ||||
|     { | ||||
|         if(!m_pub.play_finish) | ||||
|         { | ||||
|             m_pub.play_finish = true; | ||||
|             createEventSound({Sub3ItemType20Comm, sound::sub3_zhpp}); //请考官综合评判
 | ||||
|         } | ||||
|     } | ||||
|     if(play_ksjs) | ||||
|     { | ||||
|         if(!m_pub.play_finish) | ||||
|         { | ||||
|             m_pub.play_finish = true; | ||||
|             createEventSound({Sub3ItemType20Comm, sound::sub3_ksjs}); //考试结束
 | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| bool ExamCarSub3::calcToLaneArc(const TModelLine& Lxx, const TModelPolygon& poly, const Pointi& b1, const Pointi& pt, int& dm, bool cross) | ||||
|  | ||||
| @ -24,7 +24,6 @@ public: | ||||
| public:  //for IExamCar override
 | ||||
|     virtual ErrorCode examCarInitInfo(TInitInfo* info) override; | ||||
|     virtual ErrorCode examBeginExam() override; | ||||
|     virtual ErrorCode examGoonExam() override; | ||||
|     virtual ErrorCode examEndExam() override; | ||||
|     virtual ErrorCode examJudgeExam() override; | ||||
|     virtual ErrorCode examArtifMark(ExamItemCode itemno, const std::string& serial, MarkType type) override; | ||||
| @ -78,7 +77,8 @@ protected: | ||||
|     void dealOffset(); //行驶距离补偿
 | ||||
| 
 | ||||
|     void dealItemNoIDEndItem(); | ||||
|     void dealItemNoIDEnd14Jjdw(); | ||||
| 
 | ||||
|     void finishExamBroad(); | ||||
| 
 | ||||
|     bool calcToLaneArc(const TModelLine& Lxx, const TModelPolygon& poly, const Pointi& b1, const Pointi& pt, int& dm, bool cross=false); | ||||
|     bool calcToLaneArc2(const TModelLine& Lxx, const TModelPolygon& area, const Pointi& b1, const Pointi& pt, int& dm, bool cross=false); | ||||
|  | ||||
| @ -107,12 +107,6 @@ int IExamCar::examJudgeBeginExam(const char* data, int len) | ||||
|     { | ||||
|         return QE((ErrorCode)errCode); | ||||
|     } | ||||
|     //处理断点续考
 | ||||
|     errCode = examGoonExam(); | ||||
|     if(errCode != codeSuccess) | ||||
|     { | ||||
|         return QE((ErrorCode)errCode); | ||||
|     } | ||||
| 
 | ||||
|     m_examState = examStateIng; | ||||
|     logtrace("begin-exam success %s", target().c_str()); | ||||
|  | ||||
| @ -122,7 +122,6 @@ public: | ||||
| public: | ||||
|     virtual ErrorCode   examCarInitInfo(TInitInfo* info) = 0; | ||||
|     virtual ErrorCode   examBeginExam() = 0; | ||||
|     virtual ErrorCode   examGoonExam() = 0; | ||||
|     virtual ErrorCode   examEndExam() = 0; | ||||
|     virtual ErrorCode   examJudgeExam() = 0; | ||||
|     virtual ErrorCode   examArtifMark(ExamItemCode itemno, const std::string& serial, MarkType type) = 0; | ||||
|  | ||||
| @ -325,7 +325,8 @@ void Sub2Judge00Dcrk::divorcedItemArea() | ||||
|     bool out = ((!in0 && in1) || !pureCarInItemArea());  //阶段10,后轮先不在项目区域结束项目,然后才会走道这里
 | ||||
| #else | ||||
|     //bool out = (!pureCarInItemArea());
 | ||||
|     bool out = pureCarTouchSoloLine(m_model->L12_10(), II(13), 5); | ||||
|     bool out = pureCarTouchSoloLines({m_model->L12_10(), m_model->L78_11()}, II(13), 5) && | ||||
|             !pureCarPointInPoly(II(1), m_model->poly1278()); | ||||
| #endif | ||||
|     if(out) | ||||
|     { | ||||
|  | ||||
| @ -166,10 +166,19 @@ JUDGE_STAGE_IMPL(Sub2Judge02Pdqb, Sub2PdqbStage0) | ||||
|     TGPSPoint pt2 = GpsMath::calcCenterPoint(m_model->P4(), m_model->P7()); | ||||
|     double gc = FactorySub2Survey->baseGc(); | ||||
|     int distance = GpsMath::DianXianJL_GPS_CM(p1, pt1, pt2, gc); | ||||
|     if(distance < m_800CM) | ||||
| 
 | ||||
|     const std::string& s629 = TableSysSet->get629(); | ||||
|     if(s629 == "1") | ||||
|     { | ||||
|         m_stage = Sub2PdqbStage1; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         if(distance < m_1000CM) | ||||
|         { | ||||
|             m_stage = Sub2PdqbStage1; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(m_endLineFlag == true) | ||||
|     { | ||||
|  | ||||
| @ -49,7 +49,7 @@ private: | ||||
|     const int m_15CM = 15;   //15厘米
 | ||||
|     const int m_30CM = 30;  //30厘米
 | ||||
|     const int m_50CM = 50;  //50厘米
 | ||||
|     const int m_800CM = 800; //800厘米
 | ||||
|     const int m_1000CM = 1000; //1000厘米
 | ||||
| }; | ||||
| 
 | ||||
| #endif // SUB2JUDGE02PDQB_H
 | ||||
|  | ||||
| @ -84,11 +84,12 @@ void Sub2Judge05Qxxs::judgeTouchLine() | ||||
|     const TGPSPoints& right = m_model->right(); | ||||
|     if(IS_C1C2C5(m_carType)) | ||||
|     { | ||||
|         //1、车轮压线(存粹车轮) //只用车轮子计算
 | ||||
|         static constexpr int history = 2; | ||||
|         const PointSets& wheels = m_car->carModel()->wheelAll(); | ||||
|         JUDGE_MARK_ITEM_EASY_ONCE(pureCarTouchSomePoints(left,  wheels, history), MARK_SUB2_QXXS_61); | ||||
|         JUDGE_MARK_ITEM_EASY_ONCE(pureCarTouchSomePoints(right, wheels, history), MARK_SUB2_QXXS_62); | ||||
|         //1、车轮压线(纯粹车轮)只用车轮子计算
 | ||||
|         //注意:由于GPS可能漂移不能用这种方式计算,用历史车轮点判断会误判,无锡就出现这种情况  yhy 2025-04-23
 | ||||
|         //static constexpr int history = 2;
 | ||||
|         //const PointSets& wheels = m_car->carModel()->wheelAll();
 | ||||
|         //JUDGE_MARK_ITEM_EASY_ONCE(pureCarTouchSomePoints(left,  wheels, history), MARK_SUB2_QXXS_61);
 | ||||
|         //JUDGE_MARK_ITEM_EASY_ONCE(pureCarTouchSomePoints(right, wheels, history), MARK_SUB2_QXXS_62);
 | ||||
| 
 | ||||
|         //2、排线和边线相交,也算压线
 | ||||
|         const PointPairs& wind = m_car->carModel()->wheelWindAll(); | ||||
|  | ||||
| @ -1277,10 +1277,6 @@ void Sub3Judge11Kbtc::DoStatus_100() | ||||
|         //ToDo: 语音提示-->请起步,继续完成考试
 | ||||
|         m_car->createEventSound({itemNo(), sound::sub3_406005}); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         m_car->createEventSound({itemNo(), sound::sub3_zhpp}); //请考官综合评判
 | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void Sub3Judge11Kbtc::Judge_KBTC_YaXian() | ||||
|  | ||||
| @ -2394,7 +2394,8 @@ void Sub3Judge20Comm::Judge_YaXian_10S_XuXian() | ||||
| 
 | ||||
|     const TChuanGan* his1 = m_car->historyChuanGan(1); | ||||
|     const TChuanGan* his2 = m_car->historyChuanGan(2); | ||||
|     if(cg->move == moveForward && his1->move == moveForward && his2->move == moveForward) | ||||
|     if(m_car->rtkEnabled() && m_car->rtkEnabled(1) && | ||||
|        cg->move == moveForward && his1->move == moveForward && his2->move == moveForward) | ||||
|     { | ||||
|         for(size_t i = 0; i < kind.size(); i++) | ||||
|         { | ||||
|  | ||||
| @ -558,8 +558,8 @@ JUDGE_CXX_API const char* stage2Describe(Sub2CftcStage code); | ||||
| #define MARK_SUB2_PDQB_203  "203" | ||||
| #define MARK_SUB2_PDQB_41   "41" | ||||
| #define EnumMakeSub2PdqbStage(declare) \ | ||||
|     declare(Sub2PdqbStage0, "", JUDGE_UTF8S("距离停车标杆大于8米")) \ | ||||
|     declare(Sub2PdqbStage1, "", JUDGE_UTF8S("到达标杆8米处,未停车")) \ | ||||
|     declare(Sub2PdqbStage0, "", JUDGE_UTF8S("距离停车标杆大于10米")) \ | ||||
|     declare(Sub2PdqbStage1, "", JUDGE_UTF8S("到达标杆10米处,未停车")) \ | ||||
|     declare(Sub2PdqbStage2, "", JUDGE_UTF8S("停车未起步阶段")) \ | ||||
|     declare(Sub2PdqbStage3, "", JUDGE_UTF8S("坡道起步阶段(后轮到达8,9位置结束)")) | ||||
| enum Sub2PdqbStage{ EnumMakeSub2PdqbStage(ENUM_SELECT_1_CMD_3) Sub2PdqbStageUnknown }; | ||||
|  | ||||
| @ -457,9 +457,9 @@ struct TStuInfo | ||||
|     int64              kskssj    = 0;   //考试开始时间 1970年到现在的毫秒数 "2023-03-21 10:05:23"
 | ||||
|     std::vector<TItemExam> ksxm  = {};  //监管返回本次考试所需项目 2023-04-24 杨海洋修改
 | ||||
|     std::vector<int32> ykxm      = {};  //已考项目 "1,3" 对应枚举 ExamItemCode      DuanDian_FinishItems
 | ||||
|     std::vector<TKfXm> kfxm      = {};  //扣分项目 "20,01;" 对应枚举 ExamItemCode   DuanDian_Marks
 | ||||
|     int8               ddxk      = 0;   //是否断点续考,(0-否 1-是)
 | ||||
|     int64              ddkssj    = 0;   //考试中断那次考试开始考试时间 1970年到现在的毫秒数
 | ||||
|     std::vector<TKfXm> kfxm      = {};  //扣分项目 "20,01;" 对应枚举 ExamItemCode   DuanDian_Marks
 | ||||
|     int32              yklc      = 0;   //已考里程,单位厘米
 | ||||
| 
 | ||||
|     int8               sczb      = 0;   //CS_Finish_SCZB_Flag:Boolan;  //考前绕车一周(初始完成上车准备标志)(外壳传递的)Boolan
 | ||||
| @ -1596,6 +1596,8 @@ struct TPubKM3 | ||||
|     int m_KsZgSs = 0; //记录考试中的最高时速
 | ||||
|     //int m_KsLjLc = 0; //记录考试累计里程(米)
 | ||||
| 
 | ||||
|     bool play_finish = false; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  | ||||
| @ -115,7 +115,17 @@ QString addContent(QString& out, const QString& name, const QString& info) | ||||
| 
 | ||||
| void setStyleComboBox(QComboBox* combo, int count, int width) | ||||
| { | ||||
|     combo->setStyle(QStyleFactory::create("Windows")); | ||||
|     constexpr static bool Fusion = true; | ||||
|     if(Fusion) | ||||
|     { | ||||
|         combo->setStyle(QStyleFactory::create("Fusion")); | ||||
|         combo->setStyleSheet("QComboBox { combobox-popup: 0; }"); | ||||
|         combo->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         combo->setStyle(QStyleFactory::create("Windows")); | ||||
|     } | ||||
|     combo->setMaxVisibleItems(count); | ||||
|     combo->view()->setMinimumWidth(width); | ||||
| } | ||||
|  | ||||
| @ -45,6 +45,10 @@ | ||||
| #include <QListWidgetItem> | ||||
| #include <QCheckBox> | ||||
| #include <QComboBox> | ||||
| #include <QStandardItem> | ||||
| #include <QStandardItemModel> | ||||
| #include <QStyledItemDelegate> | ||||
| #include <QStyleOptionViewItem> | ||||
| #include <QQueue> | ||||
| #include <QScrollArea> | ||||
| #include <QScrollBar> | ||||
|  | ||||
| @ -71,15 +71,7 @@ void MainWindow::init() | ||||
|     KIT_CONNECT(updateNextDoing()); | ||||
|     KIT_CONNECT(updateCheckVersion(int, const QString&)); | ||||
| 
 | ||||
|     //connect(&m_audio, SIGNAL(QMediaPlayer::error(QMediaPlayer::Error)),
 | ||||
|     //        SLOT([&](QMediaPlayer::Error error)
 | ||||
|     //        {
 | ||||
|     //            QMediaPlayer::Error err = m_audio.error();
 | ||||
|     //            QString errStr = m_audio.errorString();
 | ||||
|     //
 | ||||
|     //            logwarning("paly-audio file:%s, err:%d-%s ",
 | ||||
|     //            filepath.toUtf8().data(), err, errStr.toUtf8().data());
 | ||||
|     //        }));
 | ||||
|     connect(&m_audio, SIGNAL(error(QMediaPlayer::Error)), this, SLOT(slot_soundError(QMediaPlayer::Error))); | ||||
| 
 | ||||
|     m_ui->loop->clear(); | ||||
|     m_ui->loop->addItem(CL8("否"), false); | ||||
| @ -148,8 +140,9 @@ void MainWindow::init() | ||||
|     //QString addr = kit::getMacAddress();
 | ||||
|     //std::string md5s = Tools::md5sum(addr.toLocal8Bit().data());
 | ||||
|     //logtrace("uuid=[%s][%s]", addr.toUtf8().data(), md5s.data());
 | ||||
|     logtrace("version-sdk=[%s][%s][%s]", JUDGE_VERSION_STR, JUDGE_VERSION_INFO, examJudgeVersion()); | ||||
|     logtrace("version-kit=[%s]", KIT_VERSION_INFO); | ||||
|     logtrace("version-sdk=[%s][%s][%s],version-toolkit=[%s]", | ||||
|              JUDGE_VERSION_STR, JUDGE_VERSION_INFO, examJudgeVersion(), | ||||
|              KIT_VERSION_INFO); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| @ -297,7 +290,7 @@ void MainWindow::wheelEvent(QWheelEvent *event) | ||||
|     event->accept(); | ||||
| } | ||||
| 
 | ||||
| void MainWindow::resizeEvent(QResizeEvent *event) | ||||
| void MainWindow::resizeEvent(QResizeEvent* event) | ||||
| { | ||||
|     QMainWindow::resizeEvent(event); | ||||
|     //QRect geome = geometry();
 | ||||
| @ -638,6 +631,13 @@ void MainWindow::updateCheckVersion(int state, const QString& info) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void MainWindow::slot_soundError(QMediaPlayer::Error error) | ||||
| { | ||||
|     QMediaPlayer::Error err = m_audio.error(); | ||||
|     QString errStr = m_audio.errorString(); | ||||
|     logwarning("play-audio  err:%d-%d-%s", err, error, errStr.toUtf8().data()); | ||||
| } | ||||
| 
 | ||||
| void MainWindow::on_btnClearLog_clicked() | ||||
| { | ||||
|     m_logInfo->resetLog(); | ||||
| @ -851,19 +851,12 @@ void MainWindow::on_displaySwitch_clicked() | ||||
| { | ||||
|     m_realExam->switchDisplay(); | ||||
| 
 | ||||
|     //CpuOccupyInfo occ;
 | ||||
|     //
 | ||||
|     //bool usage = Tools::peerOccupyCpu(occ);
 | ||||
|     //int cores = Tools::getCpuProcessors();
 | ||||
|     //logtrace("CPU Usage:%0.4f cores=%d ", usage, cores);
 | ||||
| 
 | ||||
|     const char* data = examPeerOccupy(); | ||||
|     TOccupyInfo occ; | ||||
|     if(!XParser::fromAny(data, occ)) | ||||
|     { | ||||
|         return; | ||||
|     } | ||||
|     logtrace("occupy=%s", data); | ||||
|     examFreeMemory(data); | ||||
|     return; | ||||
|     //const char* data = examPeerOccupy();
 | ||||
|     //TOccupyInfo occ;
 | ||||
|     //if(!XParser::fromAny(data, occ))
 | ||||
|     //{
 | ||||
|     //    return;
 | ||||
|     //}
 | ||||
|     //logtrace("occupy=%s", data);
 | ||||
|     //examFreeMemory(data);
 | ||||
| } | ||||
|  | ||||
| @ -65,7 +65,7 @@ protected: | ||||
|     virtual void mousePressEvent(QMouseEvent* event) override; | ||||
|     virtual void wheelEvent(QWheelEvent* event) override; //鼠标滚轮滚动事件
 | ||||
|     // 当窗口尺寸改变时,会调用这个方法
 | ||||
|     virtual void resizeEvent(QResizeEvent *event) override; | ||||
|     virtual void resizeEvent(QResizeEvent* event) override; | ||||
| signals: | ||||
|     void sig_init(); | ||||
| 
 | ||||
| @ -86,7 +86,8 @@ private slots: //Q_SLOTS | ||||
|     void updateNextDoing(); | ||||
|     void updateCheckVersion(int state, const QString& info); | ||||
| 
 | ||||
| private slots: | ||||
|     void slot_soundError(QMediaPlayer::Error error); | ||||
| 
 | ||||
|     void on_btnClearLog_clicked(); | ||||
|     void on_btnSelectTrackFile_clicked(); | ||||
|     void on_btnRunning_clicked(); | ||||
|  | ||||
| @ -68,10 +68,10 @@ background-color: rgb(255, 255, 255);</string> | ||||
|    <widget class="QPushButton" name="btnSelectTrackFile"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>1530</x> | ||||
|       <x>1534</x> | ||||
|       <y>790</y> | ||||
|       <width>44</width> | ||||
|       <height>26</height> | ||||
|       <width>42</width> | ||||
|       <height>25</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="text"> | ||||
| @ -81,10 +81,10 @@ background-color: rgb(255, 255, 255);</string> | ||||
|    <widget class="QTextEdit" name="outputLog"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>932</x> | ||||
|       <x>933</x> | ||||
|       <y>644</y> | ||||
|       <width>642</width> | ||||
|       <height>143</height> | ||||
|       <height>144</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="font"> | ||||
| @ -106,7 +106,7 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="QPushButton" name="btnClearLog"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>1500</x> | ||||
|       <x>1502</x> | ||||
|       <y>616</y> | ||||
|       <width>73</width> | ||||
|       <height>26</height> | ||||
| @ -413,7 +413,7 @@ p, li { white-space: pre-wrap; } | ||||
|      <rect> | ||||
|       <x>600</x> | ||||
|       <y>180</y> | ||||
|       <width>111</width> | ||||
|       <width>121</width> | ||||
|       <height>20</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -426,7 +426,7 @@ p, li { white-space: pre-wrap; } | ||||
|      <rect> | ||||
|       <x>600</x> | ||||
|       <y>163</y> | ||||
|       <width>111</width> | ||||
|       <width>121</width> | ||||
|       <height>20</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -580,7 +580,7 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="QPushButton" name="btnRunning"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>1500</x> | ||||
|       <x>1502</x> | ||||
|       <y>495</y> | ||||
|       <width>73</width> | ||||
|       <height>28</height> | ||||
| @ -635,9 +635,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>4</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -660,9 +660,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>38</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -685,9 +685,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>38</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -710,9 +710,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>72</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -735,9 +735,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>72</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -760,9 +760,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>106</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -785,9 +785,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>106</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -810,9 +810,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>140</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -835,9 +835,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>140</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -860,9 +860,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>174</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -885,9 +885,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>174</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -913,9 +913,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>208</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -938,9 +938,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>208</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -963,9 +963,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>242</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -988,9 +988,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>276</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1013,9 +1013,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>310</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1038,9 +1038,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>242</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1063,9 +1063,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>276</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1088,9 +1088,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>310</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1115,7 +1115,7 @@ p, li { white-space: pre-wrap; } | ||||
|      <rect> | ||||
|       <x>2</x> | ||||
|       <y>644</y> | ||||
|       <width>710</width> | ||||
|       <width>717</width> | ||||
|       <height>174</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1144,9 +1144,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>344</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1169,9 +1169,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>344</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1194,9 +1194,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>377</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1219,9 +1219,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>824</x> | ||||
|       <x>827</x> | ||||
|       <y>377</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1244,9 +1244,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>780</x> | ||||
|       <x>786</x> | ||||
|       <y>416</y> | ||||
|       <width>51</width> | ||||
|       <width>48</width> | ||||
|       <height>30</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1263,7 +1263,7 @@ p, li { white-space: pre-wrap; } | ||||
| <html><head><meta name="qrichtext" content="1" /><style type="text/css"> | ||||
| p, li { white-space: pre-wrap; } | ||||
| </style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:600; font-style:normal;"> | ||||
| <p align="center" dir='rtl' style="-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string> | ||||
| <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string> | ||||
|     </property> | ||||
|    </widget> | ||||
|    <widget class="QTextEdit" name="item00"> | ||||
| @ -1272,9 +1272,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>4</y> | ||||
|       <width>101</width> | ||||
|       <width>98</width> | ||||
|       <height>31</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1474,9 +1474,9 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="Line" name="borderBottom_5"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>715</x> | ||||
|       <x>722</x> | ||||
|       <y>402</y> | ||||
|       <width>215</width> | ||||
|       <width>206</width> | ||||
|       <height>20</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1529,7 +1529,7 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="QLineEdit" name="playTimes"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>1500</x> | ||||
|       <x>1502</x> | ||||
|       <y>526</y> | ||||
|       <width>73</width> | ||||
|       <height>28</height> | ||||
| @ -1542,7 +1542,7 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="QLabel" name="cg_dcj_6"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>1448</x> | ||||
|       <x>1450</x> | ||||
|       <y>527</y> | ||||
|       <width>51</width> | ||||
|       <height>30</height> | ||||
| @ -1555,7 +1555,7 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="QLabel" name="cg_dcj_7"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>420</y> | ||||
|       <width>61</width> | ||||
|       <height>21</height> | ||||
| @ -1570,7 +1570,7 @@ p, li { white-space: pre-wrap; } | ||||
|      <rect> | ||||
|       <x>933</x> | ||||
|       <y>790</y> | ||||
|       <width>592</width> | ||||
|       <width>596</width> | ||||
|       <height>26</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1597,7 +1597,7 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="QLabel" name="cg_dcj_9"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>1448</x> | ||||
|       <x>1450</x> | ||||
|       <y>557</y> | ||||
|       <width>51</width> | ||||
|       <height>26</height> | ||||
| @ -1610,7 +1610,7 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="QComboBox" name="loop"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>1500</x> | ||||
|       <x>1502</x> | ||||
|       <y>557</y> | ||||
|       <width>73</width> | ||||
|       <height>26</height> | ||||
| @ -1635,7 +1635,7 @@ p, li { white-space: pre-wrap; } | ||||
|      <rect> | ||||
|       <x>400</x> | ||||
|       <y>277</y> | ||||
|       <width>315</width> | ||||
|       <width>322</width> | ||||
|       <height>2</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1646,7 +1646,7 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="Line" name="borderRight_3"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>705</x> | ||||
|       <x>712</x> | ||||
|       <y>2</y> | ||||
|       <width>20</width> | ||||
|       <height>810</height> | ||||
| @ -1662,9 +1662,9 @@ p, li { white-space: pre-wrap; } | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>714</x> | ||||
|       <x>721</x> | ||||
|       <y>644</y> | ||||
|       <width>216</width> | ||||
|       <width>209</width> | ||||
|       <height>174</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1699,9 +1699,9 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="QLabel" name="pe_markGrade"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>450</y> | ||||
|       <width>161</width> | ||||
|       <width>171</width> | ||||
|       <height>20</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1712,9 +1712,9 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="QSlider" name="playSlider"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>939</x> | ||||
|       <y>592</y> | ||||
|       <width>550</width> | ||||
|       <x>934</x> | ||||
|       <y>590</y> | ||||
|       <width>562</width> | ||||
|       <height>20</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -1877,9 +1877,9 @@ QSlider::sub-page:horizontal | ||||
|     </property> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>835</x> | ||||
|       <x>838</x> | ||||
|       <y>416</y> | ||||
|       <width>88</width> | ||||
|       <width>86</width> | ||||
|       <height>30</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -2051,7 +2051,7 @@ p, li { white-space: pre-wrap; } | ||||
|      <rect> | ||||
|       <x>536</x> | ||||
|       <y>286</y> | ||||
|       <width>171</width> | ||||
|       <width>176</width> | ||||
|       <height>334</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -2068,9 +2068,9 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="Line" name="borderRight_4"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>520</x> | ||||
|       <x>526</x> | ||||
|       <y>278</y> | ||||
|       <width>20</width> | ||||
|       <width>10</width> | ||||
|       <height>366</height> | ||||
|      </rect> | ||||
|     </property> | ||||
| @ -2119,7 +2119,7 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="QLabel" name="perform"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>720</x> | ||||
|       <x>726</x> | ||||
|       <y>472</y> | ||||
|       <width>201</width> | ||||
|       <height>106</height> | ||||
| @ -2158,10 +2158,10 @@ p, li { white-space: pre-wrap; } | ||||
|    <widget class="QTableWidget" name="radarTable"> | ||||
|     <property name="geometry"> | ||||
|      <rect> | ||||
|       <x>4</x> | ||||
|       <x>2</x> | ||||
|       <y>428</y> | ||||
|       <width>392</width> | ||||
|       <height>212</height> | ||||
|       <width>394</width> | ||||
|       <height>214</height> | ||||
|      </rect> | ||||
|     </property> | ||||
|    </widget> | ||||
| @ -2232,7 +2232,7 @@ p, li { white-space: pre-wrap; } | ||||
|      </rect> | ||||
|     </property> | ||||
|     <property name="text"> | ||||
|      <string>显示切换</string> | ||||
|      <string>切换显示</string> | ||||
|     </property> | ||||
|    </widget> | ||||
|   </widget> | ||||
|  | ||||
| @ -314,13 +314,9 @@ export default class UdpClientByCenter { | ||||
|       } | ||||
| 
 | ||||
|       strachArr[28] = globalThis.chuankoMsg || strachArr[28] | ||||
|       // console.log("lixiao", globalThis.chuankoMsg, strachArr[28])
 | ||||
|       // this.stashFn(str)
 | ||||
|       console.log("lixiao", globalThis.chuankoMsg, strachArr[28]) | ||||
|       const newArr = JSON.parse(JSON.stringify(strachArr)) | ||||
|       // this.writeLog({
 | ||||
|       //   time:dateFormat(new Date()),
 | ||||
|       //   PLC: JSON.stringify(newArr.toString()),
 | ||||
|       // })
 | ||||
| 
 | ||||
|       if (strachArr[83] != '4') { | ||||
|         console.log('差分状态异常', strachArr[83], strachArr[92]) | ||||
|         this.writeLog({ | ||||
|  | ||||
| @ -60,7 +60,7 @@ struct Index { | ||||
|   private context = getContext(this) as common.UIAbilityContext; | ||||
|   private serviceExtProxy: IdlServiceExtProxy | ||||
|   @State judgeVersion: string = "" | ||||
|   private version: string = "2025.04.23.01" | ||||
|   private version: string = "2025.05.06.01" | ||||
| 
 | ||||
|   @Styles | ||||
|   commStyle(){ | ||||
|  | ||||
| @ -1,11 +1,7 @@ | ||||
| import router from '@ohos.router'; | ||||
| import UdpClient from '../../common/utils/UdpClient'; | ||||
| import FileLog from '../judgeSDK/utils/fileLog'; | ||||
| import RealTime from '../compontents/judge/RealTime'; | ||||
| import { GPSData, SignalData } from '../../mock'; | ||||
| import { SignalDataType } from '../../model'; | ||||
| import FileUtil from '../../common/utils/File' | ||||
| import { GlobalConfig } from '../../config/index' | ||||
| @Component | ||||
| export default struct SignDisplayCom { | ||||
|   @State showBack: boolean = false | ||||
| @ -23,10 +19,6 @@ export default struct SignDisplayCom { | ||||
|   @State interval: number = 0 | ||||
|   @State @Watch('outClick') outFlag: boolean = false; | ||||
|   @State url: string = '' | ||||
|   private timer = null | ||||
|   private udpClient: UdpClient = null | ||||
|   private FileLog: FileLog | ||||
|   private vocObj = null; | ||||
| 
 | ||||
|   constructor() { | ||||
|     super() | ||||
|  | ||||
| @ -1,6 +1,4 @@ | ||||
| import router from '@ohos.router'; | ||||
| import UdpClient from '../../common/utils/UdpClient'; | ||||
| import FileLog from '../judgeSDK/utils/fileLog'; | ||||
| import RealTime from '../compontents/judge/RealTime'; | ||||
| import { GPSData, SignalData } from '../../mock'; | ||||
| import { SignalDataType } from '../../model'; | ||||
| @ -22,10 +20,6 @@ export default struct SignDisplayCom { | ||||
|   @State interval: number = 0 | ||||
|   @State @Watch('outClick') outFlag: boolean = false; | ||||
|   @State url: string = '' | ||||
|   private timer = null | ||||
|   private udpClient: UdpClient = null | ||||
|   private FileLog: FileLog | ||||
|   private vocObj = null; | ||||
| 
 | ||||
|   constructor() { | ||||
|     super() | ||||
|  | ||||
| @ -12,4 +12,3 @@ A2kAMGYCMQCZzMs9H/mMi+59hO4EfDHTXChO6QoBYH+pwB66g7dw7apGXhayBIwq | ||||
| qOeVnlTVbPkCMQCc2hQf+ypiZpZQog1dMSGdlNs8heypj97d7DahjTgEzrxGxcZK | ||||
| PtMtg35cJa+JtN4= | ||||
| -----END CERTIFICATE----- | ||||
| 071A11E92B83EE8977A794F1B387ADA40780BFF19C301A5C63F407531B2C2C1A | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user