diff --git a/entry/src/main/cpp/sdk/common/HDefine.h b/entry/src/main/cpp/sdk/common/HDefine.h index f469164b..b47f2240 100644 --- a/entry/src/main/cpp/sdk/common/HDefine.h +++ b/entry/src/main/cpp/sdk/common/HDefine.h @@ -121,6 +121,7 @@ struct MemoryStorage struct CpuOccupyInfo { double idle = 0.0; + double iowait = 0.0; double user = 0.0; double sys = 0.0; }; diff --git a/entry/src/main/cpp/sdk/common/HSystem.cpp b/entry/src/main/cpp/sdk/common/HSystem.cpp index 8edd4f9b..48c0d75e 100644 --- a/entry/src/main/cpp/sdk/common/HSystem.cpp +++ b/entry/src/main/cpp/sdk/common/HSystem.cpp @@ -74,22 +74,26 @@ user.LowPart = userTimes.dwLowDateTime; user.HighPart = userTimes.dwHighDateTime; - unsigned long long _total = kernel.QuadPart + user.QuadPart; - unsigned long long _idle = idle.QuadPart; - unsigned long long _user = user.QuadPart; + unsigned long long _total = kernel.QuadPart + user.QuadPart; + unsigned long long _idle = idle.QuadPart; + unsigned long long _iowait = 0; + unsigned long long _user = user.QuadPart; - static unsigned long long prevTotal = 0, prevIdle = 0, prevUser = 0; - unsigned long long __total = _total - prevTotal; - unsigned long long __idle = _idle - prevIdle; - unsigned long long __user = _user - prevUser; - prevTotal = _total; - prevIdle = _idle; - prevUser = _user; + static unsigned long long prevTotal = 0, prevIdle = 0, prevIowait = 0, prevUser = 0; + unsigned long long __total = _total - prevTotal; + unsigned long long __idle = _idle - prevIdle; + unsigned long long __iowait = _iowait - prevIowait; + unsigned long long __user = _user - prevUser; + prevTotal = _total; + prevIdle = _idle; + prevIowait = _iowait; + prevUser = _user; if(__total > 0) { - occupy->idle = (__idle) * 100.0 / __total; - occupy->user = (__user) * 100.0 / __total; - occupy->sys = (__total - __idle - __user) * 100.0 / __total; + occupy->idle = (__idle) * 100.0 / __total; + occupy->iowait = (__iowait) * 100.0 / __total; + occupy->user = (__user) * 100.0 / __total; + occupy->sys = (__total - __idle - __user) * 100.0 / __total; return true; } return false; @@ -187,36 +191,76 @@ bool __sdk_cpu_occupy__(struct CpuOccupyInfo* occupy) { - std::ifstream procStat("/proc/stat"); - //procStat.ignore(5, ' '); //跳过'cpu'前缀 - //std::stringstream buffer; - //buffer << procStat.rdbuf(); - //std::string str = buffer.str(); std::string line; - std::getline(procStat, line); // 读取第一行,通常是CPU统计信息 - std::istringstream buffer(line); // 将字符串流转换为输入流 - procStat.close(); + static constexpr bool root = false; //root用户权限 + if(root) + { + std::ifstream procStat("/proc/stat"); + if(!procStat.is_open()) + { + return false; + } + //procStat.ignore(5, ' '); //跳过'cpu'前缀 + //std::stringstream buffer; + //buffer << procStat.rdbuf(); + //std::string str = buffer.str(); + std::getline(procStat, line); // 读取第一行,通常是CPU统计信息 + procStat.close(); + } + else + { + FILE* pipe = ::popen("cat /proc/stat", "r"); //执行命令并打开管道 + if(!pipe) + { + return false; + } + //逐行读取输出 + char buf[1024] = {0}; + if(::fgets(buf, sizeof(buf), pipe) == NULL) + { + ::pclose(pipe); //关闭管道 + return false; + } + ::pclose(pipe); //关闭管道 + line = buf; + // std::list data; + // while(::fgets(buf, sizeof(buf), pipe) != nullptr) + // { + // line = buf; + // memset(buf,0,sizeof(buf)); + // if(line.substr(0,3) != "cpu") { break; } + // if(line.back() == '\n') { line.pop_back(); } + // data.push_back(line); + // } + // ::pclose(pipe); // 关闭管道 + } + + std::istringstream sis(line); // 将字符串流转换为输入流 std::string key; unsigned long long user=0, nice=0, sys=0, idle=0, iowait=0, irq=0, softirq=0, steal=0, guest=0, guest_nice=0; - buffer >> key >> user >> nice >> sys >> idle >> iowait >> irq >> softirq >> steal >> guest >> guest_nice; + sis >> key >> user >> nice >> sys >> idle >> iowait >> irq >> softirq >> steal >> guest >> guest_nice; - unsigned long long _total = user + nice + sys + idle + iowait + irq + softirq + steal + guest + guest_nice; - unsigned long long _idle = idle + iowait; - unsigned long long _user = user; + unsigned long long _total = user + nice + sys + idle + iowait + irq + softirq + steal + guest + guest_nice; + unsigned long long _idle = idle; + unsigned long long _iowait = iowait; + unsigned long long _user = user; - static unsigned long long prevTotal = 0, prevIdle = 0, prevUser = 0; - unsigned long long __total = _total - prevTotal; - unsigned long long __idle = _idle - prevIdle; - unsigned long long __user = _user - prevUser; - prevTotal = _total; - prevIdle = _idle; - prevUser = _user; + static unsigned long long prevTotal = 0, prevIdle = 0, prevIowait = 0, prevUser = 0; + unsigned long long __total = _total - prevTotal; + unsigned long long __idle = _idle - prevIdle; + unsigned long long __iowait = _iowait - prevIowait; + unsigned long long __user = _user - prevUser; + prevTotal = _total; + prevIdle = _idle; + prevIowait = _iowait; + prevUser = _user; if(__total > 0) { - occupy->idle = (__idle) * 100.0 / __total; - occupy->user = (__user) * 100.0 / __total; - occupy->sys = (__total - __idle - __user) * 100.0 / __total; + occupy->idle = (__idle) * 100.0 / __total; + occupy->iowait = (__iowait) * 100.0 / __total; + occupy->user = (__user) * 100.0 / __total; + occupy->sys = (__total - __idle - __user) * 100.0 / __total; return true; } return false; diff --git a/entry/src/main/cpp/sdk/common/HSystem.h b/entry/src/main/cpp/sdk/common/HSystem.h index 994abc7b..fca278b0 100644 --- a/entry/src/main/cpp/sdk/common/HSystem.h +++ b/entry/src/main/cpp/sdk/common/HSystem.h @@ -12,7 +12,6 @@ *** *** 说明:编译配置选项 *** - *** JUDGE_USE_TSUB3T //是否启用大车科目三测试 *** JUDGE_USE_NSUB3 //是否启用新科三评判 *** JUDGE_USE_OLD //是否启用评判语音播报之前老模式 *** JUDGE_USE_LOG //是否启用日志功能模块 @@ -30,11 +29,6 @@ *** ********************************************************************/ -/* - * 是否启用大车科目三测试 - */ -#define JUDGE_USE_TSUB3T 0 - /* * 是否启用新科目三评判 */ diff --git a/entry/src/main/cpp/sdk/common/HVersion.h b/entry/src/main/cpp/sdk/common/HVersion.h index ba850122..2d0f4664 100644 --- a/entry/src/main/cpp/sdk/common/HVersion.h +++ b/entry/src/main/cpp/sdk/common/HVersion.h @@ -27,7 +27,7 @@ #define JUDGE_VERSION_MAJOR 1 #define JUDGE_VERSION_MINOR 0 #define JUDGE_VERSION_PATCH 3 -#define JUDGE_VERSION_STAMP "2504011600b" +#define JUDGE_VERSION_STAMP "2504031330b" #if JUDGE_USE_OLD # undef JUDGE_VERSION_STAMP # define JUDGE_VERSION_STAMP "2411121010b.old" diff --git a/entry/src/main/cpp/sdk/database/sysparm/SysParmTable.cpp b/entry/src/main/cpp/sdk/database/sysparm/SysParmTable.cpp index 1bc91f67..8fc1500b 100644 --- a/entry/src/main/cpp/sdk/database/sysparm/SysParmTable.cpp +++ b/entry/src/main/cpp/sdk/database/sysparm/SysParmTable.cpp @@ -156,7 +156,7 @@ int SysParmTable::findQiBuGear(int carCode) int SysParmTable::findHectometreImpulse(int carCode) { - //NO1=3 NO2=车型代码 NO3=4条件 TXT1 + //NO1=3 NO2=车型代码 NO3=2条件 TXT1 int impulse = INVALID_INDEX; int size = parm3Size(); for(int i = 0; i < size; i++) diff --git a/entry/src/main/cpp/sdk/database/sysset/SysSetTable.h b/entry/src/main/cpp/sdk/database/sysset/SysSetTable.h index e788f827..e23bf072 100644 --- a/entry/src/main/cpp/sdk/database/sysset/SysSetTable.h +++ b/entry/src/main/cpp/sdk/database/sysset/SysSetTable.h @@ -198,6 +198,7 @@ class JUDGE_API SysSetTable : public IDBTable SYSSET_DECLARE(414); //变道、超车以前后轮都过线(0-否 1-是) //0 SYSSET_DECLARE(415, type_array, "^"); //自动报靠边停车(启用标记^全部结束n米报^)启用标记:0-否 1-是 319参数为2有效 //0^1^ SYSSET_DECLARE(418); //扣分时实时播报语音(0-否 1-是) //0 + SYSSET_DECLARE(419, type_int); //里程按百米脉冲计算(0-否 1-是 ) SYSSET_DECLARE(421); //模拟夜间:车辆发生故障,按近光灯和双跳进行评判(0-是 1-否) SYSSET_DECLARE(425, type_array, ","); //加减档位操作挂一个挡位要松一次离合器(项目,全程)(0-否 1-是)() // 0,0, SYSSET_DECLARE(426, type_int); //手工取消正在考的项目(0-否 1-是) // 1 @@ -339,6 +340,7 @@ class JUDGE_API SysSetTable : public IDBTable SYSSET_ASSIGN(414); SYSSET_ASSIGN(415); SYSSET_ASSIGN(418); + SYSSET_ASSIGN(419); SYSSET_ASSIGN(421); SYSSET_ASSIGN(425); SYSSET_ASSIGN(426); diff --git a/entry/src/main/cpp/sdk/exam/ExamCarSub2.cpp b/entry/src/main/cpp/sdk/exam/ExamCarSub2.cpp index 93476a9a..d0213483 100644 --- a/entry/src/main/cpp/sdk/exam/ExamCarSub2.cpp +++ b/entry/src/main/cpp/sdk/exam/ExamCarSub2.cpp @@ -358,7 +358,7 @@ void ExamCarSub2::dealJudgeExam() //} //2.6.1) - calcDistance(); //距离计算 + calcDistance(false, 0); //距离计算 //2.6.2) 监管判断 //函数是一个监管检查函数,这里我们先不考虑监管,我模拟一下这个函数的写法 diff --git a/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp b/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp index cc0db5dc..915933ff 100644 --- a/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp +++ b/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp @@ -300,7 +300,7 @@ bool ExamCarSub3::Init_KM3_Global() { TableSysSet->set481("0"); } - if(std::atoi(s481.c_str()) > 30) + if(std::stoi(s481) > 30) { TableSysSet->set481("15"); } @@ -309,15 +309,15 @@ bool ExamCarSub3::Init_KM3_Global() const std::vector& s349 = TableSysSet->asArray349(); if(s349.size() > 5 && s349[5] != "") { - m_ctl.RtkOffset = std::atoi(s349[5].c_str()); + m_car.RtkOffset = std::stoi(s349[5]); } else if(s349.size() > 4 && s349[4] != "") { - m_ctl.RtkOffset = std::atoi(s349[4].c_str()); + m_car.RtkOffset = std::stoi(s349[4]); } else { - m_ctl.RtkOffset = 0; //20240807 之前是2 + m_car.RtkOffset = 0; //20240807 之前是2 } //2、强制启用139号部令 @@ -341,7 +341,7 @@ bool ExamCarSub3::Init_KM3_Global() } //6、减速类型(特殊地方的业务,后期开发个性评判可能会用到) const std::vector& s500 = TableSysSet->asArray500(); - m_ctl.JianSuLeiXing = (s500.size() > 12 && s500[12] != "" ? std::atoi(s500[12].c_str()) : 0); + m_ctl.JianSuLeiXing = (s500.size() > 12 && s500[12] != "" ? std::stoi(s500[12]) : 0); //扩展>0表示启用车速 =1 表示 30车速 >1 表示浙江 只有路口可以结合车速 if(m_ctl.JianSuLeiXing > 30 || (m_ctl.JianSuLeiXing > 2 && m_ctl.JianSuLeiXing < 10)) { @@ -352,7 +352,7 @@ bool ExamCarSub3::Init_KM3_Global() //lxbgcd:变更车道相关定义 const std::vector& s512 = TableSysSet->asArray512(); //南宁个性参数,翻译即可 - m_ctl.NanNingWavKind = (s512.size() > 2 && s512[2] != "" ? std::atoi(s512[2].c_str()) : 0); + m_ctl.NanNingWavKind = (s512.size() > 2 && s512[2] != "" ? std::stoi(s512[2]) : 0); //其他参数赋值 m_ctl.tsxhsj = 60 * 1000; @@ -382,17 +382,14 @@ bool ExamCarSub3::Init_KM3_Global() */ //10、搜索范围赋值 - m_ctl.MaxR = 6000; - m_ctl.MinR = 3000; - const std::vector& s329 = TableSysSet->asArray329(); - m_ctl.MaxR = (s329.size() > 0 && s329[0] != "" ? std::atoi(s329[0].c_str()) : 6000); - m_ctl.MinR = (s329.size() > 1 && s329[1] != "" ? std::atoi(s329[1].c_str()) : 3000); + m_car.MaxR = (s329.size() > 0 && s329[0] != "" ? std::stoi(s329[0]) : 6000); + m_car.MinR = (s329.size() > 1 && s329[1] != "" ? std::stoi(s329[1]) : 3000); //11、得到夜考时间点 const std::vector& s19 = TableSysSet->asArray19(); - m_car.Night_Hr = (s19.size() > 0 && s19[0] != "" ? std::atoi(s19[0].c_str()) : 19); //22 //???yhyflag - m_car.Night_Mi = (s19.size() > 1 && s19[1] != "" ? std::atoi(s19[1].c_str()) : 0); + m_car.Night_Hr = (s19.size() > 0 && s19[0] != "" ? std::stoi(s19[0]) : 19); //22 + m_car.Night_Mi = (s19.size() > 1 && s19[1] != "" ? std::stoi(s19[1]) : 0); //3、抖动时发动机闯动比例 m_car.fdjds_cdbl = 0.6; @@ -409,6 +406,34 @@ bool ExamCarSub3::Init_KM3_Global() //7、起步闯动 m_car.QBCD = -1; + //小车是不存在夜考的 + if(IS_C1C2C5(cartype)) + { + m_car.Night_ID = false; + } + else + { + //当前时间到达夜考时间点了 + //if( (Now() - Trunc(now())) > (Car.Night_Hr / 24 + Car.Night_Mi / 24 / 60) ) + DateTimex dt = Tools::nowDateTime(); + if(dt.hour*60 + dt.minute >= m_car.Night_Hr*60 + m_car.Night_Mi) + { + //如果不考模拟灯光 + if(!m_stuInfo.dmndg) + { + m_car.Night_ID = true; + } + else + { + m_car.Night_ID = false; + } + } + else + { + m_car.Night_ID = false; + } + } + //4、得到行驶里程限制 if(IS_C1C2C5C6(cartype)) { @@ -450,6 +475,14 @@ bool ExamCarSub3::Init_KM3_Global() } } + //从SystemParm中读取参数 + this->UpdateCarParmWithSystemParm(); + + if(m_stuInfo.mfxx) // && m_stuInfo.czlx == 1 + { + m_car.XSJL = m_car.MFXX_XSJL; + } + //注释改成:将之前的行驶里程减掉 if(m_stuInfo.yklc != 0) { @@ -460,8 +493,11 @@ bool ExamCarSub3::Init_KM3_Global() } } - //从SystemParm中读取参数 - this->UpdateCarParmWithSystemParm(); + int X_McH = (!carInfo->X_MCH.empty()) ? std::atoi(carInfo->X_MCH.c_str()) : 0; + if(X_McH > 0) //百米脉冲值优先carinfo的 在UpdateCarParmWithSystemParm中也有赋值不要调换顺序 + { + m_car.X_McH = X_McH; + } //新模拟夜间(次数^错扣^固定^),预留 if(ksdd == siteof::hbxy && IS_A1A2A3B1B2(cartype)) //isAB @@ -490,34 +526,6 @@ bool ExamCarSub3::Init_KM3_Global() TableSysSet->set336("0"); } - //小车是不存在夜考的 - if(IS_C1C2C5(cartype)) - { - m_car.Night_ID = false; - } - else - { - //当前时间到达夜考时间点了 - //if( (Now() - Trunc(now())) > (Car.Night_Hr / 24 + Car.Night_Mi / 24 / 60) ) - DateTimex dt = Tools::nowDateTime(); - if(dt.hour*60 + dt.minute >= m_car.Night_Hr*60 + m_car.Night_Mi) - { - //如果不考模拟灯光 - if(!m_stuInfo.dmndg) - { - m_car.Night_ID = true; - } - else - { - m_car.Night_ID = false; - } - } - else - { - m_car.Night_ID = false; - } - } - m_commItem = ISub3JudgeItem::create(Sub3ItemType20Comm); m_commItem->dealBuildItem(this); int parm1Size = TableSysParm->parm1Size(); @@ -607,7 +615,7 @@ bool ExamCarSub3::Init_KM3_Global() //只有掉头项目才有右掉头一说 //20150516 examItem->bYdt = (itemNo == Sub3ItemType12Dtxx && parm1->TXT2 == "ydt" ? true : false); //是否右掉头 - //如果是满分学习的 + //如果是满分学习的 czlx=1 m_stuInfo.czlx //满分学习非必考项目,一开始考试就通知外壳合格变绿 if(m_stuInfo.mfxx && m_car.MFXX_KSXM != "" && itemNo != Sub3ItemType13Yjxs && IS_A1A2A3B1B2C6(cartype)) { std::string s = "," + std::to_string(itemNo) + ","; @@ -615,9 +623,10 @@ bool ExamCarSub3::Init_KM3_Global() if(Tools::pos(s, ss) == false) { examItem->NoID = true; + KM3EndItem(itemNo,true,false); } } - //对夜考项目进行特殊处理 + //对夜考项目进行特殊处理 //大车夜考非必考项目,一开始考试就通知外壳合格变绿 if(m_car.Night_ID == true && itemNo != Sub3ItemType13Yjxs) { std::string s = "," + std::to_string(itemNo) + ","; @@ -627,8 +636,8 @@ bool ExamCarSub3::Init_KM3_Global() //examItem->Item_Color = itemStateHg; //examItem->TestPro = ItemProFlagIdle; //examItem->FinishFlag = true; + examItem->NoID = true; KM3EndItem(itemNo,true,false); - //examItem->NoID = true; } } } @@ -650,10 +659,22 @@ void ExamCarSub3::UpdateCarParmWithSystemParm() std::string parm3TXT1 = Tools::trim(parm3->TXT1); std::string parm3TXT3 = Tools::trim(parm3->TXT3); + + //switch(parm3No3) + //{ + //case 2: m_car.X_McH = parm3TXT1 != "" ? std::atoi(parm3TXT1.c_str()) : 0; break; + //case 4: m_car.StartSpeed = parm3TXT1 != "" ? std::atoi(parm3TXT1.c_str()) : 2; break; + //default: break; + //} + + //百米脉冲 + if(parm3No3 == 2) + { + m_car.X_McH = parm3TXT1 != "" ? std::atoi(parm3TXT1.c_str()) : 0; + } //4、起步挡位 if(parm3No3 == 4) { - //C++翻译我们的StrToIntDef的时候,最好做一个异常处理,因为DELPHI内部做了这个实现 m_car.StartSpeed = parm3TXT1 != "" ? std::atoi(parm3TXT1.c_str()) : 2; } //5、是否评判安全带 @@ -698,11 +719,8 @@ void ExamCarSub3::UpdateCarParmWithSystemParm() { if(parm3TXT1 != "") { -#if !JUDGE_USE_TSUB3T - parm3TXT1 = Tools::toupper(parm3TXT1); m_carInfo->kscx = parm3TXT1; -#endif } } @@ -1053,7 +1071,9 @@ void ExamCarSub3::UpdateCarParmWithSystemParm() { std::vector s = Tools::split(parm3TXT1, "^"); m_car.MFXX_KSXM = s.size() > 0 ? s[0] : ""; - m_car.MFXX_Parm = parm3TXT1; + m_car.MFXX_XSJL = s.size() > 1 && s[1] != "" ? std::atoi(s[1].c_str()) : 3000; + m_car.MFXX_Mark = s.size() > 2 && s[2] != "" ? std::atoi(s[2].c_str()) : 0; + //m_car.MFXX_Parm = parm3TXT1; } } } @@ -1206,7 +1226,8 @@ void ExamCarSub3::Deal_KM3_Judge() //GetCarDirStauts() //距离计算 //7、计算科目三距离 - calcDistance(); //Calc_KM3JL() + + calcDistance(TableSysSet->asInt419() == 1, m_car.X_McH); //Calc_KM3JL() Km3NewEnterItem(); @@ -3480,11 +3501,11 @@ void ExamCarSub3::Km3NewEnterItem() //Point_Type -1:辅助点 0:项目点 大于0:指定方向的点号 其他:非评判用 if(mp->point_type > 0 && Tools::pos("+", his1->MapPoint_Road_Code) == true) //Pos('+', LS1->MapPoint_Road_Code) > 0 { - offset = m_ctl.MaxR; + offset = m_car.MaxR; } else { - offset = m_ctl.MinR; + offset = m_car.MinR; } int JDMin = Range_cm2Gpsdeg(-offset, gpsE, true); int JDMax = Range_cm2Gpsdeg(offset, gpsE, true); @@ -4209,7 +4230,7 @@ bool ExamCarSub3::examMarkItem(ExamItemCode itemNo, const std::string& serial, b //Kind:0 自动评判 1:考车人工扣分 2:远程下发的考试扣分 bool result = false; //满分学习如果不扣分,除了考车人工点击扣分或者远程下发的扣分,一律忽略 - if(m_stuInfo.mfxx && m_stuInfo.mfxxn) + if(m_stuInfo.mfxx && !m_car.MFXX_Mark) //m_stuInfo.mfxxn { if(type == MarkTypeAuto || type == MarkTypeNS3) return result; } diff --git a/entry/src/main/cpp/sdk/exam/ExamSensor.cpp b/entry/src/main/cpp/sdk/exam/ExamSensor.cpp index 2e2e5652..f556551a 100644 --- a/entry/src/main/cpp/sdk/exam/ExamSensor.cpp +++ b/entry/src/main/cpp/sdk/exam/ExamSensor.cpp @@ -335,7 +335,7 @@ bool ExamSensor::calcCarBody(TChuanGan* cg) rcb.bumper_b = GpsMath::calcCenterPoint(ps_b[II(2)], ps_b[II(24)]); //保险杠中心点坐标(对于C1,C2,C5, 就是2点和24点的中点) TGpsInfo& gps = cg->real.gps; - if(gps.rtkEnabled && gps.valid()) //if(gps.rtkEnabled) + if(/*gps.rtkEnabled &&*/ gps.valid()) //if(gps.rtkEnabled) { int x = 0, y = 0; GpsMath::calcEastAndNorthDistanceCM(m_basePoint, cur, m_basePoint.gc, x, y); @@ -356,7 +356,7 @@ bool ExamSensor::calcCarBody(TChuanGan* cg) rcb.b2_b_G = ps_b[II(64)]; //挂车GPS从天线 TGpsInfo& gps2 = cg->real.gps2; - if(gps2.rtkEnabled && gps2.valid()) //if(gps.rtkEnabled) + if(/*gps2.rtkEnabled &&*/ gps2.valid()) //if(gps.rtkEnabled) { int x = 0, y = 0; GpsMath::calcEastAndNorthDistanceCM(m_basePoint, cur2, m_basePoint.gc, x, y); @@ -457,7 +457,7 @@ bool ExamSensor::calcCarBody(TChuanGan* cg) rcb.b2_b_G = ps_b[II(40)]; //挂车GPS从天线 TGpsInfo& gps = cg->real.gps; - if(gps.rtkEnabled && gps.valid()) //if(gps.rtkEnabled) + if(/*gps.rtkEnabled &&*/ gps.valid()) //if(gps.rtkEnabled) { int x = 0, y = 0; GpsMath::calcEastAndNorthDistanceCM(m_basePoint, cur, m_basePoint.gc, x, y); @@ -465,7 +465,7 @@ bool ExamSensor::calcCarBody(TChuanGan* cg) } TGpsInfo& gps2 = cg->real.gps2; - if(gps2.rtkEnabled && gps2.valid()) //if(gps2.rtkEnabled) + if(/*gps2.rtkEnabled &&*/ gps2.valid()) //if(gps2.rtkEnabled) { int x = 0, y = 0; GpsMath::calcEastAndNorthDistanceCM(m_basePoint, cur2, m_basePoint.gc, x, y); diff --git a/entry/src/main/cpp/sdk/exam/ExamService.cpp b/entry/src/main/cpp/sdk/exam/ExamService.cpp index 3dad290b..03321032 100644 --- a/entry/src/main/cpp/sdk/exam/ExamService.cpp +++ b/entry/src/main/cpp/sdk/exam/ExamService.cpp @@ -266,18 +266,19 @@ const char* ExamService::examPeerOccupy() logdebug("call examPeerOccupy."); //if(!m_init) return QE(errorInitNot); - TOccupyInfo occ; - CpuOccupyInfo cpu; - MemoryStorage memo; - DiskStorage disk; - Tools::peerOccupyCpu(cpu); + + MemoryStorage memo; Tools::peerOccupyMemory(memo, MB); + + DiskStorage disk; Tools::peerOccupyDisk("./", disk, MB); + TOccupyInfo occ; occ.cpu.cores = Tools::getCpuProcessors(); occ.cpu.idle = std::round(cpu.idle); + occ.cpu.iowait = std::round(cpu.iowait); occ.cpu.user = std::round(cpu.user); occ.cpu.sys = std::round(cpu.sys); diff --git a/entry/src/main/cpp/sdk/exam/IExamCar.cpp b/entry/src/main/cpp/sdk/exam/IExamCar.cpp index 50a2f4a5..d6feeb72 100644 --- a/entry/src/main/cpp/sdk/exam/IExamCar.cpp +++ b/entry/src/main/cpp/sdk/exam/IExamCar.cpp @@ -586,27 +586,49 @@ void IExamCar::doExamRealExam(Package* pkg) //... ... } -int IExamCar::calcDistance() +int IExamCar::calcDistance(bool mc, int X_McH) { - if(m_history->size() <= 1) + int a = 0; + if(mc && X_McH > 0) { - return 0; + if(m_history->size() <= 1) + { + return 0; + } + //(当前脉冲-前一帧脉冲) / 百米脉冲 * 10000 单位cm + int ljmc = historySensor().ljmc; + int ljmc1 = historySensor(1).ljmc; + a = (ljmc-ljmc1) / X_McH * 10000; + switch(m_cg->move) + { + case moveForward: m_disForward += a; break; + case moveBackward: m_disBackward += a; break; + default: break; + } } - const Pointi& h = historyGps(1).ai_gps; - const Pointi& c = historyGps().ai_gps; - if( (c.x == 0 && c.y == 0) || (h.x == 0 && h.y == 0) ) + else { - return 0; - } - double x = h.x - c.x; - double y = h.y - c.y; - int a = std::round(std::sqrt(x*x + y*y)); - switch(m_cg->move) - { - case moveForward: m_disForward += a; break; - case moveBackward: m_disBackward += a; break; - default: break; + if(m_history->size() <= 1) + { + return 0; + } + const Pointi& h = historyGps(1).ai_gps; + const Pointi& c = historyGps().ai_gps; + if( (c.x == 0 && c.y == 0) || (h.x == 0 && h.y == 0) ) + { + return 0; + } + double x = h.x - c.x; + double y = h.y - c.y; + a = std::round(std::sqrt(x*x + y*y)); + switch(m_cg->move) + { + case moveForward: m_disForward += a; break; + case moveBackward: m_disBackward += a; break; + default: break; + } } + m_cg->ai_ljjl_cm = m_disForward; m_cg->ai_dcjl_cm = m_disBackward; m_cg->ai_ljjl = m_disForward/100.0; diff --git a/entry/src/main/cpp/sdk/exam/IExamCar.h b/entry/src/main/cpp/sdk/exam/IExamCar.h index 98511385..5ac983ab 100644 --- a/entry/src/main/cpp/sdk/exam/IExamCar.h +++ b/entry/src/main/cpp/sdk/exam/IExamCar.h @@ -138,7 +138,7 @@ public: virtual void doExamRealExam(Package* pkg); virtual void doExamNS3(Package* pkg){}; //前进 后退 距离计算 - virtual int calcDistance(); + virtual int calcDistance(bool mc, int X_McH); //当前系统时间(回放取的事GPS时间) virtual int64 GetCurrentTime2() const; diff --git a/entry/src/main/cpp/sdk/exam/IExamService.h b/entry/src/main/cpp/sdk/exam/IExamService.h index 01b93133..b383ae51 100644 --- a/entry/src/main/cpp/sdk/exam/IExamService.h +++ b/entry/src/main/cpp/sdk/exam/IExamService.h @@ -31,7 +31,6 @@ public: virtual const char* examSecretDecrypt(const char* data, int size) = 0; virtual int examFreeMemory(const char* buf) = 0; - virtual void examJudgeCallbackLogToCaller(int level, const char* info, int len) = 0; virtual void examJudgeCallbackRealExamToCaller(const char* data, int len) = 0; virtual void examJudgeCallbackPerformToCaller(const char* data, int len) = 0; diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.cpp b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.cpp index f94d844f..b8a6de20 100644 --- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.cpp +++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.cpp @@ -411,8 +411,8 @@ void Sub3Judge02Qbxx::Judge_QiBu_GuaCuoDang() { const TSensorInfo& sor = cg->real.sensor; //小车1档起步, 大车1、2档起步 - static const int gear = TableSysParm->findQiBuGear(m_car->carCode()); - + //static const int gear = TableSysParm->findQiBuGear(m_car->carCode()); + static const int gear = m_car->getTCar()->StartSpeed; #if JUDGE_USE_INSPECT if(sor.dw_plc > gear) //无锡所用原始档位 { diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge03Zxxs.cpp b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge03Zxxs.cpp index 7d9b08b4..1a5c81d1 100644 --- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge03Zxxs.cpp +++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge03Zxxs.cpp @@ -94,9 +94,7 @@ bool Sub3Judge03Zxxs::dealJudgeEnter() m_itemv.Gps_Offset = 40; } - TTestCtl* ctl = m_car->getTTestCtl(); - //GP - m_itemv.Gps_Offset = m_itemv.Gps_Offset + ctl->RtkOffset; + m_itemv.Gps_Offset = m_itemv.Gps_Offset + tcar->RtkOffset; m_itemv.Init_LJJL = cg->ai_ljjl; m_exam->TestPro = ItemProFlagJudge; //ToDo2:生成进项目事件 diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge11Kbtc.cpp b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge11Kbtc.cpp index 9719c055..5e0413db 100644 --- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge11Kbtc.cpp +++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge11Kbtc.cpp @@ -1373,13 +1373,15 @@ void Sub3Judge11Kbtc::Judge_KBTC_YaXian() { const TGpsInfo& gps = m_car->historyGps(); //靠边停车以右前、后轮判靠边距离(0-否 1-是) - TTestCtl* ctl = m_car->getTTestCtl(); - Max_JL0 = Max_JL0 - ctl->RtkOffset - std::round(gps.jdyz * 100) - std::round(gps.wdyz * 100); - Max_JL1 = Max_JL1 - ctl->RtkOffset - std::round(gps.jdyz * 100) - std::round(gps.wdyz * 100); - Max_JL2 = Max_JL2 - ctl->RtkOffset - std::round(gps.jdyz * 100) - std::round(gps.wdyz * 100); + int RtkOffset = m_car->getTCar()->RtkOffset; + int offset = RtkOffset + std::round(gps.jdyz*100) + std::round(gps.wdyz*100); + Max_JL0 -= offset; + Max_JL1 -= offset; + Max_JL2 -= offset; //20170724 - if(Max_JL0 > 50 + m_itemv.kbtcwc && Max_JL1 > 50 + m_itemv.kbtcwc && Max_JL2 > 50 + m_itemv.kbtcwc) + int kbtcwc = 50 + m_itemv.kbtcwc; + if(Max_JL0 > kbtcwc && Max_JL1 > kbtcwc && Max_JL2 > kbtcwc) { if(m_itemv.dcykkb == 0) //大车夜考相关的参数 { @@ -1521,13 +1523,15 @@ void Sub3Judge11Kbtc::Judge_KBTC_YaXian_Tail() { const TGpsInfo& gps2 = m_car->historyGps2(); //靠边停车以右前、后轮判靠边距离(0-否 1-是) - TTestCtl* ctl = m_car->getTTestCtl(); - Max_JL0 = Max_JL0 - ctl->RtkOffset - std::round(gps2.jdyz * 100) - std::round(gps2.wdyz * 100); - Max_JL1 = Max_JL1 - ctl->RtkOffset - std::round(gps2.jdyz * 100) - std::round(gps2.wdyz * 100); - Max_JL2 = Max_JL2 - ctl->RtkOffset - std::round(gps2.jdyz * 100) - std::round(gps2.wdyz * 100); + int RtkOffset = m_car->getTCar()->RtkOffset; + int offset = RtkOffset + std::round(gps2.jdyz*100) + std::round(gps2.wdyz*100); + Max_JL0 -= offset; + Max_JL1 -= offset; + Max_JL2 -= offset; //20170724 - if(Max_JL0 > 50 + m_itemv.kbtcwc && Max_JL1 > 50 + m_itemv.kbtcwc && Max_JL2 > 50 + m_itemv.kbtcwc) + int kbtcwc = 50 + m_itemv.kbtcwc; + if(Max_JL0 > kbtcwc && Max_JL1 > kbtcwc && Max_JL2 > kbtcwc) { if(m_itemv.dcykkb == 0) //大车夜考相关的参数 { diff --git a/entry/src/main/cpp/sdk/utility/HBean.h b/entry/src/main/cpp/sdk/utility/HBean.h index e971f0c0..74be8c38 100644 --- a/entry/src/main/cpp/sdk/utility/HBean.h +++ b/entry/src/main/cpp/sdk/utility/HBean.h @@ -283,7 +283,7 @@ JUDGE_C_API BoardType name2BoardType(const char* name); #define EnumMakeGpsStatus(declare) \ declare(gpsStatusINVALID, "----", JUDGE_UTF8S("无效(数据异常)")) \ declare(gpsStatusSINGLE, "SINGLE", JUDGE_UTF8S("单点解(收星数过低10米以内)***前置机没发差分改帧数给后置机")) \ - declare(gpsStatusPSRDIFF, "PSRDIFF", JUDGE_UTF8S("伪距解(没见过这种状态3米以内)没收到差分改正数?")) \ + declare(gpsStatusPSRDIFF, "PSRDIFF", JUDGE_UTF8S("伪距解(没见过这种状态3米以内)后置机没收到差分改正数?")) \ declare(gpsStatusANGLE, "**ANGLE**", JUDGE_UTF8S("**角度差分状态**?")) \ declare(gpsStatusNARROW_INT, "NARROW_INT", JUDGE_UTF8S("固定解(正常状态0.02米以内)")) \ declare(gpsStatusNARROW_FLOAT, "NARROW_FLOAT", JUDGE_UTF8S("浮点解(有遮挡物0.5米以内)")) diff --git a/entry/src/main/cpp/sdk/utility/HTypes.cpp b/entry/src/main/cpp/sdk/utility/HTypes.cpp index 821efa44..06d3f6bc 100644 --- a/entry/src/main/cpp/sdk/utility/HTypes.cpp +++ b/entry/src/main/cpp/sdk/utility/HTypes.cpp @@ -111,3 +111,14 @@ bool TMarkRule::is_agree(const nlohmann::json& jsonn, const char* param) } return true; } + +bool TDBCarInfo::is_agree(const nlohmann::json& jsonn, const char* param) +{ + if(JUDGE_STRING(X_MCH) == param) + { + bool agree = jsonn.contains(param); + if(!agree) {logwarning("TDBCarInfo missing param 'X_MCH'.");} + return agree; + } + return true; +} diff --git a/entry/src/main/cpp/sdk/utility/HTypes.h b/entry/src/main/cpp/sdk/utility/HTypes.h index 0531a8e5..897af0c1 100644 --- a/entry/src/main/cpp/sdk/utility/HTypes.h +++ b/entry/src/main/cpp/sdk/utility/HTypes.h @@ -258,16 +258,19 @@ struct TDBCarInfo std::string CARID; //考车ID std::string IPADDR; //IP地址 std::string CARCLASS; //考车名称,比如:桑塔纳、新捷达 + std::string X_MCH; //百米脉冲 2025-04-02 新增 std::string KSCX; //考试车型,比如:C1,C2 std::string CARNAME; //预留 std::string FLAG; //预留 std::string BK1; //预留 std::string BK2; //预留 + bool is_agree(const nlohmann::json& jsonn, const char* param); JUDGE_JSON_DEFINE(TDBCarInfo, CARID, IPADDR, CARCLASS, + X_MCH, KSCX, CARNAME, FLAG, @@ -466,7 +469,7 @@ struct TStuInfo //bool nitem1 = false; //JG_Not_Item1_Flag 不需要考上车准备(监管)免考 //bool nitem41 = false; //JG_Not_Item_41_Flag 不需要考模拟灯光(监管)免考 bool mfxx = false; //满分学习学员标志 ManFenXueXi_Flag - bool mfxxn = false; //满分学习不扣分标志 ManFenXueXiNotKouFenFlag + //bool mfxxn = false; //满分学习不扣分标志 ManFenXueXiNotKouFenFlag bool zeng = false; //增驾模式标志 true增驾 false非增驾 @@ -507,7 +510,7 @@ struct TStuInfo //nitem1, //nitem41, mfxx, - mfxxn, + //mfxxn, zeng); }; @@ -1401,6 +1404,7 @@ struct TCar { TCar() { } + int X_McH = 0; //百米脉冲值(杭州竟然用到这玩意)优先carinfo的 int StartSpeed = 0; //起步档位 int AnQuanDai = 0; //安全带:0-不判 1-判保险带 2-气压 int Test_Sum = 0; //考试项目总数 @@ -1443,13 +1447,18 @@ struct TCar int CSBType = 0; //20171113 超声波模式 std::string DC_YK_Must; //夜考项目 20180301 std::string MFXX_KSXM; //满分学习考试项目 - std::string MFXX_Parm; //满分学习参数 + int MFXX_XSJL = 0; //满分学习行驶里程 + bool MFXX_Mark = false; //满分学习是否电子评判自动扣分 + //std::string MFXX_Parm; //满分学习参数 //档位转速比 2014111 struct TCarZsBl { int CarZsBmin = -1; int CarZsBMax = -1; }; std::array DwZsBl; //20141111 档位转速比 档位转速比 array[1..5] bool ZDB_Flag = false; + int RtkOffset = 0; + int MaxR = 0, MinR = 0; //最大及最小GPS搜索范围CM + //********************以下目前没用到******************* /* //std::string CarTypeName; //车型名称 大货 对应carinfo表CARCLASS字段 @@ -1506,8 +1515,6 @@ struct TTestCtl int64 ZXD_KSSJ_TK = 0; //转向灯考试时间 bool ZXD_GuanBi = false; //转向灯关闭标记 std::set PassedItem; //std::string PassedItem; //已考项目编号列表 - int MaxR = 0, MinR = 0; //最大及最小GPS搜索范围CM - int RtkOffset = 0; bool IsPassItem14 = false; //加减挡拉是否考过 20170117 int JianSuLeiXing = 0; //20171007减速类型 int LianXuBianDaoKind = 0; //20171008 连续变更车道方式 0:abc 1:aba和abc都判 @@ -1936,12 +1943,13 @@ struct TRadarInfo struct TCpuOccupy { - int32 cores = 0; - int32 idle = 0; - int32 user = 0; - int32 sys = 0; + int32 cores = 0; + int32 idle = 0; + int32 iowait = 0; + int32 user = 0; + int32 sys = 0; - JUDGE_JSON_DEFINE(TCpuOccupy,cores,idle,user,sys); + JUDGE_JSON_DEFINE(TCpuOccupy,cores,idle,iowait,user,sys); TCpuOccupy() noexcept { clean(); } virtual ~TCpuOccupy() noexcept { clean(); } @@ -1949,6 +1957,7 @@ struct TCpuOccupy { cores = 0; idle = 0; + iowait = 0; user = 0; sys = 0; } diff --git a/entry/src/main/cpp/test/test_sdk/TestJudge.cpp b/entry/src/main/cpp/test/test_sdk/TestJudge.cpp index a7ad3dad..afe5dcfe 100644 --- a/entry/src/main/cpp/test/test_sdk/TestJudge.cpp +++ b/entry/src/main/cpp/test/test_sdk/TestJudge.cpp @@ -880,10 +880,15 @@ TEST_F(TestJudge, test_sub3_car_check_data) carInfo += writeFmt("CSBType", car->CSBType); carInfo += writeFmt("DC_YK_Must", car->DC_YK_Must); carInfo += writeFmt("MFXX_KSXM", car->MFXX_KSXM); - carInfo += writeFmt("MFXX_Parm", car->MFXX_Parm); + carInfo += writeFmt("MFXX_Mark", car->MFXX_Mark); + //carInfo += writeFmt("MFXX_Parm", car->MFXX_Parm); carInfo += writeFmt("DwZsBl", car->DwZsBl); carInfo += writeFmt("ZDB_Flag", car->ZDB_Flag); + carInfo += writeFmt("RtkOffset", car->RtkOffset); + carInfo += writeFmt("MaxR", car->MaxR); + carInfo += writeFmt("MinR", car->MinR); + /* carInfo += writeFmt("CarTypeName", car->CarTypeName); carInfo += writeFmt("CarTypeSystemParmNo", car->CarTypeSystemParmNo); @@ -932,10 +937,7 @@ TEST_F(TestJudge, test_sub3_car_check_data) */ std::string ctlInfo; ctlInfo += writeFmt("PassedItem", ctl->PassedItem); - ctlInfo += writeFmt("MaxR", ctl->MaxR); - ctlInfo += writeFmt("MinR", ctl->MinR); ctlInfo += writeFmt("Gps_St", ctl->Gps_St); - ctlInfo += writeFmt("RtkOffset", ctl->RtkOffset); //ctlInfo += writeFmt("KSDD", ctl->KSDD); ctlInfo += writeFmt("IsPassItem14", ctl->IsPassItem14); ctlInfo += writeFmt("JianSuLeiXing", ctl->JianSuLeiXing); diff --git a/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.cpp b/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.cpp index 31fc017c..352dbad7 100644 --- a/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.cpp +++ b/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.cpp @@ -12,6 +12,7 @@ MenuSelectCarInfo::MenuSelectCarInfo(QWidget *parent) : QWidget(parent), IMenuAc m_options[ID_CARID] = __KIT_NEW__(SelectOption, this, m_ui->CARID); m_options[ID_IPADDR] = __KIT_NEW__(SelectOption, this, m_ui->IPADDR); m_options[ID_CARCLASS] = __KIT_NEW__(SelectOption, this, m_ui->CARCLASS); + m_options[ID_X_MCH] = __KIT_NEW__(SelectOption, this, m_ui->X_MCH); m_options[ID_KSCX] = __KIT_NEW__(SelectOption, this, m_ui->KSCX); m_options[ID_CARNAME] = __KIT_NEW__(SelectOption, this, m_ui->CARNAME); m_options[ID_FLAG] = __KIT_NEW__(SelectOption, this, m_ui->FLAG); @@ -42,7 +43,7 @@ void MenuSelectCarInfo::onTriggeredClicked() return; } - ListOptions CARID,IPADDR,CARCLASS,KSCX,CARNAME,FLAG,BK1,BK2; + ListOptions CARID,IPADDR,CARCLASS,X_MCH,KSCX,CARNAME,FLAG,BK1,BK2; for(size_t i = 0; i < m_carinfo.size(); i++) { const TDBCarInfo& val = m_carinfo[i]; @@ -55,6 +56,9 @@ void MenuSelectCarInfo::onTriggeredClicked() str = kit::fromUtf8(val.CARCLASS); if(!CARCLASS.contains(str)) CARCLASS.push_back(str); + str = kit::fromUtf8(val.X_MCH); + if(!X_MCH.contains(str)) X_MCH.push_back(str); + str = kit::fromUtf8(val.KSCX); if(!KSCX.contains(str)) KSCX.push_back(str); @@ -75,6 +79,7 @@ void MenuSelectCarInfo::onTriggeredClicked() m_options[ID_CARID]->createOption(CARID); m_options[ID_IPADDR]->createOption(IPADDR); m_options[ID_CARCLASS]->createOption(CARCLASS); + m_options[ID_X_MCH]->createOption(X_MCH); m_options[ID_KSCX]->createOption(KSCX); m_options[ID_CARNAME]->createOption(CARNAME); m_options[ID_FLAG]->createOption(FLAG); @@ -89,6 +94,7 @@ void MenuSelectCarInfo::onTriggeredClicked() m_ui->table->setItem(row, ID_CARID, createTableItem(kit::fromUtf8(val.CARID))); m_ui->table->setItem(row, ID_IPADDR, createTableItem(kit::fromUtf8(val.IPADDR))); m_ui->table->setItem(row, ID_CARCLASS, createTableItem(kit::fromUtf8(val.CARCLASS))); + m_ui->table->setItem(row, ID_X_MCH, createTableItem(kit::fromUtf8(val.X_MCH))); m_ui->table->setItem(row, ID_KSCX, createTableItem(kit::fromUtf8(val.KSCX))); m_ui->table->setItem(row, ID_CARNAME, createTableItem(kit::fromUtf8(val.CARNAME))); m_ui->table->setItem(row, ID_FLAG, createTableItem(kit::fromUtf8(val.FLAG))); @@ -104,7 +110,8 @@ void MenuSelectCarInfo::slot_selectChanged(SelectOption* option) const TDBCarInfo& val = m_carinfo[i]; bool match = matchings(kit::fromUtf8(val.CARID), m_options[ID_CARID]->selectedOptions()) && matchings(kit::fromUtf8(val.IPADDR), m_options[ID_IPADDR]->selectedOptions()) && - matchings(kit::fromUtf8(val.CARCLASS), m_options[ID_CARCLASS]->selectedOptions()) && + matchings(kit::fromUtf8(val.CARCLASS), m_options[ID_CARCLASS]->selectedOptions()) && + matchings(kit::fromUtf8(val.X_MCH), m_options[ID_X_MCH]->selectedOptions()) && matchings(kit::fromUtf8(val.KSCX), m_options[ID_KSCX]->selectedOptions()) && matchings(kit::fromUtf8(val.CARNAME), m_options[ID_CARNAME]->selectedOptions()) && matchings(kit::fromUtf8(val.FLAG), m_options[ID_FLAG]->selectedOptions()) && @@ -122,6 +129,7 @@ void MenuSelectCarInfo::slot_optionChanged(SelectOption* option) bool match = matching(kit::fromUtf8(val.CARID), m_options[ID_CARID]->selectedText()) && matching(kit::fromUtf8(val.IPADDR), m_options[ID_IPADDR]->selectedText()) && matching(kit::fromUtf8(val.CARCLASS), m_options[ID_CARCLASS]->selectedText()) && + matching(kit::fromUtf8(val.X_MCH), m_options[ID_X_MCH]->selectedText()) && matching(kit::fromUtf8(val.KSCX), m_options[ID_KSCX]->selectedText()) && matching(kit::fromUtf8(val.CARNAME), m_options[ID_CARNAME]->selectedText()) && matching(kit::fromUtf8(val.FLAG), m_options[ID_FLAG]->selectedText()) && diff --git a/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.h b/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.h index 245cb923..de11381a 100644 --- a/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.h +++ b/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.h @@ -24,8 +24,8 @@ private slots: private: Ui::MenuSelectCarInfo* m_ui = nullptr; - enum{ID_CARID, ID_IPADDR, ID_CARCLASS, ID_KSCX, ID_CARNAME, ID_FLAG, ID_BK1, ID_BK2, ID_MAX_carinfo}; - const QStringList m_columnName = {"CARID", "IPADDR", "CARCLASS", "KSCX", "CARNAME", "FLAG", "BK1", "BK2"}; + enum{ID_CARID, ID_IPADDR, ID_CARCLASS, ID_X_MCH, ID_KSCX, ID_CARNAME, ID_FLAG, ID_BK1, ID_BK2, ID_MAX_carinfo}; + const QStringList m_columnName = {"CARID", "IPADDR", "CARCLASS", "X_MCH", "KSCX", "CARNAME", "FLAG", "BK1", "BK2"}; std::array m_options; TDBCarInfos m_carinfo; diff --git a/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.ui b/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.ui index c18bf120..001b6b35 100644 --- a/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.ui +++ b/entry/src/main/cpp/toolkit/menu/select/MenuSelectCarInfo.ui @@ -6,7 +6,7 @@ 0 0 - 1211 + 1236 529 @@ -44,7 +44,7 @@ 10 50 - 1191 + 1221 471 @@ -52,7 +52,7 @@ - 216 + 210 10 90 30 @@ -62,7 +62,7 @@ - 160 + 154 15 51 21 @@ -78,7 +78,7 @@ - 310 + 304 15 71 21 @@ -94,7 +94,7 @@ - 386 + 380 10 90 30 @@ -104,7 +104,7 @@ - 488 + 633 15 31 21 @@ -120,7 +120,7 @@ - 526 + 670 10 90 30 @@ -130,7 +130,7 @@ - 694 + 840 10 90 30 @@ -140,9 +140,9 @@ - 970 + 1080 10 - 90 + 51 30 @@ -150,9 +150,9 @@ - 1110 + 1169 10 - 90 + 61 30 @@ -160,7 +160,7 @@ - 788 + 925 15 41 21 @@ -176,7 +176,7 @@ - 1075 + 1135 15 31 21 @@ -192,7 +192,7 @@ - 620 + 765 15 68 21 @@ -208,7 +208,7 @@ - 936 + 1045 15 31 21 @@ -224,7 +224,33 @@ - 834 + 970 + 10 + 71 + 30 + + + + + + + 473 + 15 + 51 + 21 + + + + X_MCH + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 530 10 90 30 diff --git a/entry/src/main/cpp/toolkit/replay/ReplayWrapper.cpp b/entry/src/main/cpp/toolkit/replay/ReplayWrapper.cpp index 54ca196a..665e1098 100644 --- a/entry/src/main/cpp/toolkit/replay/ReplayWrapper.cpp +++ b/entry/src/main/cpp/toolkit/replay/ReplayWrapper.cpp @@ -265,14 +265,6 @@ bool ReplayWrapper::replayTrackTypeInitExam(const TTrackData::Ptr& data) return false; } -#if JUDGE_USE_TSUB3T - std::string cartype = "A2"; - std::string filepath = "/home/duolun/work/yhy/harmony/cpp/model/test_model_enc/"; - info.carmodel = Tools::readFileText(filepath + cartype + ".txt"); - info.kscx = cartype; - strInit = XParser::toAny(info); -#endif - if(!replayCheckSdkVersion(info.sdkver)) { return false; @@ -370,36 +362,6 @@ void ReplayWrapper::replayTrackTypeRealExam(const TTrackData::Ptr& data) { std::string strReal(data->data); -#if JUDGE_USE_TSUB3T - static const TGPSPoint p37(103.841274135,31.012432248,230.955,0,0); - static const TGPSPoint p38(103.841286701451,31.0124322861895,230.955,1.20004482295139,89.7968345127514); - static const TGPSPoint p39(103.841279465,31.012412912,230.955,0,0); - static const TGPSPoint p40(103.841279443108,31.0124020886131,230.955,1.20003086096901,180.099325685847); - double jd1 = p39.jd - p37.jd; - double wd1 = p39.wd - p37.wd; - //double jd2 = p40.jd - p38.jd; - //double wd2 = p40.wd - p38.wd; - TRealExam info; - if(!XParser::fromAny(strReal, info)) - { - logerror("replayTrackTypeRealExam parser error."); - return; - } - - info.gps2 = info.gps; - - ExamCarType cartype = replayExamCarType(); - if(IS_A2(cartype)) - { - info.gps.hxj -= 90; - } - else if(IS_A1(cartype)) - { - - } - strReal = XParser::toAny(info); -#endif - int codeValue = examJudgeRealExam(strReal.c_str(), strReal.length()); TASSERT(codeValue == codeSuccess, ""); diff --git a/entry/src/main/cpp/toolkit/widgets/ShowBeginExam.cpp b/entry/src/main/cpp/toolkit/widgets/ShowBeginExam.cpp index 2e686821..b1a3e774 100644 --- a/entry/src/main/cpp/toolkit/widgets/ShowBeginExam.cpp +++ b/entry/src/main/cpp/toolkit/widgets/ShowBeginExam.cpp @@ -67,7 +67,7 @@ void ShowBeginExam::updateBeginExam(const QString& info) //m_ui->stuBeg->addItem(CL8("上车准备(监管)免考:") + (value. nitem1 ? CL8("免考") : CL8("不免考"))); //m_ui->stuBeg->addItem(CL8("模拟灯光(监管)免考:") + (value. nitem41 ? CL8("免考") : CL8("不免考"))); m_ui->stuBeg->addItem(CL8("满分学习模式标志:") + kit::toString(value.mfxx)+(value.mfxx ? CL8("(是") : CL8("(否)"))); - m_ui->stuBeg->addItem(CL8("满分学习不扣分标志:") + kit::toString(value.mfxxn)+(value.mfxxn ? CL8("(不扣分") : CL8("(扣分)"))); + //m_ui->stuBeg->addItem(CL8("满分学习不扣分标志:") + kit::toString(value.mfxxn)+(value.mfxxn ? CL8("(不扣分") : CL8("(扣分)"))); m_ui->stuBeg->addItem(CL8("增驾模式标志:") + kit::toString(value.zeng)+(value.zeng ? CL8("(增驾") : CL8("(非增驾)"))); //ksxm ykxm kfxm for(int i = 0; i < m_items.size(); i++)