c++
This commit is contained in:
		
							parent
							
								
									40db7bbc9a
								
							
						
					
					
						commit
						af40efb3f6
					
				| @ -1,4 +1,4 @@ | ||||
| # judge library build | ||||
| # FFmpeg build | ||||
| 
 | ||||
| import("//build/ohos.gni") | ||||
| 
 | ||||
| @ -14,21 +14,24 @@ ohos_source_set("judge_dynamic") { | ||||
|     "sdk/api/js/JSTypedef.cpp", | ||||
|     "sdk/api/platform/JudgeApiFactory.cpp", | ||||
|     "sdk/api/platform/JudgeSdk.cpp", | ||||
|     "sdk/common/CostTimeHelper.cpp", | ||||
|     "sdk/common/CleverHelper.cpp", | ||||
|     "sdk/common/CryptoAlgorithm.cpp", | ||||
|     "sdk/common/HSystem.cpp", | ||||
|     "sdk/common/HVersion.cpp", | ||||
|     "sdk/common/Loggerxx.cpp", | ||||
|     "sdk/common/ProfilerHelper.cpp", | ||||
|     "sdk/common/TAssert.cpp", | ||||
|     "sdk/common/TQueue.cpp", | ||||
|     "sdk/common/TimerPool.cpp", | ||||
|     "sdk/common/Tools.cpp", | ||||
|     "sdk/database/IDBTables.cpp", | ||||
|     "sdk/database/carinfo/CarInfoTable.cpp", | ||||
|     "sdk/database/mark/MarkItemRule.cpp", | ||||
|     "sdk/database/iteminfo/ItemInfoTable.cpp", | ||||
|     "sdk/database/mappoint/MapPointItemTable.cpp", | ||||
|     "sdk/database/mappoint/MapPointTable.cpp", | ||||
|     "sdk/database/mark/MarkTable.cpp", | ||||
|     "sdk/database/sysparm/SysParmTable.cpp", | ||||
|     "sdk/database/sysset/SysSetTable.cpp", | ||||
|     "sdk/database/sysset/XSysSet.cpp", | ||||
|     "sdk/exam/ExamCar.cpp", | ||||
|     "sdk/exam/ExamCarSub2.cpp", | ||||
|     "sdk/exam/ExamCarSub3.cpp", | ||||
|     "sdk/exam/ExamDatagram.cpp", | ||||
|     "sdk/exam/ExamHistory.cpp", | ||||
|     "sdk/exam/ExamSensor.cpp", | ||||
| @ -39,29 +42,55 @@ ohos_source_set("judge_dynamic") { | ||||
|     "sdk/graphic/IGraphicAbstract.cpp", | ||||
|     "sdk/judge/IJudgeBrokerInterface.cpp", | ||||
|     "sdk/judge/IJudgeItem.cpp", | ||||
|     "sdk/judge/JudgeItemFactory.cpp", | ||||
|     "sdk/judge/sub2/ISub2Judge.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgeCftc.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgeComm.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgeDcrk.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgePdqb.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgeQxxs.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgeZjzw.cpp", | ||||
|     "sdk/judge/sub3/ISub3Judge.cpp", | ||||
|     "sdk/judge/sub2/ISub2JudgeItem.cpp", | ||||
|     "sdk/judge/sub2/ISub2JudgeWrap.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge00Dcrk.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge02Pdqb.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge03Cftc.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge05Qxxs.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge06Zjzw.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge20Comm.cpp", | ||||
|     "sdk/judge/sub3/ISub3JudgeItem.cpp", | ||||
|     "sdk/judge/sub3/ISub3JudgeWrap.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge01Sczb.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge02Qbxx.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge03Zxxs.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge04Bgcd.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge05Lkzx.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge06Rxhd.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge07Xxqy.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge08Gjzt.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge09Hcxx.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge10Ccxx.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge11Kbtc.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge12Dtxx.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge12Lkdt.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge12Ptdt.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge13Yjxs.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge14Jjdw.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge15Lkzz.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge16Lkyz.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge20Comm.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge41Mndg.cpp", | ||||
|     "sdk/parser/XIParser.cpp", | ||||
|     "sdk/parser/XParser.cpp", | ||||
|     "sdk/parser/XParser2.cpp", | ||||
|     "sdk/survey/ISurveyCar.cpp", | ||||
|     "sdk/survey/ISurveyItem.cpp", | ||||
|     "sdk/survey/SurveyFactory.cpp", | ||||
|     "sdk/survey/ISurveySubject.cpp", | ||||
|     "sdk/survey/car/SurveyCar.cpp", | ||||
|     "sdk/survey/sub2/ISub2SurveyFactory.cpp", | ||||
|     "sdk/survey/sub2/ISub2SurveyItem.cpp", | ||||
|     "sdk/survey/sub2/Sub2SurveyCftc.cpp", | ||||
|     "sdk/survey/sub2/Sub2SurveyDcrk.cpp", | ||||
|     "sdk/survey/sub2/Sub2SurveyPdqb.cpp", | ||||
|     "sdk/survey/sub2/Sub2SurveyQxxs.cpp", | ||||
|     "sdk/survey/sub2/Sub2SurveyZjzw.cpp", | ||||
|     "sdk/survey/sub3/ISub3SurveyFactory.cpp", | ||||
|     "sdk/survey/sub3/ISub3SurveyItem.cpp", | ||||
|     "sdk/survey/sub3/Sub3MeshDefines.cpp", | ||||
|     "sdk/survey/sub3/Sub3SurveyRoads.cpp", | ||||
|     "sdk/survey/sub3/Sub3SurveySharps.cpp", | ||||
|     "sdk/track/TrackReader.cpp", | ||||
|     "sdk/track/TrackWriter.cpp", | ||||
|     "sdk/utility/Geometry.cpp", | ||||
| @ -79,7 +108,7 @@ ohos_source_set("judge_dynamic") { | ||||
|     "third/libb64/base64.cpp", | ||||
|     "third/libb64/cdecode.c", | ||||
|     "third/libb64/cencode.c", | ||||
|     "third/tinyxml2-9.0.0/tinyxml2.cpp" | ||||
|     "third/tinyxml2-9.0.0/tinyxml2.cpp", | ||||
|   ] | ||||
|   include_dirs = [ | ||||
|     "sdk", | ||||
| @ -92,6 +121,8 @@ ohos_source_set("judge_dynamic") { | ||||
|     "sdk/common", | ||||
|     "sdk/database", | ||||
|     "sdk/database/carinfo", | ||||
|     "sdk/database/iteminfo", | ||||
|     "sdk/database/mappoint", | ||||
|     "sdk/database/mark", | ||||
|     "sdk/database/sysparm", | ||||
|     "sdk/database/sysset", | ||||
| @ -133,24 +164,30 @@ ohos_source_set("judge_dynamic") { | ||||
|   "__OHOS_FAMILY__", | ||||
|  ] | ||||
|   cflags = [  | ||||
|     "-Wno-implicit-fallthrough", | ||||
|     "-Wno-unused-private-field", | ||||
|     "-Wunknown-warning-option", | ||||
|     "-Wno-unused-const-variable", | ||||
|     "-Wno-unused-variable", | ||||
|     "-Wno-deprecated-declarations", | ||||
|     "-Wno-unused-command-line-argument", | ||||
|     "-Wno-tautological-constant-out-of-range-compare", | ||||
|     "-Wno-unused-function", | ||||
|     "-Wno-unused-parameter", | ||||
|     "-Wno-unused-but-set-variable", | ||||
|     "-fexceptions", | ||||
|    ] | ||||
| 
 | ||||
|   cflags_cc = [  | ||||
|     "-Wno-implicit-fallthrough", | ||||
|     "-Wno-unused-private-field", | ||||
|     "-Wunknown-warning-option", | ||||
|     "-Wno-unused-const-variable", | ||||
|     "-Wno-unused-variable", | ||||
|     "-Wno-deprecated-declarations", | ||||
|     "-Wno-unused-command-line-argument", | ||||
|     "-Wno-tautological-constant-out-of-range-compare", | ||||
|     "-Wno-unused-function", | ||||
|     "-Wno-unused-parameter", | ||||
|     "-Wno-unused-but-set-variable", | ||||
|     "-fexceptions", | ||||
|     "-std=c++17", | ||||
|     "-stdlib=libc++", | ||||
|  | ||||
| @ -8,23 +8,24 @@ | ||||
|     "sdk/api/js/JSTypedef.cpp", | ||||
|     "sdk/api/platform/JudgeApiFactory.cpp", | ||||
|     "sdk/api/platform/JudgeSdk.cpp", | ||||
|     "sdk/common/CostTimeHelper.cpp", | ||||
|     "sdk/common/CleverHelper.cpp", | ||||
|     "sdk/common/CryptoAlgorithm.cpp", | ||||
|     "sdk/common/HSystem.cpp", | ||||
|     "sdk/common/HVersion.cpp", | ||||
|     "sdk/common/Loggerxx.cpp", | ||||
|     "sdk/common/ProfilerHelper.cpp", | ||||
|     "sdk/common/TAssert.cpp", | ||||
|     "sdk/common/TQueue.cpp", | ||||
|     "sdk/common/TimerPool.cpp", | ||||
|     "sdk/common/Tools.cpp", | ||||
|     "sdk/database/IDatabaseTable.cpp", | ||||
|     "sdk/database/IDBTables.cpp", | ||||
|     "sdk/database/carinfo/CarInfoTable.cpp", | ||||
|     "sdk/database/iteminfo/ItemInfoTable.cpp", | ||||
|     "sdk/database/mappoint/MapPointItemTable.cpp", | ||||
|     "sdk/database/mappoint/MapPointTable.cpp", | ||||
|     "sdk/database/mark/MarkItemRule.cpp", | ||||
|     "sdk/database/mark/MarkTable.cpp", | ||||
|     "sdk/database/sysparm/SysParmTable.cpp", | ||||
|     "sdk/database/sysset/SysSetTable.cpp", | ||||
|     "sdk/exam/ExamCar.cpp", | ||||
|     "sdk/exam/ExamCarSub2.cpp", | ||||
|     "sdk/exam/ExamCarSub3.cpp", | ||||
|     "sdk/exam/ExamDatagram.cpp", | ||||
|     "sdk/exam/ExamHistory.cpp", | ||||
|     "sdk/exam/ExamSensor.cpp", | ||||
| @ -35,15 +36,36 @@ | ||||
|     "sdk/graphic/IGraphicAbstract.cpp", | ||||
|     "sdk/judge/IJudgeBrokerInterface.cpp", | ||||
|     "sdk/judge/IJudgeItem.cpp", | ||||
|     "sdk/judge/JudgeItemFactory.cpp", | ||||
|     "sdk/judge/sub2/ISub2Judge.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgeCftc.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgeComm.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgeDcrk.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgePdqb.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgeQxxs.cpp", | ||||
|     "sdk/judge/sub2/Sub2JudgeZjzw.cpp", | ||||
|     "sdk/judge/sub3/ISub3Judge.cpp", | ||||
|     "sdk/judge/sub2/ISub2JudgeItem.cpp", | ||||
|     "sdk/judge/sub2/ISub2JudgeWrap.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge00Dcrk.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge02Pdqb.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge03Cftc.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge05Qxxs.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge06Zjzw.cpp", | ||||
|     "sdk/judge/sub2/Sub2Judge20Comm.cpp", | ||||
|     "sdk/judge/sub3/ISub3JudgeItem.cpp", | ||||
|     "sdk/judge/sub3/ISub3JudgeWrap.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge01Sczb.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge02Qbxx.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge03Zxxs.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge04Bgcd.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge05Lkzx.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge06Rxhd.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge07Xxqy.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge08Gjzt.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge09Hcxx.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge10Ccxx.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge11Kbtc.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge12Dtxx.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge12Lkdt.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge12Ptdt.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge13Yjxs.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge14Jjdw.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge15Lkzz.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge16Lkyz.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge20Comm.cpp", | ||||
|     "sdk/judge/sub3/Sub3Judge41Mndg.cpp", | ||||
|     "sdk/parser/XIParser.cpp", | ||||
|     "sdk/parser/XParser.cpp", | ||||
|     "sdk/parser/XParser2.cpp", | ||||
| @ -93,6 +115,7 @@ | ||||
|     "sdk/common", | ||||
|     "sdk/database", | ||||
|     "sdk/database/carinfo", | ||||
|     "sdk/database/iteminfo", | ||||
|     "sdk/database/mappoint", | ||||
|     "sdk/database/mark", | ||||
|     "sdk/database/sysparm", | ||||
|  | ||||
| @ -35,7 +35,6 @@ | ||||
| 		"yl": 0, | ||||
| 		"yy": 0, | ||||
| 		"rmndg": 0, | ||||
| 		"wavend": 1, | ||||
| 		"mndg": "2,1,3;4,1,2;3,4,2;2,2,1;3,1,1;", | ||||
| 		"sde": 0, | ||||
| 		"xhd":"" | ||||
|  | ||||
| @ -38,7 +38,6 @@ ErrorCode ExamCarSub3::examBeginExam() | ||||
|     //    loginfo("exam-item xmdm=%d", item.xmdm);
 | ||||
|     //}
 | ||||
| 
 | ||||
|     m_pub = TPubKM3(); | ||||
|     std::string sError; | ||||
|     if(!Init_KM3_Global(sError)) | ||||
|     { | ||||
| @ -1183,7 +1182,7 @@ void ExamCarSub3::Deal_KM3_Judge() | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     m_pub.m_KsLjLc = m_stuInfo.yklc + m_cg->ai_ljjl; | ||||
|     m_KsLjLc = m_stuInfo.yklc + m_cg->ai_ljjl; | ||||
|     m_cg->tkCnt = GetCurrentTick2(); | ||||
|     m_cg->RTKKM3.CrossPointNo = lastCrossPtNo(); | ||||
| 
 | ||||
| @ -1197,21 +1196,20 @@ void ExamCarSub3::Deal_KM3_Judge() | ||||
|     //    CallRenGongEnterItem(mitemno);
 | ||||
|     //}
 | ||||
| 
 | ||||
|     //240710
 | ||||
|     //if(m_cg->real.sensor.rmndg == SYES)
 | ||||
|     //{
 | ||||
|     //    TKM3Item* item = findExamItem(Sub3ItemType41Mndg);
 | ||||
|     //    if(item && item->TestPro == ItemProFlagIdle)
 | ||||
|     //    {
 | ||||
|     //        item->Item_Color = itemStateZk;
 | ||||
|     //        item->TestPro = ItemProFlagInit;
 | ||||
|     //        item->FinishFlag = false;
 | ||||
|     //        //item->StartTime = GetCurrentTime2();
 | ||||
|     //        //item->EndTime = 0;
 | ||||
|     //        //item->MsgData = "";
 | ||||
|     //        //createEventEnterItem({item->ItemNo, ""});
 | ||||
|     //    }
 | ||||
|     //}
 | ||||
|     if(m_cg->real.sensor.rmndg == SYES) | ||||
|     { | ||||
|         TKM3Item* item = findExamItem(Sub3ItemType41Mndg); | ||||
|         if(item && item->TestPro == ItemProFlagIdle) | ||||
|         { | ||||
|             item->Item_Color = itemStateZk; | ||||
|             item->TestPro = ItemProFlagInit; | ||||
|             item->FinishFlag = false; | ||||
|             //item->StartTime = GetCurrentTime2();
 | ||||
|             //item->EndTime = 0;
 | ||||
|             //item->MsgData = "";
 | ||||
|             //createEventEnterItem({item->ItemNo, ""});
 | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     m_curItem = nullptr; | ||||
|     //执行具体的专项评判
 | ||||
| @ -2291,7 +2289,7 @@ void ExamCarSub3::RTKJudge_SubItem() | ||||
|                 RTKKM3.CrossLineAttr = TRTKResult::CrossLineAttr1; | ||||
|                 RTKKM3.ShapeNo = SNO; | ||||
|                 //RTKKM3.LS_ShapeNo = 0;
 | ||||
|                 m_pub.m_SNO = 0; | ||||
|                 m_SNO = 0; | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
| @ -2303,7 +2301,7 @@ void ExamCarSub3::RTKJudge_SubItem() | ||||
|                 RTKKM3.CrossLineAttr = TRTKResult::CrossLineAttr1; | ||||
|                 RTKKM3.ShapeNo = SNO; | ||||
|                 //RTKKM3.LS_ShapeNo = SNO;
 | ||||
|                 m_pub.m_SNO = SNO; | ||||
|                 m_SNO = SNO; | ||||
|                 RTKKM3.CrossPoint = subItem->Point2; | ||||
| 
 | ||||
|                 const Pointi& p1 = subItem->Line3.PtBegin; | ||||
| @ -2313,19 +2311,19 @@ void ExamCarSub3::RTKJudge_SubItem() | ||||
|                 RTKKM3.CrossShapeLength = std::round(std::sqrt(x*x + y*y)); | ||||
|                 break; | ||||
|             } | ||||
|             if(m_pub.m_SNO == SNO)   //RTKKM3.LS_ShapeNo == SNO
 | ||||
|             if(m_SNO == SNO)   //RTKKM3.LS_ShapeNo == SNO
 | ||||
|             { | ||||
|                 if(GpsMath::IsCross(line, subItem->Line3)) | ||||
|                 { | ||||
|                     RTKKM3.CrossLineAttr = TRTKResult::CrossLineAttr2; //中心点右侧
 | ||||
|                     RTKKM3.ShapeNo = SNO; | ||||
|                     //RTKKM3.LS_ShapeNo = 0;
 | ||||
|                     m_pub.m_SNO = 0; | ||||
|                     m_SNO = 0; | ||||
|                 } | ||||
|                 else if(GpsMath::IsCross(line, subItem->Line2)) | ||||
|                 { | ||||
|                     //RTKKM3.LS_ShapeNo = 0;
 | ||||
|                     m_pub.m_SNO = 0; | ||||
|                     m_SNO = 0; | ||||
|                 } | ||||
|                 const Pointi& p1 = RTKKM3.CrossPoint; | ||||
|                 const Pointi& p2 = m_cg->body.b1_b; //CarStatus.BasePoint1_RealTime;
 | ||||
| @ -2334,7 +2332,7 @@ void ExamCarSub3::RTKJudge_SubItem() | ||||
|                 if(dis > RTKKM3.CrossShapeLength * 3)  //3--6  20170924
 | ||||
|                 { | ||||
|                     //RTKKM3.LS_ShapeNo = 0;
 | ||||
|                     m_pub.m_SNO = 0; | ||||
|                     m_SNO = 0; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| @ -3273,8 +3271,8 @@ void ExamCarSub3::Km3NewEnterItem() | ||||
|         cg->MapPoint_Road_Code = Road_Code; | ||||
| 
 | ||||
|         //得到穿越的点号,在路口项目中,会被转换成路段的点。(如果右路段信息的话,当然了,路口项目肯定是在特定的路段上的)
 | ||||
|         m_pub.PubLastChuanYuePtNo = crossPointNo; | ||||
|         m_pub.PubLastChuanYuePt_JLCM = disCM; | ||||
|         PubLastChuanYuePtNo = crossPointNo; | ||||
|         PubLastChuanYuePt_JLCM = disCM; | ||||
|         //如果不是项目点,忽略  //读卡进项目的
 | ||||
| 
 | ||||
|         //(*2024-03-05*)
 | ||||
| @ -3338,10 +3336,10 @@ void ExamCarSub3::ReadItemByPoint(int crossPointNo) | ||||
|         const std::string& s319 = TableSysSet->get319(); | ||||
|         //SysSet[319]: 1:必须达到里程,才能进入靠边停车
 | ||||
|         //SysSet[319]: 2:必须达到里程,并且完成必考项目。才能进入靠边停车
 | ||||
|         if(s319 == "1" && m_pub.m_KsLjLc < m_car.XSJL) return; | ||||
|         if(s319 == "1" && m_KsLjLc < m_car.XSJL) return; | ||||
|         if(s319 == "2") | ||||
|         { | ||||
|             if(m_pub.m_KsLjLc < m_car.XSJL) return; | ||||
|             if(m_KsLjLc < m_car.XSJL) return; | ||||
|             bool unfinished = false; | ||||
|             for(auto it = m_sub3Items.begin(); it != m_sub3Items.end(); it++) | ||||
|             { | ||||
| @ -3734,7 +3732,7 @@ bool ExamCarSub3::KM3AllPass() | ||||
|     if(isQualified())  //当前是合格的
 | ||||
|     { | ||||
|         int s336 = TableSysSet->asInt336(); | ||||
|         if(m_pub.m_KsLjLc + s336 < m_car.XSJL) | ||||
|         if(m_KsLjLc + s336 < m_car.XSJL) | ||||
|         { | ||||
|             return false; | ||||
|         } | ||||
| @ -3850,7 +3848,7 @@ void ExamCarSub3::KM3EndItem(int ItemNo) | ||||
|     examItem->GPS_n = 0; | ||||
|     if(examItem->ItemNo == Sub3ItemType04Bgcd || examItem->ItemNo == Sub3ItemType10Ccxx) | ||||
|     { | ||||
|         m_pub.PUB_JDCC_ZT = 0; //借道超车
 | ||||
|         PUB_JDCC_ZT = 0; //借道超车
 | ||||
|     } | ||||
|     //已考项目变量更新
 | ||||
|     if(!isExamAlready(ItemNo)) | ||||
| @ -3967,7 +3965,7 @@ bool ExamCarSub3::judgeMark(int ItemNo, const std::string& serial, bool OnlyOneI | ||||
|                 (ItemNo == Sub3ItemType04Bgcd && serial == "43") ) | ||||
|         { | ||||
|             if(m_cg->ai_ljjl < 500) return result; | ||||
|             if(m_pub.m_KsLjLc + TableSysSet->asInt336() >= m_car.XSJL) return result; | ||||
|             if(m_KsLjLc + TableSysSet->asInt336() >= m_car.XSJL) return result; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @ -4418,7 +4416,7 @@ bool ExamCarSub3::ManualStartItem(int ItemNo) | ||||
|         if(ItemNo == Sub3ItemType04Bgcd || ItemNo == Sub3ItemType10Ccxx) | ||||
|         { | ||||
|             //ToDo:语音播报:取消变更车道
 | ||||
|             m_pub.PUB_JDCC_ZT = 0; //借道超车
 | ||||
|             PUB_JDCC_ZT = 0; //借道超车
 | ||||
|         } | ||||
|         //ToDo:语音播报:取消变更车道
 | ||||
|         createEventCancelItem({ItemNo, ""}); | ||||
|  | ||||
| @ -51,25 +51,25 @@ public:  //for IExamCarSub3 override | ||||
|     virtual TCar*      getTCar()       override { return &m_car; } | ||||
|     virtual TTestCtl*  getTTestCtl()   override { return &m_ctl; } | ||||
| 
 | ||||
|     virtual int        lastCrossPtNo() override { return m_pub.PubLastChuanYuePtNo; } | ||||
|     virtual void       setPUB_JDCC_ZT(int v)  override { m_pub.PUB_JDCC_ZT = v;} | ||||
|     virtual int        getPUB_JDCC_ZT() const override { return m_pub.PUB_JDCC_ZT;} | ||||
|     virtual void       setChaoChe_Start_TM(int64 v) override { m_pub.ChaoChe_Start_TM = v;} | ||||
|     virtual int64      getChaoChe_Start_TM() const override { return m_pub.ChaoChe_Start_TM;} | ||||
|     virtual void       setChaoChe_End_TM(int64 v) override { m_pub.ChaoChe_End_TM = v;} | ||||
|     virtual int64      getChaoChe_End_TM() const override { return m_pub.ChaoChe_End_TM;} | ||||
|     virtual void       setPub_JSC_JL(int v) override { m_pub.Pub_JSC_JL = v;} | ||||
|     virtual int        getPub_JSC_JL() const override { return m_pub.Pub_JSC_JL; } | ||||
|     virtual void       setNJ_DiaoTou_JL(int v) override { m_pub.NJ_DiaoTou_JL = v; } | ||||
|     virtual int        getNJ_DiaoTou_JL() const override { return m_pub.NJ_DiaoTou_JL; } | ||||
|     virtual void       setPubCanJudge_XiHuoFlag(bool v) override { m_pub.PubCanJudge_XiHuoFlag = v; } | ||||
|     virtual bool       getPubCanJudge_XiHuoFlag() const override { return m_pub.PubCanJudge_XiHuoFlag; } | ||||
|     virtual void       setPubKaoBianTCFinish_LJJL(int v) override { m_pub.PubKaoBianTCFinish_LJJL = v; } | ||||
|     virtual int        getPubKaoBianTCFinish_LJJL() const override { return m_pub.PubKaoBianTCFinish_LJJL; } | ||||
|     virtual void       setKsLjLc(int v)  override { m_pub.m_KsLjLc = v; } | ||||
|     virtual int        getKsLjLc() const override { return m_pub.m_KsLjLc; } | ||||
|     virtual void       setyjdg_road_code_kf(bool v) override { m_pub.yjdg_road_code_kf = v; } | ||||
|     virtual bool       getyjdg_road_code_kf() const override { return m_pub.yjdg_road_code_kf; } | ||||
|     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;} | ||||
|     virtual int64      getChaoChe_Start_TM() const override { return ChaoChe_Start_TM;} | ||||
|     virtual void       setChaoChe_End_TM(int64 v) override { ChaoChe_End_TM = v;} | ||||
|     virtual int64      getChaoChe_End_TM() const override { return ChaoChe_End_TM;} | ||||
|     virtual void       setPub_JSC_JL(int v) override { Pub_JSC_JL = v;} | ||||
|     virtual int        getPub_JSC_JL() const override { return Pub_JSC_JL; } | ||||
|     virtual void       setNJ_DiaoTou_JL(int v) override { NJ_DiaoTou_JL = v; } | ||||
|     virtual int        getNJ_DiaoTou_JL() const override { return NJ_DiaoTou_JL; } | ||||
|     virtual void       setPubCanJudge_XiHuoFlag(bool v) override { PubCanJudge_XiHuoFlag = v; } | ||||
|     virtual bool       getPubCanJudge_XiHuoFlag() const override { return PubCanJudge_XiHuoFlag; } | ||||
|     virtual void       setPubKaoBianTCFinish_LJJL(int v) override { PubKaoBianTCFinish_LJJL = v; } | ||||
|     virtual int        getPubKaoBianTCFinish_LJJL() const override { return PubKaoBianTCFinish_LJJL; } | ||||
|     virtual void       setKsLjLc(int v)  override { m_KsLjLc = v; } | ||||
|     virtual int        getKsLjLc() const override { return m_KsLjLc; } | ||||
|     virtual void       setyjdg_road_code_kf(bool v) override { yjdg_road_code_kf = v; } | ||||
|     virtual bool       getyjdg_road_code_kf() const override { return yjdg_road_code_kf; } | ||||
| 
 | ||||
| protected: | ||||
|     bool Init_KM3_Global(std::string& sError); | ||||
| @ -151,7 +151,6 @@ private: | ||||
| 
 | ||||
|     TCar m_car; | ||||
|     TTestCtl m_ctl; | ||||
|     TPubKM3 m_pub; | ||||
| 
 | ||||
|     std::vector<int> m_carPosMeshList; | ||||
|     const int m_DrawArc_Step = 40; | ||||
| @ -159,6 +158,25 @@ private: | ||||
|     int E_1Deg2Cm = 0; //经度1度=多少厘米
 | ||||
|     const int N_1Deg2Cm = 11110792; //北纬1度=X cm
 | ||||
| 
 | ||||
|     int m_KsZgDw = 0; //记录考试中的最高档位
 | ||||
|     int m_KsZgSs = 0; //记录考试中的最高时速
 | ||||
|     int m_KsLjLc = 0; //记录考试累计里程(米)
 | ||||
| 
 | ||||
|     int PubLastChuanYuePtNo = 0; //最后一次经过的点
 | ||||
|     int PubLastChuanYuePt_JLCM = 0; //最后一次经过的点偏移量
 | ||||
| 
 | ||||
|     int NJ_DiaoTou_JL = 0; //个性需求
 | ||||
|     int64 ChaoChe_Start_TM = 0; //2018011 超车开始时间
 | ||||
|     int64 ChaoChe_End_TM = 0; //2018011 超车结束时间
 | ||||
|     int PUB_JDCC_ZT = 0; //借道超车状态 0:非借道 1:表示超车  2:表示正在返回原车道  3:回原车道道完成  20180227
 | ||||
|     bool yjdg_road_code_kf = false; | ||||
| 
 | ||||
|     int Pub_JSC_JL = 0; | ||||
|     bool PubCanJudge_XiHuoFlag = true;  //注意初始必须是true
 | ||||
|     int PubKaoBianTCFinish_LJJL = 0; | ||||
| 
 | ||||
|     int m_SNO = 0; | ||||
| 
 | ||||
|     //TCarStatus m_carStatus;
 | ||||
| 
 | ||||
|     //int64 m_ContinuedStartTime = 0; //续考的上次开始考试时间  20150205
 | ||||
|  | ||||
| @ -110,32 +110,32 @@ bool ExamSensor::convertDatas(TChuanGan* cg) | ||||
| { | ||||
|     TSensorInfo& sor = cg->real.sensor; | ||||
|     sor.dw_plc = sor.dw; | ||||
|     // if(m_car->examSubject() == ExamSubject2)
 | ||||
|     // {
 | ||||
|     // }
 | ||||
|     // else if(m_car->examSubject() == ExamSubject3)
 | ||||
|     // {
 | ||||
|     //     IExamCarSub3* car = dynamic_cast<IExamCarSub3*>(m_car);
 | ||||
|     //     TCar* tcar = car->getTCar();
 | ||||
|     //     //给雾灯信号赋值的时候,一定要遵守下面的规则
 | ||||
|     //     switch(tcar->WD_Signal)
 | ||||
|     //     {
 | ||||
|     //     case 0: sor.wd = sor.ygq;     break;
 | ||||
|     //     case 1: sor.wd = 1 - sor.yy;  break; //这是取反的的意思如果有信号1, 1-1就是0;
 | ||||
|     //         //20140411
 | ||||
|     //     case 2: sor.wd = 1 - sor.ygq; break; //这是取反的的意思如果有信号1, 1-1就是0;
 | ||||
|     //     case 3: sor.wd = sor.yy;      break;
 | ||||
|     //     default:break;
 | ||||
|     //     }
 | ||||
|     //
 | ||||
|     //     if(tcar->CarTypeName == XCharacter("吉利豪情"))
 | ||||
|     //     {
 | ||||
|     //         if(sor.ygq == SNOT)
 | ||||
|     //         {
 | ||||
|     //             sor.wd = SNOT;
 | ||||
|     //         }
 | ||||
|     //     }
 | ||||
|     // }
 | ||||
|     if(m_car->examSubject() == ExamSubject2) | ||||
|     { | ||||
|     } | ||||
|     else if(m_car->examSubject() == ExamSubject3) | ||||
|     { | ||||
|         IExamCarSub3* car = dynamic_cast<IExamCarSub3*>(m_car); | ||||
|         TCar* tcar = car->getTCar(); | ||||
|         //给雾灯信号赋值的时候,一定要遵守下面的规则
 | ||||
|         switch(tcar->WD_Signal) | ||||
|         { | ||||
|         case 0: sor.wd = sor.ygq;     break; | ||||
|         case 1: sor.wd = 1 - sor.yy;  break; //这是取反的的意思如果有信号1, 1-1就是0;
 | ||||
|             //20140411
 | ||||
|         case 2: sor.wd = 1 - sor.ygq; break; //这是取反的的意思如果有信号1, 1-1就是0;
 | ||||
|         case 3: sor.wd = sor.yy;      break; | ||||
|         default:break; | ||||
|         } | ||||
| 
 | ||||
|         if(tcar->CarTypeName == XCharacter("吉利豪情")) | ||||
|         { | ||||
|             if(sor.ygq == SNOT) | ||||
|             { | ||||
|                 sor.wd = SNOT; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     //油门计算,松油门信号
 | ||||
|     sor.sym = 0; | ||||
|  | ||||
| @ -428,10 +428,7 @@ struct TSub3Item41Mndg  //模拟灯光 41 | ||||
|     int64 Lt_LastChange_TM = 0; //灯光最后变化时间
 | ||||
|     int Lt_YJ_cs = 0; //远近光灯变化次数  20150327
 | ||||
| 
 | ||||
|     //std::array<std::string, 7> Lt_Change; //: array[0..6] of string; //0:未定义   1:示宽,2:双跳,3:雾灯,4:远光,5:近光,6:交替,         注意:记录灯光的变化,示宽是从有到无,其他是从无到有
 | ||||
|     std::string Lt_Change; | ||||
| 
 | ||||
|     std::string Lt_Change_Last; | ||||
|     std::array<std::string, 7> Lt_Change; //: array[0..6] of string; //0:未定义   1:示宽,2:双跳,3:雾灯,4:远光,5:近光,6:交替,         注意:记录灯光的变化,示宽是从有到无,其他是从无到有
 | ||||
| 
 | ||||
|     int8 ItemNo = 0, ItemStatus = 0; //St 控制具体项目  St1控制指定项目的状态
 | ||||
|     int64 Snd_Wav_Start_TM = 0; //语音开始时间
 | ||||
|  | ||||
| @ -63,26 +63,24 @@ void Sub3Judge20Comm::dealJudgeItem() | ||||
|     //自动靠边停车计算
 | ||||
|     Call_Auto_KBTC(); | ||||
|     //Step0-2触发模拟灯光
 | ||||
| 
 | ||||
|     CallMoNiDengGuang();  //240710
 | ||||
|     //if(!m_car->isReplay()) //(Data_Replay.Kind = 2) then //杨海洋实际考试模式(就是说非回放模式的)
 | ||||
|     //{
 | ||||
|     //    CallMoNiDengGuang(); //yhyflag  
 | ||||
|     //}
 | ||||
|     //else
 | ||||
|     //{
 | ||||
|     //    //回放相关的
 | ||||
|     //    if(sor.rmndg == SYES)
 | ||||
|     //    {
 | ||||
|     //        TKM3Item* item = m_car->findExamItem(Sub3ItemType41Mndg);
 | ||||
|     //        if(item && item->TestPro == ItemProFlagIdle)
 | ||||
|     //        {
 | ||||
|     //            item->Item_Color = itemStateZk;
 | ||||
|     //            item->TestPro = ItemProFlagInit;
 | ||||
|     //            item->FinishFlag = false;
 | ||||
|     //        }
 | ||||
|     //    }
 | ||||
|     //}
 | ||||
|     if(!m_car->isReplay()) //(Data_Replay.Kind = 2) then //杨海洋实际考试模式(就是说非回放模式的)
 | ||||
|     { | ||||
|         CallMoNiDengGuang(); //yhyflag
 | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         //回放相关的
 | ||||
|         if(sor.rmndg == SYES) | ||||
|         { | ||||
|             TKM3Item* item = m_car->findExamItem(Sub3ItemType41Mndg); | ||||
|             if(item && item->TestPro == ItemProFlagIdle) | ||||
|             { | ||||
|                 item->Item_Color = itemStateZk; | ||||
|                 item->TestPro = ItemProFlagInit; | ||||
|                 item->FinishFlag = false; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     //1、溜车评判
 | ||||
|     Judge_LiuChe(); | ||||
|  | ||||
| @ -96,7 +96,6 @@ bool Sub3Judge41Mndg::dealJudgeEnter() | ||||
|     //Pub_Log('开始模拟夜间New');
 | ||||
|     //灯光初始化
 | ||||
|     m_itemv = TSub3Item41Mndg(); | ||||
|     m_itemv.Lt_Change.resize(7, N0); | ||||
|     //m_exam->TestPro = ItemProFlagJudge;
 | ||||
|     //ToDo2:生成进项目事件
 | ||||
| 
 | ||||
| @ -161,15 +160,6 @@ void Sub3Judge41Mndg::dealJudgeItem() | ||||
|     const TGpsInfo& gps1 = his1->real.gps; | ||||
|     const std::string& ksdd = TableSysSet->get211(); | ||||
| 
 | ||||
|     //调试代码
 | ||||
|     if(gps.sj - m_lastDealTick > 5*SECOND) | ||||
|     { | ||||
|         m_lastDealTick = gps.sj; | ||||
| 
 | ||||
|         logtrace("mndg-tick-Op_Step=%d,ItemStatus=%d,Item=%d%d%d", m_itemv.Op_Step,m_itemv.ItemStatus, | ||||
|                  m_itemv.ItemNo,m_itemv.SubWav1,m_itemv.SubWav2); | ||||
|     } | ||||
| 
 | ||||
|     if(ksdd == siteof::zjnb) | ||||
|     { | ||||
|         if(cg->move == moveStop && sor.ssc == SNOT) | ||||
| @ -270,7 +260,7 @@ void Sub3Judge41Mndg::dealJudgeItem() | ||||
|     } | ||||
|     else if(m_itemv.ItemNo == 100)  //灯光结束
 | ||||
|     { | ||||
|         logtrace("mndg-item-end"); | ||||
|         logtrace("sound-mndg-end"); | ||||
|         m_exam->TestPro = ItemProFlagEnd; | ||||
|         if(m_car->isExamDrill())  //训练模式
 | ||||
|         { | ||||
| @ -302,7 +292,7 @@ void Sub3Judge41Mndg::dealJudgeItem() | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         logerror("mndg-error-Op_Step=%d,ItemNo=%d,Status=%d",m_itemv.Op_Step, m_itemv.ItemNo, m_itemv.ItemStatus); | ||||
|         logerror("mndg-error Op_Step=%d,ItemNo=%d,Status=%d",m_itemv.Op_Step, m_itemv.ItemNo, m_itemv.ItemStatus); | ||||
|     } | ||||
| 
 | ||||
|     char buf[128] = {0}; | ||||
| @ -373,18 +363,18 @@ void Sub3Judge41Mndg::UpdateDengGuangChange() | ||||
|                     { | ||||
|                         if(MilliSecondsBetween(gps.sj, m_itemv.Lt_YJ_TM) < m_itemv.P_YJGD_JT_YS) | ||||
|                         { | ||||
|                             m_itemv.Lt_Change[6] = Y1; | ||||
|                             m_itemv.Lt_Change[6] = "1"; | ||||
|                             m_itemv.Lt_YJ_TM = 0; | ||||
|                             m_itemv.Lt_YJ_cs++; //Inc(m_itemv.Lt_YJ_cs); //20150327
 | ||||
|                             if(ksdd == siteof::shijiazhuang1001) | ||||
|                             { | ||||
|                                 if(m_itemv.Lt_YJ_cs >= 2) | ||||
|                                 { | ||||
|                                     m_itemv.Lt_Change[6] = Y1; | ||||
|                                     m_itemv.Lt_Change[6] = "1"; | ||||
|                                 } | ||||
|                                 else | ||||
|                                 { | ||||
|                                     m_itemv.Lt_Change[6] = N0; | ||||
|                                     m_itemv.Lt_Change[6] = "0"; | ||||
|                                 } | ||||
|                             } | ||||
| 
 | ||||
| @ -392,9 +382,9 @@ void Sub3Judge41Mndg::UpdateDengGuangChange() | ||||
|                             if(ksdd == siteof::gdjykm3 || ksdd == siteof::jiuquan) | ||||
|                             { | ||||
|                                 if(m_itemv.Lt_YJ_cs == 2) | ||||
|                                     m_itemv.Lt_Change[6] = Y1; | ||||
|                                     m_itemv.Lt_Change[6] = "1"; | ||||
|                                 else | ||||
|                                     m_itemv.Lt_Change[6] = N0; | ||||
|                                     m_itemv.Lt_Change[6] = "0"; | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
| @ -432,26 +422,26 @@ void Sub3Judge41Mndg::UpdateDengGuangChange() | ||||
|                         if(tm <= m_itemv.P_YJGD_JT_YS) | ||||
|                         { | ||||
|                             //(m_itemv.Snd_No = 2) and (m_itemv.Snd_No1 = 1) and (m_itemv.St=1) 超车
 | ||||
|                             m_itemv.Lt_Change[6] = Y1; | ||||
|                             m_itemv.Lt_Change[6] = "1"; | ||||
|                             m_itemv.Lt_YJ_TM = 0; //成功闪灯一次,远近关灯时间清空
 | ||||
|                             m_itemv.Lt_YJ_cs++; //Inc(m_itemv.Lt_YJ_cs);
 | ||||
|                             if(ksdd == siteof::shijiazhuang1001) | ||||
|                             { | ||||
|                                 if(m_itemv.Lt_YJ_cs >= 2) | ||||
|                                     m_itemv.Lt_Change[6] = Y1; | ||||
|                                     m_itemv.Lt_Change[6] = "1"; | ||||
|                                 else | ||||
|                                     m_itemv.Lt_Change[6] = N0; | ||||
|                                     m_itemv.Lt_Change[6] = "0"; | ||||
|                             } | ||||
| 
 | ||||
|                             if(ksdd == siteof::gdjykm3 || ksdd == siteof::jiuquan) | ||||
|                             { | ||||
|                                 if(m_itemv.Lt_YJ_cs == 2) | ||||
|                                 { | ||||
|                                     m_itemv.Lt_Change[6] = Y1; | ||||
|                                     m_itemv.Lt_Change[6] = "1"; | ||||
|                                 } | ||||
|                                 else | ||||
|                                 { | ||||
|                                     m_itemv.Lt_Change[6] = N0; | ||||
|                                     m_itemv.Lt_Change[6] = "0"; | ||||
|                                 } | ||||
|                             } | ||||
|                         } | ||||
| @ -461,7 +451,7 @@ void Sub3Judge41Mndg::UpdateDengGuangChange() | ||||
|             //如果有闪灯信号,直接赋值就可以了(前提是要有硬件支持)
 | ||||
|             if(sor.sde == SYES && sor1.sde == SNOT) | ||||
|             { | ||||
|                 m_itemv.Lt_Change[6] = Y1; | ||||
|                 m_itemv.Lt_Change[6] = "1"; | ||||
|             } | ||||
| 
 | ||||
|             //远光,近光,
 | ||||
| @ -471,14 +461,14 @@ void Sub3Judge41Mndg::UpdateDengGuangChange() | ||||
|                 { | ||||
|                     if(sor.ygd == SYES) | ||||
|                     { | ||||
|                         m_itemv.Lt_Change[4] = Y1; | ||||
|                         m_itemv.Lt_Change[4] = "1"; | ||||
|                         m_itemv.Lt_YJ_TM = 0; | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         if(sor.jgd == SYES) | ||||
|                         { | ||||
|                             m_itemv.Lt_Change[5] = Y1; | ||||
|                             m_itemv.Lt_Change[5] = "1"; | ||||
|                             m_itemv.Lt_YJ_TM = 0; | ||||
|                         } | ||||
|                     } | ||||
| @ -510,12 +500,12 @@ void Sub3Judge41Mndg::UpdateDengGuangChange() | ||||
|             } | ||||
|             if(Flag1 == true || Flag2 == true || Flag3 == true || Flag4 == true) | ||||
|             { | ||||
|                 m_itemv.Lt_Change[1] = Y1; | ||||
|                 m_itemv.Lt_Change[1] = "1"; | ||||
|             } | ||||
|             //双跳,
 | ||||
|             if(sor.shtd == SYES && sor1.shtd == SNOT) | ||||
|             { | ||||
|                 m_itemv.Lt_Change[2] = Y1; | ||||
|                 m_itemv.Lt_Change[2] = "1"; | ||||
|             } | ||||
| 
 | ||||
|             //雾灯, 20181015
 | ||||
| @ -523,12 +513,12 @@ void Sub3Judge41Mndg::UpdateDengGuangChange() | ||||
|             { | ||||
|                 if(sor.wd == SYES && sor1.wd == SNOT) | ||||
|                 { | ||||
|                     m_itemv.Lt_Change[3] = Y1; | ||||
|                     m_itemv.Lt_Change[3] = "1"; | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 m_itemv.Lt_Change[3] = N0; | ||||
|                 m_itemv.Lt_Change[3] = "0"; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @ -537,8 +527,6 @@ void Sub3Judge41Mndg::UpdateDengGuangChange() | ||||
| //0、统一调度
 | ||||
| void Sub3Judge41Mndg::CallItemProc() | ||||
| { | ||||
|     logtrace("mndg-Op_Step CallItemProc"); | ||||
| 
 | ||||
|     const TChuanGan* cg = m_car->historyChuanGan(); | ||||
|     const TGpsInfo& gps = cg->real.gps; | ||||
|     const TSensorInfo& sor = cg->real.sensor; | ||||
| @ -594,7 +582,7 @@ void Sub3Judge41Mndg::CallItemProc() | ||||
|                 m_itemv.ItemNo = 100; | ||||
|             } | ||||
| 
 | ||||
|             logtrace("mndg-item-Op_Step=%d,ItemStatus=%d,Item=%d%d%d", m_itemv.Op_Step,m_itemv.ItemStatus, | ||||
|             logtrace("Op_Step=%d,ItemStatus=%d,Item=%d%d%d", m_itemv.Op_Step,m_itemv.ItemStatus, | ||||
|                      m_itemv.ItemNo,m_itemv.SubWav1,m_itemv.SubWav2); | ||||
|         } | ||||
|     } | ||||
| @ -1296,7 +1284,7 @@ void Sub3Judge41Mndg::JiaoTi_DengGuang() | ||||
|     { | ||||
|         for(size_t i = 0; i < m_itemv.Lt_Change.size(); i++) | ||||
|         { | ||||
|             m_itemv.Lt_Change[i] = N0; | ||||
|             m_itemv.Lt_Change[i] = "0"; | ||||
|         } | ||||
| 
 | ||||
|         m_itemv.Lt_YJ_TM = 0; | ||||
| @ -1323,7 +1311,7 @@ void Sub3Judge41Mndg::JiaoTi_DengGuang() | ||||
|     else if(m_itemv.ItemStatus == 3)  //操作结果
 | ||||
|     { | ||||
|         //检查灯光错误
 | ||||
|         if(m_itemv.P_IF_Err_Kf && m_itemv.Lt_Change != m_itemv.Lt_Change_Last) | ||||
|         if(m_itemv.P_IF_Err_Kf) | ||||
|         { | ||||
|             //检查上一个灯光题目:是不是 “车辆发生故障”
 | ||||
|             bool b5 = (m_itemv.LastSubItemNo == 5); | ||||
| @ -1339,7 +1327,7 @@ void Sub3Judge41Mndg::JiaoTi_DengGuang() | ||||
|                     if(i == 2 || i == 3) | ||||
|                     { | ||||
|                         // //0:未定义   1:示宽, 2:双跳, 3:雾灯,4:远光,5:近光,6:交替,         注意:记录灯光的变化,示宽是从有到无,其他是从无到有
 | ||||
|                         if(m_itemv.Lt_Change[i] == Y1) | ||||
|                         if(m_itemv.Lt_Change[i] == "1") | ||||
|                         { | ||||
|                             //打错灯了
 | ||||
|                             if(m_itemv.SubWav1 == 2 || m_itemv.SubWav1 == 3)  //按规则翻译,夜间超车相关的
 | ||||
| @ -1411,7 +1399,7 @@ void Sub3Judge41Mndg::JiaoTi_DengGuang() | ||||
|                 if(sor.zfxd == SYES && sor1.zfxd == SYES) | ||||
|                 { | ||||
|                     m_itemv.Cc_Jd = 1; | ||||
|                     m_itemv.Lt_Change[6] = N0; | ||||
|                     m_itemv.Lt_Change[6] = "0"; | ||||
|                 } | ||||
|                 //20171123
 | ||||
|                 if(ksdd == siteof::guizhoubj && MilliSecondsBetween(gps.sj, m_itemv.Snd_Wav_End_TM) > m_itemv.P_zys) | ||||
| @ -1454,7 +1442,7 @@ void Sub3Judge41Mndg::JiaoTi_DengGuang() | ||||
|             } | ||||
|             else if(m_itemv.Cc_Jd == 1) | ||||
|             { | ||||
|                 if(m_itemv.Lt_Change[6] == Y1) | ||||
|                 if(m_itemv.Lt_Change[6] == "1") | ||||
|                 { | ||||
|                     m_itemv.Cc_Jd = 2; | ||||
|                 } | ||||
| @ -1555,7 +1543,7 @@ void Sub3Judge41Mndg::JiaoTi_DengGuang() | ||||
|             //雾天行驶 要判断双跳灯+雾灯
 | ||||
|             //检查灯光正确
 | ||||
|             //非特殊地点版本
 | ||||
|             if(m_itemv.Lt_Change[6] == Y1) | ||||
|             if(m_itemv.Lt_Change[6] == "1") | ||||
|             { | ||||
|                 if(m_itemv.Lt_LastChange_TM == 0) //灯光正确了
 | ||||
|                 { | ||||
| @ -1609,7 +1597,7 @@ void Sub3Judge41Mndg::JiaoTi_DengGuang() | ||||
|             } | ||||
| 
 | ||||
|             //20171009 检查双跳灯
 | ||||
|             if(m_itemv.P_IF_Err_Kf && m_itemv.Lt_Change != m_itemv.Lt_Change_Last) | ||||
|             if(m_itemv.P_IF_Err_Kf) | ||||
|             { | ||||
|                 if(m_itemv.Lt_YesID) | ||||
|                 { | ||||
| @ -1666,7 +1654,7 @@ void Sub3Judge41Mndg::JiaoTi_DengGuang() | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         if(m_itemv.Lt_Change[6] == Y1) | ||||
|                         if(m_itemv.Lt_Change[6] == "1") | ||||
|                         { | ||||
|                             m_itemv.ItemNo = 0; | ||||
|                         } | ||||
| @ -1723,7 +1711,7 @@ void Sub3Judge41Mndg::Open_JinGuangDeng() | ||||
|     else if(m_itemv.ItemStatus == 3) | ||||
|     { | ||||
|         //检查灯光错误
 | ||||
|         if(m_itemv.P_IF_Err_Kf && m_itemv.Lt_Change != m_itemv.Lt_Change_Last) | ||||
|         if(m_itemv.P_IF_Err_Kf) | ||||
|         { | ||||
|             //检查上一个灯光题目:是不是 “车辆发生故障”
 | ||||
|             bool b5 = (m_itemv.LastSubItemNo == 5); | ||||
| @ -1742,7 +1730,7 @@ void Sub3Judge41Mndg::Open_JinGuangDeng() | ||||
|                 //0:未定义   1:示宽,2:双跳,3:雾灯,4:远光,5:近光,6:交替,         注意:记录灯光的变化,示宽是从有到无,其他是从无到有
 | ||||
|                 if(i == 4 || (b5 == false && i == 6))  //20170527   20171009
 | ||||
|                 { | ||||
|                     if(m_itemv.Lt_Change[i] == Y1) | ||||
|                     if(m_itemv.Lt_Change[i] == "1") | ||||
|                     { | ||||
|                         if(ksdd == siteof::shanghaikm3 || ksdd == siteof::jiuquan) | ||||
|                         { | ||||
| @ -1858,7 +1846,7 @@ void Sub3Judge41Mndg::Open_JinGuangDeng() | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     if(m_itemv.Lt_Change[5] == Y1)  //相当于近光灯持续了一段时间
 | ||||
|                     if(m_itemv.Lt_Change[5] == "1")  //相当于近光灯持续了一段时间
 | ||||
|                         m_itemv.Lt_YesID = true; | ||||
|                 } | ||||
|             } | ||||
| @ -1878,13 +1866,13 @@ void Sub3Judge41Mndg::Open_JinGuangDeng() | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     if(m_itemv.Lt_Change[5] == Y1)  //相当于近光灯持续了一段时间
 | ||||
|                     if(m_itemv.Lt_Change[5] == "1")  //相当于近光灯持续了一段时间
 | ||||
|                         m_itemv.Lt_YesID = true; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         //20171009 检查双跳灯
 | ||||
|         if(m_itemv.P_IF_Err_Kf && m_itemv.Lt_Change != m_itemv.Lt_Change_Last) | ||||
|         if(m_itemv.P_IF_Err_Kf) | ||||
|         { | ||||
|             if(m_itemv.Lt_YesID) | ||||
|             { | ||||
| @ -2115,7 +2103,7 @@ void Sub3Judge41Mndg::Open_YuanGuangDeng() | ||||
|     else if(m_itemv.ItemStatus == 3) | ||||
|     { | ||||
|         //检查灯光错误
 | ||||
|         if(m_itemv.P_IF_Err_Kf && m_itemv.Lt_Change != m_itemv.Lt_Change_Last) | ||||
|         if(m_itemv.P_IF_Err_Kf) | ||||
|         { | ||||
|             //检查上一个灯光题目:是不是 “车辆发生故障”
 | ||||
|             bool b5 = (m_itemv.LastSubItemNo == 5); | ||||
| @ -2127,7 +2115,7 @@ void Sub3Judge41Mndg::Open_YuanGuangDeng() | ||||
|                 { //20171010
 | ||||
|                     if(i != 4 && i != 1 && i != 6 && i != 5)  //20140812
 | ||||
|                     { | ||||
|                         if(m_itemv.Lt_Change[i] == Y1) | ||||
|                         if(m_itemv.Lt_Change[i] == "1") | ||||
|                         { | ||||
|                             if(m_itemv.SubWav1 == 2) //远光灯 20150126
 | ||||
|                             { | ||||
| @ -2154,7 +2142,7 @@ void Sub3Judge41Mndg::Open_YuanGuangDeng() | ||||
|                 { | ||||
|                     if(i != 4 && i != 1)  //20140812
 | ||||
|                     { | ||||
|                         if(m_itemv.Lt_Change[i] == Y1) | ||||
|                         if(m_itemv.Lt_Change[i] == "1") | ||||
|                         { | ||||
|                             if(m_itemv.SubWav1 == 2) //远光灯 20150126
 | ||||
|                             { | ||||
| @ -2192,7 +2180,7 @@ void Sub3Judge41Mndg::Open_YuanGuangDeng() | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 if(m_itemv.Lt_Change[4] == Y1)  //相当于远光灯持续了一段时间
 | ||||
|                 if(m_itemv.Lt_Change[4] == "1")  //相当于远光灯持续了一段时间
 | ||||
|                 { | ||||
|                     m_itemv.Lt_YesID = true; | ||||
|                 } | ||||
| @ -2208,7 +2196,7 @@ void Sub3Judge41Mndg::Open_YuanGuangDeng() | ||||
|             } | ||||
|         } | ||||
|         //20171009 检查双跳灯
 | ||||
|         if(m_itemv.P_IF_Err_Kf && m_itemv.Lt_Change != m_itemv.Lt_Change_Last) | ||||
|         if(m_itemv.P_IF_Err_Kf) | ||||
|         { | ||||
|             if(m_itemv.Lt_YesID) | ||||
|             { | ||||
| @ -2297,7 +2285,7 @@ void Sub3Judge41Mndg::CheLiangGuZhang() | ||||
|     { | ||||
|         const std::string& s421 = TableSysSet->get421(); | ||||
|         //检查灯光错误
 | ||||
|         if(m_itemv.P_IF_Err_Kf && m_itemv.Lt_Change != m_itemv.Lt_Change_Last) | ||||
|         if(m_itemv.P_IF_Err_Kf) | ||||
|         { | ||||
|             for(int i = 1; i <= 6; i++) | ||||
|             { | ||||
| @ -2307,7 +2295,7 @@ void Sub3Judge41Mndg::CheLiangGuZhang() | ||||
|                     ////0:未定义   1:示宽,2:双跳,3:雾灯,4:远光,5:近光,6:交替,         注意:记录灯光的变化,示宽是从有到无,其他是从无到有
 | ||||
|                     if(i == 3) | ||||
|                     { | ||||
|                         if(m_itemv.Lt_Change[i] == Y1) | ||||
|                         if(m_itemv.Lt_Change[i] == "1") | ||||
|                         { | ||||
|                             //打错灯了
 | ||||
|                             if(m_itemv.SubWav1 == 1) | ||||
| @ -2335,7 +2323,7 @@ void Sub3Judge41Mndg::CheLiangGuZhang() | ||||
|                         { | ||||
|                             if(i != 1 && i != 2 && i != 6) | ||||
|                             { | ||||
|                                 if(m_itemv.Lt_Change[i] == Y1) | ||||
|                                 if(m_itemv.Lt_Change[i] == "1") | ||||
|                                 { | ||||
|                                     //打错灯了
 | ||||
|                                     if(ksdd == siteof::guizhouzy) | ||||
| @ -2367,7 +2355,7 @@ void Sub3Judge41Mndg::CheLiangGuZhang() | ||||
|                             if((ksdd == siteof::jiuquan && i != 1 && i != 5) || (ksdd != siteof::jiuquan && i != 1 && i != 2 && i != 5))  //之前判断方法    //20170809
 | ||||
|                             { | ||||
|                                 ////0:未定义   1:示宽,2:双跳,3:雾灯,4:远光,5:近光,6:交替,         注意:记录灯光的变化,示宽是从有到无,其他是从无到有
 | ||||
|                                 if(m_itemv.Lt_Change[i] == Y1) | ||||
|                                 if(m_itemv.Lt_Change[i] == "1") | ||||
|                                 { | ||||
|                                     //打错灯了
 | ||||
|                                     if(m_itemv.SubWav1 == 1) | ||||
| @ -2393,7 +2381,7 @@ void Sub3Judge41Mndg::CheLiangGuZhang() | ||||
|                         if(i != 1 && i!= 2 && i != 5)  //20140923   新增不判远光灯
 | ||||
|                         { | ||||
|                             ////0:未定义   1:示宽,2:双跳,3:雾灯,4:远光,5:近光,6:交替,         注意:记录灯光的变化,示宽是从有到无,其他是从无到有
 | ||||
|                             if(m_itemv.Lt_Change[i] == Y1) | ||||
|                             if(m_itemv.Lt_Change[i] == "1") | ||||
|                             { | ||||
|                                 //打错灯了
 | ||||
|                                 if(m_itemv.SubWav1 == 1) | ||||
| @ -2570,14 +2558,14 @@ void Sub3Judge41Mndg::GuZhangJieChu() | ||||
|     else if(m_itemv.ItemStatus == 3) | ||||
|     { | ||||
|         //检查灯光错误
 | ||||
|         if(m_itemv.P_IF_Err_Kf && m_itemv.Lt_Change != m_itemv.Lt_Change_Last) | ||||
|         if(m_itemv.P_IF_Err_Kf) | ||||
|         { | ||||
|             //示宽,双跳,雾灯,远光,近光,交替,   注意:记录灯光的变化,示宽是从有到无,其他是从无到有
 | ||||
|             for(int i = 1; i <= 6; i++) | ||||
|             { | ||||
|                 if(i == 3) | ||||
|                 { | ||||
|                     if(m_itemv.Lt_Change[i] == Y1) | ||||
|                     if(m_itemv.Lt_Change[i] == "1") | ||||
|                     { | ||||
|                         //打错灯了
 | ||||
|                         JUDGE_MARK_SUB3(41, "01", true); | ||||
| @ -2665,14 +2653,14 @@ void Sub3Judge41Mndg::CloseAllDengGuang() | ||||
|     else if(m_itemv.ItemStatus == 3) | ||||
|     { | ||||
|         //检查灯光错误
 | ||||
|         if(m_itemv.P_IF_Err_Kf && m_itemv.Lt_Change != m_itemv.Lt_Change_Last) | ||||
|         if(m_itemv.P_IF_Err_Kf) | ||||
|         { | ||||
|             for(int i = 1; i <= 6; i++) | ||||
|             { | ||||
|                 //示宽,双跳,雾灯,远光,近光,交替,         注意:记录灯光的变化,示宽是从有到无,其他是从无到有
 | ||||
|                 if(i == 3) | ||||
|                 { | ||||
|                     if(m_itemv.Lt_Change[i] == Y1) | ||||
|                     if(m_itemv.Lt_Change[i] == "1") | ||||
|                     { | ||||
|                         //打错灯了
 | ||||
|                         JUDGE_MARK_SUB3(41, "01", true); | ||||
| @ -2971,11 +2959,9 @@ void Sub3Judge41Mndg::CSH_DengGuangSubItem() | ||||
|     { | ||||
|         for(size_t i = 0; i < m_itemv.Lt_Change.size(); i++) | ||||
|         { | ||||
|             m_itemv.Lt_Change[i] = N0; | ||||
|             m_itemv.Lt_Change[i] = "0"; | ||||
|         } | ||||
| 
 | ||||
|         m_itemv.Lt_Change_Last = m_itemv.Lt_Change; | ||||
| 
 | ||||
|         m_itemv.Lt_YJ_TM = 0; | ||||
|         m_itemv.Lt_YJ_cs = 0; //20150327
 | ||||
|     } | ||||
| @ -3028,7 +3014,7 @@ void Sub3Judge41Mndg::playSoundEnd(const std::string& code) | ||||
|         m_itemv.Snd_Wav_End_TM = gps.sj; | ||||
|         CSH_DengGuangSubItem(); | ||||
|         m_itemv.ItemStatus = m_itemv.ItemStatus + 1; | ||||
|         logtrace("mndg-sound-end code=%s", code.c_str()); | ||||
|         logtrace("sound-end code=%s", code.c_str()); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -212,10 +212,6 @@ protected: | ||||
|     void playSound(const std::string& kind, int SubWav1, int SubWav2); | ||||
| 
 | ||||
| private: | ||||
| 
 | ||||
|     #define Y1  ('1') | ||||
|     #define N0  ('0') | ||||
| 
 | ||||
|     TSub3Item41Mndg m_itemv; | ||||
| 
 | ||||
|     std::map<std::string, std::string> m_lights; //HeFaDengGuangDataList //加载合法的灯光  //参考头文件注释说明[灯光类型]
 | ||||
| @ -224,8 +220,6 @@ private: | ||||
|     // 四套灯光语音,随机播放任意一套作为考试题目
 | ||||
|     const std::string m_s383arg = "0^1^4^";  //383参数 新模拟夜间(次数^错扣^固定^)
 | ||||
| 
 | ||||
|     int64 m_lastDealTick = 0; | ||||
| 
 | ||||
|     //bool PlaySnd_ID = false; //正在播报语音标志
 | ||||
|     //int PlaySnd_Cnt = 0, PlaySnd_Cnt1 = 0;
 | ||||
|     //std::set<std::string> g_lstsound;
 | ||||
|  | ||||
| @ -1293,28 +1293,6 @@ struct TTestCtl | ||||
|     bool Dw_Cgd_OK = false; | ||||
| }; | ||||
| 
 | ||||
| struct TPubKM3 | ||||
| { | ||||
|     int m_KsZgDw = 0; //记录考试中的最高档位
 | ||||
|     int m_KsZgSs = 0; //记录考试中的最高时速
 | ||||
|     int m_KsLjLc = 0; //记录考试累计里程(米)
 | ||||
| 
 | ||||
|     int PubLastChuanYuePtNo = 0; //最后一次经过的点
 | ||||
|     int PubLastChuanYuePt_JLCM = 0; //最后一次经过的点偏移量
 | ||||
| 
 | ||||
|     int NJ_DiaoTou_JL = 0; //个性需求
 | ||||
|     int64 ChaoChe_Start_TM = 0; //2018011 超车开始时间
 | ||||
|     int64 ChaoChe_End_TM = 0; //2018011 超车结束时间
 | ||||
|     int PUB_JDCC_ZT = 0; //借道超车状态 0:非借道 1:表示超车  2:表示正在返回原车道  3:回原车道道完成  20180227
 | ||||
|     bool yjdg_road_code_kf = false; | ||||
| 
 | ||||
|     int Pub_JSC_JL = 0; | ||||
|     bool PubCanJudge_XiHuoFlag = true;  //注意初始必须是true
 | ||||
|     int PubKaoBianTCFinish_LJJL = 0; | ||||
| 
 | ||||
|     int m_SNO = 0; | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
| //后面去掉可能没用了
 | ||||
| struct TCarStatus | ||||
|  | ||||
| @ -371,6 +371,8 @@ void ReplayWrapper::replayTrackTypeArtificialItem(const TTrackData::Ptr& data) | ||||
| 
 | ||||
| void ReplayWrapper::replayTrackTypeSoundEnd(const TTrackData::Ptr &data) | ||||
| { | ||||
|     //return; //240709
 | ||||
| 
 | ||||
|     Json::Value root; | ||||
|     bool ok = Tools::fromJson(data->data, root); | ||||
|     TASSERT(ok, ""); | ||||
|  | ||||
| @ -52,6 +52,15 @@ void MainWindow::init() | ||||
|     KIT_CONNECT(updateDataFrameNum(int, int)); | ||||
|     KIT_CONNECT(updateNextDoing()); | ||||
| 
 | ||||
|     connect(&m_audio, &QMediaPlayer::stateChanged, [=](QMediaPlayer::State state) | ||||
|     { | ||||
|         if(state == QMediaPlayer::StoppedState) | ||||
|         { | ||||
|             //examJudgeSoundEnd();
 | ||||
|             //logtrace("examJudge-SoundEnd");
 | ||||
|         } | ||||
|     }); | ||||
| 
 | ||||
|     static const QString gpsStyle1("color:#9933FA;"); | ||||
|     static const QString gpsStyle2("color:#802A2A;"); | ||||
| #define KIT_SET_GPS_STYLE(name) name->setStyleSheet(gpsStyle1); name##_2->setStyleSheet(gpsStyle2); | ||||
| @ -1113,7 +1122,7 @@ void MainWindow::updateDataCallbackRealExam(const QString& info) | ||||
|     m_parser->parseJudgeData(org, value); | ||||
| 
 | ||||
|     ExamEventType eventType = (ExamEventType)value.event; | ||||
|     std::string time = toEasyTime(value.sj); | ||||
|     std::string time = toEasyTime(Tools::nowTime()); //value.sj 240709
 | ||||
|     std::string desc = ExamEventType2Desc(eventType); | ||||
|     //loginfo("recv time=%s, event=%s", time.c_str(), desc.c_str());
 | ||||
| 
 | ||||
| @ -1191,11 +1200,16 @@ void MainWindow::updateDataCallbackRealExam(const QString& info) | ||||
|     } | ||||
|     else if(eventType == ExamEventTypeSound) | ||||
|     { | ||||
|         int itemNo = value.sound.xmdm; | ||||
|         QString s = QString::fromUtf8(value.sound.code.c_str()); | ||||
|         QString text = event + getItemText(itemNo) + CL8(",语音代码:") + s; | ||||
|         const TEventSound& sound = value.sound; | ||||
|         int itemNo = sound.xmdm; | ||||
|         QString s = QString::fromUtf8(sound.code.c_str()); | ||||
|         QString text = event + getItemText(itemNo) + CL8(",语音代码:") + s + CL8(",语音类型:")+kit::toString(sound.type); | ||||
|         updateExamEvent(text); | ||||
|         playSoundVoice(value.sound.code); | ||||
|         if(sound.xmdm == Sub3ItemType41Mndg && sound.type == PlaySoundEndNotify) | ||||
|         { | ||||
|             examJudgeSoundEnd(sound.xmdm, sound.code.c_str(),sound.type); //240709
 | ||||
|         } | ||||
|     } | ||||
|     else if(eventType == ExamEventTypeLight) | ||||
|     { | ||||
| @ -1204,6 +1218,10 @@ void MainWindow::updateDataCallbackRealExam(const QString& info) | ||||
|         QString text = event + ",[" + s +"]"; | ||||
|         updateExamEvent(text); | ||||
|     } | ||||
|     else if(eventType == ExamEventTypeLane) | ||||
|     { | ||||
|         const TEventLane& lane = value.lane; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         QString text = event + ""; | ||||
| @ -1315,7 +1333,6 @@ void MainWindow::updateDataCallbackPerform(const QString& info) | ||||
|         m_ui->PubLastChuanYuePtNo->setText(CL8("穿越点=") + kit::toString(PubLastChuanYuePtNo)); | ||||
|         m_ui->PubLastChuanYuePtNo->setStyleSheet("color:#FF0000;"); | ||||
| 
 | ||||
|         std::string aaasss = cg->MapPoint_Road_Code; | ||||
|         m_ui->MapRoad->setText(CL8("MapRoad:") + kit::toString(RTKKM3.MapRoad_Name) + | ||||
|                                CL8(" Point路段:") + kit::toString(cg->MapPoint_Road_Code)); | ||||
|         m_ui->MapRoad->setStyleSheet("color:#FF0000;"); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user