满分学习优化
This commit is contained in:
parent
92cb6838d2
commit
41e92dac38
@ -121,6 +121,7 @@ struct MemoryStorage
|
|||||||
struct CpuOccupyInfo
|
struct CpuOccupyInfo
|
||||||
{
|
{
|
||||||
double idle = 0.0;
|
double idle = 0.0;
|
||||||
|
double iowait = 0.0;
|
||||||
double user = 0.0;
|
double user = 0.0;
|
||||||
double sys = 0.0;
|
double sys = 0.0;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -74,22 +74,26 @@
|
|||||||
user.LowPart = userTimes.dwLowDateTime;
|
user.LowPart = userTimes.dwLowDateTime;
|
||||||
user.HighPart = userTimes.dwHighDateTime;
|
user.HighPart = userTimes.dwHighDateTime;
|
||||||
|
|
||||||
unsigned long long _total = kernel.QuadPart + user.QuadPart;
|
unsigned long long _total = kernel.QuadPart + user.QuadPart;
|
||||||
unsigned long long _idle = idle.QuadPart;
|
unsigned long long _idle = idle.QuadPart;
|
||||||
unsigned long long _user = user.QuadPart;
|
unsigned long long _iowait = 0;
|
||||||
|
unsigned long long _user = user.QuadPart;
|
||||||
|
|
||||||
static unsigned long long prevTotal = 0, prevIdle = 0, prevUser = 0;
|
static unsigned long long prevTotal = 0, prevIdle = 0, prevIowait = 0, prevUser = 0;
|
||||||
unsigned long long __total = _total - prevTotal;
|
unsigned long long __total = _total - prevTotal;
|
||||||
unsigned long long __idle = _idle - prevIdle;
|
unsigned long long __idle = _idle - prevIdle;
|
||||||
unsigned long long __user = _user - prevUser;
|
unsigned long long __iowait = _iowait - prevIowait;
|
||||||
prevTotal = _total;
|
unsigned long long __user = _user - prevUser;
|
||||||
prevIdle = _idle;
|
prevTotal = _total;
|
||||||
prevUser = _user;
|
prevIdle = _idle;
|
||||||
|
prevIowait = _iowait;
|
||||||
|
prevUser = _user;
|
||||||
if(__total > 0)
|
if(__total > 0)
|
||||||
{
|
{
|
||||||
occupy->idle = (__idle) * 100.0 / __total;
|
occupy->idle = (__idle) * 100.0 / __total;
|
||||||
occupy->user = (__user) * 100.0 / __total;
|
occupy->iowait = (__iowait) * 100.0 / __total;
|
||||||
occupy->sys = (__total - __idle - __user) * 100.0 / __total;
|
occupy->user = (__user) * 100.0 / __total;
|
||||||
|
occupy->sys = (__total - __idle - __user) * 100.0 / __total;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -187,36 +191,76 @@
|
|||||||
|
|
||||||
bool __sdk_cpu_occupy__(struct CpuOccupyInfo* occupy)
|
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::string line;
|
||||||
std::getline(procStat, line); // 读取第一行,通常是CPU统计信息
|
static constexpr bool root = false; //root用户权限
|
||||||
std::istringstream buffer(line); // 将字符串流转换为输入流
|
if(root)
|
||||||
procStat.close();
|
{
|
||||||
|
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<std::string> 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;
|
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;
|
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 _total = user + nice + sys + idle + iowait + irq + softirq + steal + guest + guest_nice;
|
||||||
unsigned long long _idle = idle + iowait;
|
unsigned long long _idle = idle;
|
||||||
unsigned long long _user = user;
|
unsigned long long _iowait = iowait;
|
||||||
|
unsigned long long _user = user;
|
||||||
|
|
||||||
static unsigned long long prevTotal = 0, prevIdle = 0, prevUser = 0;
|
static unsigned long long prevTotal = 0, prevIdle = 0, prevIowait = 0, prevUser = 0;
|
||||||
unsigned long long __total = _total - prevTotal;
|
unsigned long long __total = _total - prevTotal;
|
||||||
unsigned long long __idle = _idle - prevIdle;
|
unsigned long long __idle = _idle - prevIdle;
|
||||||
unsigned long long __user = _user - prevUser;
|
unsigned long long __iowait = _iowait - prevIowait;
|
||||||
prevTotal = _total;
|
unsigned long long __user = _user - prevUser;
|
||||||
prevIdle = _idle;
|
prevTotal = _total;
|
||||||
prevUser = _user;
|
prevIdle = _idle;
|
||||||
|
prevIowait = _iowait;
|
||||||
|
prevUser = _user;
|
||||||
if(__total > 0)
|
if(__total > 0)
|
||||||
{
|
{
|
||||||
occupy->idle = (__idle) * 100.0 / __total;
|
occupy->idle = (__idle) * 100.0 / __total;
|
||||||
occupy->user = (__user) * 100.0 / __total;
|
occupy->iowait = (__iowait) * 100.0 / __total;
|
||||||
occupy->sys = (__total - __idle - __user) * 100.0 / __total;
|
occupy->user = (__user) * 100.0 / __total;
|
||||||
|
occupy->sys = (__total - __idle - __user) * 100.0 / __total;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -12,7 +12,6 @@
|
|||||||
***
|
***
|
||||||
*** 说明:编译配置选项
|
*** 说明:编译配置选项
|
||||||
***
|
***
|
||||||
*** JUDGE_USE_TSUB3T //是否启用大车科目三测试
|
|
||||||
*** JUDGE_USE_NSUB3 //是否启用新科三评判
|
*** JUDGE_USE_NSUB3 //是否启用新科三评判
|
||||||
*** JUDGE_USE_OLD //是否启用评判语音播报之前老模式
|
*** JUDGE_USE_OLD //是否启用评判语音播报之前老模式
|
||||||
*** JUDGE_USE_LOG //是否启用日志功能模块
|
*** JUDGE_USE_LOG //是否启用日志功能模块
|
||||||
@ -30,11 +29,6 @@
|
|||||||
***
|
***
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
|
||||||
/*
|
|
||||||
* 是否启用大车科目三测试
|
|
||||||
*/
|
|
||||||
#define JUDGE_USE_TSUB3T 0
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 是否启用新科目三评判
|
* 是否启用新科目三评判
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
#define JUDGE_VERSION_MAJOR 1
|
#define JUDGE_VERSION_MAJOR 1
|
||||||
#define JUDGE_VERSION_MINOR 0
|
#define JUDGE_VERSION_MINOR 0
|
||||||
#define JUDGE_VERSION_PATCH 3
|
#define JUDGE_VERSION_PATCH 3
|
||||||
#define JUDGE_VERSION_STAMP "2504011600b"
|
#define JUDGE_VERSION_STAMP "2504031330b"
|
||||||
#if JUDGE_USE_OLD
|
#if JUDGE_USE_OLD
|
||||||
# undef JUDGE_VERSION_STAMP
|
# undef JUDGE_VERSION_STAMP
|
||||||
# define JUDGE_VERSION_STAMP "2411121010b.old"
|
# define JUDGE_VERSION_STAMP "2411121010b.old"
|
||||||
|
|||||||
@ -156,7 +156,7 @@ int SysParmTable::findQiBuGear(int carCode)
|
|||||||
|
|
||||||
int SysParmTable::findHectometreImpulse(int carCode)
|
int SysParmTable::findHectometreImpulse(int carCode)
|
||||||
{
|
{
|
||||||
//NO1=3 NO2=车型代码 NO3=4条件 TXT1
|
//NO1=3 NO2=车型代码 NO3=2条件 TXT1
|
||||||
int impulse = INVALID_INDEX;
|
int impulse = INVALID_INDEX;
|
||||||
int size = parm3Size();
|
int size = parm3Size();
|
||||||
for(int i = 0; i < size; i++)
|
for(int i = 0; i < size; i++)
|
||||||
|
|||||||
@ -198,6 +198,7 @@ class JUDGE_API SysSetTable : public IDBTable
|
|||||||
SYSSET_DECLARE(414); //变道、超车以前后轮都过线(0-否 1-是) //0
|
SYSSET_DECLARE(414); //变道、超车以前后轮都过线(0-否 1-是) //0
|
||||||
SYSSET_DECLARE(415, type_array, "^"); //自动报靠边停车(启用标记^全部结束n米报^)启用标记:0-否 1-是 319参数为2有效 //0^1^
|
SYSSET_DECLARE(415, type_array, "^"); //自动报靠边停车(启用标记^全部结束n米报^)启用标记:0-否 1-是 319参数为2有效 //0^1^
|
||||||
SYSSET_DECLARE(418); //扣分时实时播报语音(0-否 1-是) //0
|
SYSSET_DECLARE(418); //扣分时实时播报语音(0-否 1-是) //0
|
||||||
|
SYSSET_DECLARE(419, type_int); //里程按百米脉冲计算(0-否 1-是 )
|
||||||
SYSSET_DECLARE(421); //模拟夜间:车辆发生故障,按近光灯和双跳进行评判(0-是 1-否)
|
SYSSET_DECLARE(421); //模拟夜间:车辆发生故障,按近光灯和双跳进行评判(0-是 1-否)
|
||||||
SYSSET_DECLARE(425, type_array, ","); //加减档位操作挂一个挡位要松一次离合器(项目,全程)(0-否 1-是)() // 0,0,
|
SYSSET_DECLARE(425, type_array, ","); //加减档位操作挂一个挡位要松一次离合器(项目,全程)(0-否 1-是)() // 0,0,
|
||||||
SYSSET_DECLARE(426, type_int); //手工取消正在考的项目(0-否 1-是) // 1
|
SYSSET_DECLARE(426, type_int); //手工取消正在考的项目(0-否 1-是) // 1
|
||||||
@ -339,6 +340,7 @@ class JUDGE_API SysSetTable : public IDBTable
|
|||||||
SYSSET_ASSIGN(414);
|
SYSSET_ASSIGN(414);
|
||||||
SYSSET_ASSIGN(415);
|
SYSSET_ASSIGN(415);
|
||||||
SYSSET_ASSIGN(418);
|
SYSSET_ASSIGN(418);
|
||||||
|
SYSSET_ASSIGN(419);
|
||||||
SYSSET_ASSIGN(421);
|
SYSSET_ASSIGN(421);
|
||||||
SYSSET_ASSIGN(425);
|
SYSSET_ASSIGN(425);
|
||||||
SYSSET_ASSIGN(426);
|
SYSSET_ASSIGN(426);
|
||||||
|
|||||||
@ -358,7 +358,7 @@ void ExamCarSub2::dealJudgeExam()
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
//2.6.1)
|
//2.6.1)
|
||||||
calcDistance(); //距离计算
|
calcDistance(false, 0); //距离计算
|
||||||
|
|
||||||
//2.6.2) 监管判断
|
//2.6.2) 监管判断
|
||||||
//函数是一个监管检查函数,这里我们先不考虑监管,我模拟一下这个函数的写法
|
//函数是一个监管检查函数,这里我们先不考虑监管,我模拟一下这个函数的写法
|
||||||
|
|||||||
@ -300,7 +300,7 @@ bool ExamCarSub3::Init_KM3_Global()
|
|||||||
{
|
{
|
||||||
TableSysSet->set481("0");
|
TableSysSet->set481("0");
|
||||||
}
|
}
|
||||||
if(std::atoi(s481.c_str()) > 30)
|
if(std::stoi(s481) > 30)
|
||||||
{
|
{
|
||||||
TableSysSet->set481("15");
|
TableSysSet->set481("15");
|
||||||
}
|
}
|
||||||
@ -309,15 +309,15 @@ bool ExamCarSub3::Init_KM3_Global()
|
|||||||
const std::vector<std::string>& s349 = TableSysSet->asArray349();
|
const std::vector<std::string>& s349 = TableSysSet->asArray349();
|
||||||
if(s349.size() > 5 && s349[5] != "")
|
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] != "")
|
else if(s349.size() > 4 && s349[4] != "")
|
||||||
{
|
{
|
||||||
m_ctl.RtkOffset = std::atoi(s349[4].c_str());
|
m_car.RtkOffset = std::stoi(s349[4]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_ctl.RtkOffset = 0; //20240807 之前是2
|
m_car.RtkOffset = 0; //20240807 之前是2
|
||||||
}
|
}
|
||||||
|
|
||||||
//2、强制启用139号部令
|
//2、强制启用139号部令
|
||||||
@ -341,7 +341,7 @@ bool ExamCarSub3::Init_KM3_Global()
|
|||||||
}
|
}
|
||||||
//6、减速类型(特殊地方的业务,后期开发个性评判可能会用到)
|
//6、减速类型(特殊地方的业务,后期开发个性评判可能会用到)
|
||||||
const std::vector<std::string>& s500 = TableSysSet->asArray500();
|
const std::vector<std::string>& 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 表示浙江 只有路口可以结合车速
|
//扩展>0表示启用车速 =1 表示 30车速 >1 表示浙江 只有路口可以结合车速
|
||||||
if(m_ctl.JianSuLeiXing > 30 || (m_ctl.JianSuLeiXing > 2 && m_ctl.JianSuLeiXing < 10))
|
if(m_ctl.JianSuLeiXing > 30 || (m_ctl.JianSuLeiXing > 2 && m_ctl.JianSuLeiXing < 10))
|
||||||
{
|
{
|
||||||
@ -352,7 +352,7 @@ bool ExamCarSub3::Init_KM3_Global()
|
|||||||
//lxbgcd:变更车道相关定义
|
//lxbgcd:变更车道相关定义
|
||||||
const std::vector<std::string>& s512 = TableSysSet->asArray512();
|
const std::vector<std::string>& 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;
|
m_ctl.tsxhsj = 60 * 1000;
|
||||||
@ -382,17 +382,14 @@ bool ExamCarSub3::Init_KM3_Global()
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
//10、搜索范围赋值
|
//10、搜索范围赋值
|
||||||
m_ctl.MaxR = 6000;
|
|
||||||
m_ctl.MinR = 3000;
|
|
||||||
|
|
||||||
const std::vector<std::string>& s329 = TableSysSet->asArray329();
|
const std::vector<std::string>& s329 = TableSysSet->asArray329();
|
||||||
m_ctl.MaxR = (s329.size() > 0 && s329[0] != "" ? std::atoi(s329[0].c_str()) : 6000);
|
m_car.MaxR = (s329.size() > 0 && s329[0] != "" ? std::stoi(s329[0]) : 6000);
|
||||||
m_ctl.MinR = (s329.size() > 1 && s329[1] != "" ? std::atoi(s329[1].c_str()) : 3000);
|
m_car.MinR = (s329.size() > 1 && s329[1] != "" ? std::stoi(s329[1]) : 3000);
|
||||||
|
|
||||||
//11、得到夜考时间点
|
//11、得到夜考时间点
|
||||||
const std::vector<std::string>& s19 = TableSysSet->asArray19();
|
const std::vector<std::string>& s19 = TableSysSet->asArray19();
|
||||||
m_car.Night_Hr = (s19.size() > 0 && s19[0] != "" ? std::atoi(s19[0].c_str()) : 19); //22 //???yhyflag
|
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::atoi(s19[1].c_str()) : 0);
|
m_car.Night_Mi = (s19.size() > 1 && s19[1] != "" ? std::stoi(s19[1]) : 0);
|
||||||
|
|
||||||
//3、抖动时发动机闯动比例
|
//3、抖动时发动机闯动比例
|
||||||
m_car.fdjds_cdbl = 0.6;
|
m_car.fdjds_cdbl = 0.6;
|
||||||
@ -409,6 +406,34 @@ bool ExamCarSub3::Init_KM3_Global()
|
|||||||
//7、起步闯动
|
//7、起步闯动
|
||||||
m_car.QBCD = -1;
|
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、得到行驶里程限制
|
//4、得到行驶里程限制
|
||||||
if(IS_C1C2C5C6(cartype))
|
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)
|
if(m_stuInfo.yklc != 0)
|
||||||
{
|
{
|
||||||
@ -460,8 +493,11 @@ bool ExamCarSub3::Init_KM3_Global()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//从SystemParm中读取参数
|
int X_McH = (!carInfo->X_MCH.empty()) ? std::atoi(carInfo->X_MCH.c_str()) : 0;
|
||||||
this->UpdateCarParmWithSystemParm();
|
if(X_McH > 0) //百米脉冲值优先carinfo的 在UpdateCarParmWithSystemParm中也有赋值不要调换顺序
|
||||||
|
{
|
||||||
|
m_car.X_McH = X_McH;
|
||||||
|
}
|
||||||
|
|
||||||
//新模拟夜间(次数^错扣^固定^),预留
|
//新模拟夜间(次数^错扣^固定^),预留
|
||||||
if(ksdd == siteof::hbxy && IS_A1A2A3B1B2(cartype)) //isAB
|
if(ksdd == siteof::hbxy && IS_A1A2A3B1B2(cartype)) //isAB
|
||||||
@ -490,34 +526,6 @@ bool ExamCarSub3::Init_KM3_Global()
|
|||||||
TableSysSet->set336("0");
|
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 = ISub3JudgeItem::create(Sub3ItemType20Comm);
|
||||||
m_commItem->dealBuildItem(this);
|
m_commItem->dealBuildItem(this);
|
||||||
int parm1Size = TableSysParm->parm1Size();
|
int parm1Size = TableSysParm->parm1Size();
|
||||||
@ -607,7 +615,7 @@ bool ExamCarSub3::Init_KM3_Global()
|
|||||||
//只有掉头项目才有右掉头一说 //20150516
|
//只有掉头项目才有右掉头一说 //20150516
|
||||||
examItem->bYdt = (itemNo == Sub3ItemType12Dtxx && parm1->TXT2 == "ydt" ? true : false); //是否右掉头
|
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))
|
if(m_stuInfo.mfxx && m_car.MFXX_KSXM != "" && itemNo != Sub3ItemType13Yjxs && IS_A1A2A3B1B2C6(cartype))
|
||||||
{
|
{
|
||||||
std::string s = "," + std::to_string(itemNo) + ",";
|
std::string s = "," + std::to_string(itemNo) + ",";
|
||||||
@ -615,9 +623,10 @@ bool ExamCarSub3::Init_KM3_Global()
|
|||||||
if(Tools::pos(s, ss) == false)
|
if(Tools::pos(s, ss) == false)
|
||||||
{
|
{
|
||||||
examItem->NoID = true;
|
examItem->NoID = true;
|
||||||
|
KM3EndItem(itemNo,true,false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//对夜考项目进行特殊处理
|
//对夜考项目进行特殊处理 //大车夜考非必考项目,一开始考试就通知外壳合格变绿
|
||||||
if(m_car.Night_ID == true && itemNo != Sub3ItemType13Yjxs)
|
if(m_car.Night_ID == true && itemNo != Sub3ItemType13Yjxs)
|
||||||
{
|
{
|
||||||
std::string s = "," + std::to_string(itemNo) + ",";
|
std::string s = "," + std::to_string(itemNo) + ",";
|
||||||
@ -627,8 +636,8 @@ bool ExamCarSub3::Init_KM3_Global()
|
|||||||
//examItem->Item_Color = itemStateHg;
|
//examItem->Item_Color = itemStateHg;
|
||||||
//examItem->TestPro = ItemProFlagIdle;
|
//examItem->TestPro = ItemProFlagIdle;
|
||||||
//examItem->FinishFlag = true;
|
//examItem->FinishFlag = true;
|
||||||
|
examItem->NoID = true;
|
||||||
KM3EndItem(itemNo,true,false);
|
KM3EndItem(itemNo,true,false);
|
||||||
//examItem->NoID = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -650,10 +659,22 @@ void ExamCarSub3::UpdateCarParmWithSystemParm()
|
|||||||
|
|
||||||
std::string parm3TXT1 = Tools::trim(parm3->TXT1);
|
std::string parm3TXT1 = Tools::trim(parm3->TXT1);
|
||||||
std::string parm3TXT3 = Tools::trim(parm3->TXT3);
|
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、起步挡位
|
//4、起步挡位
|
||||||
if(parm3No3 == 4)
|
if(parm3No3 == 4)
|
||||||
{
|
{
|
||||||
//C++翻译我们的StrToIntDef的时候,最好做一个异常处理,因为DELPHI内部做了这个实现
|
|
||||||
m_car.StartSpeed = parm3TXT1 != "" ? std::atoi(parm3TXT1.c_str()) : 2;
|
m_car.StartSpeed = parm3TXT1 != "" ? std::atoi(parm3TXT1.c_str()) : 2;
|
||||||
}
|
}
|
||||||
//5、是否评判安全带
|
//5、是否评判安全带
|
||||||
@ -698,11 +719,8 @@ void ExamCarSub3::UpdateCarParmWithSystemParm()
|
|||||||
{
|
{
|
||||||
if(parm3TXT1 != "")
|
if(parm3TXT1 != "")
|
||||||
{
|
{
|
||||||
#if !JUDGE_USE_TSUB3T
|
|
||||||
|
|
||||||
parm3TXT1 = Tools::toupper(parm3TXT1);
|
parm3TXT1 = Tools::toupper(parm3TXT1);
|
||||||
m_carInfo->kscx = parm3TXT1;
|
m_carInfo->kscx = parm3TXT1;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1053,7 +1071,9 @@ void ExamCarSub3::UpdateCarParmWithSystemParm()
|
|||||||
{
|
{
|
||||||
std::vector<std::string> s = Tools::split(parm3TXT1, "^");
|
std::vector<std::string> s = Tools::split(parm3TXT1, "^");
|
||||||
m_car.MFXX_KSXM = s.size() > 0 ? s[0] : "";
|
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()
|
//GetCarDirStauts()
|
||||||
|
|
||||||
//距离计算 //7、计算科目三距离
|
//距离计算 //7、计算科目三距离
|
||||||
calcDistance(); //Calc_KM3JL()
|
|
||||||
|
calcDistance(TableSysSet->asInt419() == 1, m_car.X_McH); //Calc_KM3JL()
|
||||||
|
|
||||||
Km3NewEnterItem();
|
Km3NewEnterItem();
|
||||||
|
|
||||||
@ -3480,11 +3501,11 @@ void ExamCarSub3::Km3NewEnterItem()
|
|||||||
//Point_Type -1:辅助点 0:项目点 大于0:指定方向的点号 其他:非评判用
|
//Point_Type -1:辅助点 0:项目点 大于0:指定方向的点号 其他:非评判用
|
||||||
if(mp->point_type > 0 && Tools::pos("+", his1->MapPoint_Road_Code) == true) //Pos('+', LS1->MapPoint_Road_Code) > 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
|
else
|
||||||
{
|
{
|
||||||
offset = m_ctl.MinR;
|
offset = m_car.MinR;
|
||||||
}
|
}
|
||||||
int JDMin = Range_cm2Gpsdeg(-offset, gpsE, true);
|
int JDMin = Range_cm2Gpsdeg(-offset, gpsE, true);
|
||||||
int JDMax = 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:远程下发的考试扣分
|
//Kind:0 自动评判 1:考车人工扣分 2:远程下发的考试扣分
|
||||||
bool result = false;
|
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;
|
if(type == MarkTypeAuto || type == MarkTypeNS3) return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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点的中点)
|
rcb.bumper_b = GpsMath::calcCenterPoint(ps_b[II(2)], ps_b[II(24)]); //保险杠中心点坐标(对于C1,C2,C5, 就是2点和24点的中点)
|
||||||
|
|
||||||
TGpsInfo& gps = cg->real.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;
|
int x = 0, y = 0;
|
||||||
GpsMath::calcEastAndNorthDistanceCM(m_basePoint, cur, m_basePoint.gc, x, y);
|
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从天线
|
rcb.b2_b_G = ps_b[II(64)]; //挂车GPS从天线
|
||||||
|
|
||||||
TGpsInfo& gps2 = cg->real.gps2;
|
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;
|
int x = 0, y = 0;
|
||||||
GpsMath::calcEastAndNorthDistanceCM(m_basePoint, cur2, m_basePoint.gc, x, y);
|
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从天线
|
rcb.b2_b_G = ps_b[II(40)]; //挂车GPS从天线
|
||||||
|
|
||||||
TGpsInfo& gps = cg->real.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;
|
int x = 0, y = 0;
|
||||||
GpsMath::calcEastAndNorthDistanceCM(m_basePoint, cur, m_basePoint.gc, x, y);
|
GpsMath::calcEastAndNorthDistanceCM(m_basePoint, cur, m_basePoint.gc, x, y);
|
||||||
@ -465,7 +465,7 @@ bool ExamSensor::calcCarBody(TChuanGan* cg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
TGpsInfo& gps2 = cg->real.gps2;
|
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;
|
int x = 0, y = 0;
|
||||||
GpsMath::calcEastAndNorthDistanceCM(m_basePoint, cur2, m_basePoint.gc, x, y);
|
GpsMath::calcEastAndNorthDistanceCM(m_basePoint, cur2, m_basePoint.gc, x, y);
|
||||||
|
|||||||
@ -266,18 +266,19 @@ const char* ExamService::examPeerOccupy()
|
|||||||
logdebug("call examPeerOccupy.");
|
logdebug("call examPeerOccupy.");
|
||||||
//if(!m_init) return QE(errorInitNot);
|
//if(!m_init) return QE(errorInitNot);
|
||||||
|
|
||||||
TOccupyInfo occ;
|
|
||||||
|
|
||||||
CpuOccupyInfo cpu;
|
CpuOccupyInfo cpu;
|
||||||
MemoryStorage memo;
|
|
||||||
DiskStorage disk;
|
|
||||||
|
|
||||||
Tools::peerOccupyCpu(cpu);
|
Tools::peerOccupyCpu(cpu);
|
||||||
|
|
||||||
|
MemoryStorage memo;
|
||||||
Tools::peerOccupyMemory(memo, MB);
|
Tools::peerOccupyMemory(memo, MB);
|
||||||
|
|
||||||
|
DiskStorage disk;
|
||||||
Tools::peerOccupyDisk("./", disk, MB);
|
Tools::peerOccupyDisk("./", disk, MB);
|
||||||
|
|
||||||
|
TOccupyInfo occ;
|
||||||
occ.cpu.cores = Tools::getCpuProcessors();
|
occ.cpu.cores = Tools::getCpuProcessors();
|
||||||
occ.cpu.idle = std::round(cpu.idle);
|
occ.cpu.idle = std::round(cpu.idle);
|
||||||
|
occ.cpu.iowait = std::round(cpu.iowait);
|
||||||
occ.cpu.user = std::round(cpu.user);
|
occ.cpu.user = std::round(cpu.user);
|
||||||
occ.cpu.sys = std::round(cpu.sys);
|
occ.cpu.sys = std::round(cpu.sys);
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
else
|
||||||
const Pointi& c = historyGps().ai_gps;
|
|
||||||
if( (c.x == 0 && c.y == 0) || (h.x == 0 && h.y == 0) )
|
|
||||||
{
|
{
|
||||||
return 0;
|
if(m_history->size() <= 1)
|
||||||
}
|
{
|
||||||
double x = h.x - c.x;
|
return 0;
|
||||||
double y = h.y - c.y;
|
}
|
||||||
int a = std::round(std::sqrt(x*x + y*y));
|
const Pointi& h = historyGps(1).ai_gps;
|
||||||
switch(m_cg->move)
|
const Pointi& c = historyGps().ai_gps;
|
||||||
{
|
if( (c.x == 0 && c.y == 0) || (h.x == 0 && h.y == 0) )
|
||||||
case moveForward: m_disForward += a; break;
|
{
|
||||||
case moveBackward: m_disBackward += a; break;
|
return 0;
|
||||||
default: break;
|
}
|
||||||
|
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_ljjl_cm = m_disForward;
|
||||||
m_cg->ai_dcjl_cm = m_disBackward;
|
m_cg->ai_dcjl_cm = m_disBackward;
|
||||||
m_cg->ai_ljjl = m_disForward/100.0;
|
m_cg->ai_ljjl = m_disForward/100.0;
|
||||||
|
|||||||
@ -138,7 +138,7 @@ public:
|
|||||||
virtual void doExamRealExam(Package* pkg);
|
virtual void doExamRealExam(Package* pkg);
|
||||||
virtual void doExamNS3(Package* pkg){};
|
virtual void doExamNS3(Package* pkg){};
|
||||||
//前进 后退 距离计算
|
//前进 后退 距离计算
|
||||||
virtual int calcDistance();
|
virtual int calcDistance(bool mc, int X_McH);
|
||||||
|
|
||||||
//当前系统时间(回放取的事GPS时间)
|
//当前系统时间(回放取的事GPS时间)
|
||||||
virtual int64 GetCurrentTime2() const;
|
virtual int64 GetCurrentTime2() const;
|
||||||
|
|||||||
@ -31,7 +31,6 @@ public:
|
|||||||
virtual const char* examSecretDecrypt(const char* data, int size) = 0;
|
virtual const char* examSecretDecrypt(const char* data, int size) = 0;
|
||||||
virtual int examFreeMemory(const char* buf) = 0;
|
virtual int examFreeMemory(const char* buf) = 0;
|
||||||
|
|
||||||
|
|
||||||
virtual void examJudgeCallbackLogToCaller(int level, const char* info, int len) = 0;
|
virtual void examJudgeCallbackLogToCaller(int level, const char* info, int len) = 0;
|
||||||
virtual void examJudgeCallbackRealExamToCaller(const char* data, int len) = 0;
|
virtual void examJudgeCallbackRealExamToCaller(const char* data, int len) = 0;
|
||||||
virtual void examJudgeCallbackPerformToCaller(const char* data, int len) = 0;
|
virtual void examJudgeCallbackPerformToCaller(const char* data, int len) = 0;
|
||||||
|
|||||||
@ -411,8 +411,8 @@ void Sub3Judge02Qbxx::Judge_QiBu_GuaCuoDang()
|
|||||||
{
|
{
|
||||||
const TSensorInfo& sor = cg->real.sensor;
|
const TSensorInfo& sor = cg->real.sensor;
|
||||||
//小车1档起步, 大车1、2档起步
|
//小车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 JUDGE_USE_INSPECT
|
||||||
if(sor.dw_plc > gear) //无锡所用原始档位
|
if(sor.dw_plc > gear) //无锡所用原始档位
|
||||||
{
|
{
|
||||||
|
|||||||
@ -94,9 +94,7 @@ bool Sub3Judge03Zxxs::dealJudgeEnter()
|
|||||||
m_itemv.Gps_Offset = 40;
|
m_itemv.Gps_Offset = 40;
|
||||||
}
|
}
|
||||||
|
|
||||||
TTestCtl* ctl = m_car->getTTestCtl();
|
m_itemv.Gps_Offset = m_itemv.Gps_Offset + tcar->RtkOffset;
|
||||||
//GP
|
|
||||||
m_itemv.Gps_Offset = m_itemv.Gps_Offset + ctl->RtkOffset;
|
|
||||||
m_itemv.Init_LJJL = cg->ai_ljjl;
|
m_itemv.Init_LJJL = cg->ai_ljjl;
|
||||||
m_exam->TestPro = ItemProFlagJudge;
|
m_exam->TestPro = ItemProFlagJudge;
|
||||||
//ToDo2:生成进项目事件
|
//ToDo2:生成进项目事件
|
||||||
|
|||||||
@ -1373,13 +1373,15 @@ void Sub3Judge11Kbtc::Judge_KBTC_YaXian()
|
|||||||
{
|
{
|
||||||
const TGpsInfo& gps = m_car->historyGps();
|
const TGpsInfo& gps = m_car->historyGps();
|
||||||
//靠边停车以右前、后轮判靠边距离(0-否 1-是)
|
//靠边停车以右前、后轮判靠边距离(0-否 1-是)
|
||||||
TTestCtl* ctl = m_car->getTTestCtl();
|
int RtkOffset = m_car->getTCar()->RtkOffset;
|
||||||
Max_JL0 = Max_JL0 - ctl->RtkOffset - std::round(gps.jdyz * 100) - std::round(gps.wdyz * 100);
|
int offset = 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_JL0 -= offset;
|
||||||
Max_JL2 = Max_JL2 - ctl->RtkOffset - std::round(gps.jdyz * 100) - std::round(gps.wdyz * 100);
|
Max_JL1 -= offset;
|
||||||
|
Max_JL2 -= offset;
|
||||||
|
|
||||||
//20170724
|
//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) //大车夜考相关的参数
|
if(m_itemv.dcykkb == 0) //大车夜考相关的参数
|
||||||
{
|
{
|
||||||
@ -1521,13 +1523,15 @@ void Sub3Judge11Kbtc::Judge_KBTC_YaXian_Tail()
|
|||||||
{
|
{
|
||||||
const TGpsInfo& gps2 = m_car->historyGps2();
|
const TGpsInfo& gps2 = m_car->historyGps2();
|
||||||
//靠边停车以右前、后轮判靠边距离(0-否 1-是)
|
//靠边停车以右前、后轮判靠边距离(0-否 1-是)
|
||||||
TTestCtl* ctl = m_car->getTTestCtl();
|
int RtkOffset = m_car->getTCar()->RtkOffset;
|
||||||
Max_JL0 = Max_JL0 - ctl->RtkOffset - std::round(gps2.jdyz * 100) - std::round(gps2.wdyz * 100);
|
int offset = 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_JL0 -= offset;
|
||||||
Max_JL2 = Max_JL2 - ctl->RtkOffset - std::round(gps2.jdyz * 100) - std::round(gps2.wdyz * 100);
|
Max_JL1 -= offset;
|
||||||
|
Max_JL2 -= offset;
|
||||||
|
|
||||||
//20170724
|
//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) //大车夜考相关的参数
|
if(m_itemv.dcykkb == 0) //大车夜考相关的参数
|
||||||
{
|
{
|
||||||
|
|||||||
@ -283,7 +283,7 @@ JUDGE_C_API BoardType name2BoardType(const char* name);
|
|||||||
#define EnumMakeGpsStatus(declare) \
|
#define EnumMakeGpsStatus(declare) \
|
||||||
declare(gpsStatusINVALID, "----", JUDGE_UTF8S("无效(数据异常)")) \
|
declare(gpsStatusINVALID, "----", JUDGE_UTF8S("无效(数据异常)")) \
|
||||||
declare(gpsStatusSINGLE, "SINGLE", JUDGE_UTF8S("单点解(收星数过低10米以内)***前置机没发差分改帧数给后置机")) \
|
declare(gpsStatusSINGLE, "SINGLE", JUDGE_UTF8S("单点解(收星数过低10米以内)***前置机没发差分改帧数给后置机")) \
|
||||||
declare(gpsStatusPSRDIFF, "PSRDIFF", JUDGE_UTF8S("伪距解(没见过这种状态3米以内)没收到差分改正数?")) \
|
declare(gpsStatusPSRDIFF, "PSRDIFF", JUDGE_UTF8S("伪距解(没见过这种状态3米以内)后置机没收到差分改正数?")) \
|
||||||
declare(gpsStatusANGLE, "**ANGLE**", JUDGE_UTF8S("**角度差分状态**?")) \
|
declare(gpsStatusANGLE, "**ANGLE**", JUDGE_UTF8S("**角度差分状态**?")) \
|
||||||
declare(gpsStatusNARROW_INT, "NARROW_INT", JUDGE_UTF8S("固定解(正常状态0.02米以内)")) \
|
declare(gpsStatusNARROW_INT, "NARROW_INT", JUDGE_UTF8S("固定解(正常状态0.02米以内)")) \
|
||||||
declare(gpsStatusNARROW_FLOAT, "NARROW_FLOAT", JUDGE_UTF8S("浮点解(有遮挡物0.5米以内)"))
|
declare(gpsStatusNARROW_FLOAT, "NARROW_FLOAT", JUDGE_UTF8S("浮点解(有遮挡物0.5米以内)"))
|
||||||
|
|||||||
@ -111,3 +111,14 @@ bool TMarkRule::is_agree(const nlohmann::json& jsonn, const char* param)
|
|||||||
}
|
}
|
||||||
return true;
|
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;
|
||||||
|
}
|
||||||
|
|||||||
@ -258,16 +258,19 @@ struct TDBCarInfo
|
|||||||
std::string CARID; //考车ID
|
std::string CARID; //考车ID
|
||||||
std::string IPADDR; //IP地址
|
std::string IPADDR; //IP地址
|
||||||
std::string CARCLASS; //考车名称,比如:桑塔纳、新捷达
|
std::string CARCLASS; //考车名称,比如:桑塔纳、新捷达
|
||||||
|
std::string X_MCH; //百米脉冲 2025-04-02 新增
|
||||||
std::string KSCX; //考试车型,比如:C1,C2
|
std::string KSCX; //考试车型,比如:C1,C2
|
||||||
std::string CARNAME; //预留
|
std::string CARNAME; //预留
|
||||||
std::string FLAG; //预留
|
std::string FLAG; //预留
|
||||||
std::string BK1; //预留
|
std::string BK1; //预留
|
||||||
std::string BK2; //预留
|
std::string BK2; //预留
|
||||||
|
|
||||||
|
bool is_agree(const nlohmann::json& jsonn, const char* param);
|
||||||
JUDGE_JSON_DEFINE(TDBCarInfo,
|
JUDGE_JSON_DEFINE(TDBCarInfo,
|
||||||
CARID,
|
CARID,
|
||||||
IPADDR,
|
IPADDR,
|
||||||
CARCLASS,
|
CARCLASS,
|
||||||
|
X_MCH,
|
||||||
KSCX,
|
KSCX,
|
||||||
CARNAME,
|
CARNAME,
|
||||||
FLAG,
|
FLAG,
|
||||||
@ -466,7 +469,7 @@ struct TStuInfo
|
|||||||
//bool nitem1 = false; //JG_Not_Item1_Flag 不需要考上车准备(监管)免考
|
//bool nitem1 = false; //JG_Not_Item1_Flag 不需要考上车准备(监管)免考
|
||||||
//bool nitem41 = false; //JG_Not_Item_41_Flag 不需要考模拟灯光(监管)免考
|
//bool nitem41 = false; //JG_Not_Item_41_Flag 不需要考模拟灯光(监管)免考
|
||||||
bool mfxx = false; //满分学习学员标志 ManFenXueXi_Flag
|
bool mfxx = false; //满分学习学员标志 ManFenXueXi_Flag
|
||||||
bool mfxxn = false; //满分学习不扣分标志 ManFenXueXiNotKouFenFlag
|
//bool mfxxn = false; //满分学习不扣分标志 ManFenXueXiNotKouFenFlag
|
||||||
|
|
||||||
bool zeng = false; //增驾模式标志 true增驾 false非增驾
|
bool zeng = false; //增驾模式标志 true增驾 false非增驾
|
||||||
|
|
||||||
@ -507,7 +510,7 @@ struct TStuInfo
|
|||||||
//nitem1,
|
//nitem1,
|
||||||
//nitem41,
|
//nitem41,
|
||||||
mfxx,
|
mfxx,
|
||||||
mfxxn,
|
//mfxxn,
|
||||||
zeng);
|
zeng);
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -1401,6 +1404,7 @@ struct TCar
|
|||||||
{
|
{
|
||||||
TCar() { }
|
TCar() { }
|
||||||
|
|
||||||
|
int X_McH = 0; //百米脉冲值(杭州竟然用到这玩意)优先carinfo的
|
||||||
int StartSpeed = 0; //起步档位
|
int StartSpeed = 0; //起步档位
|
||||||
int AnQuanDai = 0; //安全带:0-不判 1-判保险带 2-气压
|
int AnQuanDai = 0; //安全带:0-不判 1-判保险带 2-气压
|
||||||
int Test_Sum = 0; //考试项目总数
|
int Test_Sum = 0; //考试项目总数
|
||||||
@ -1443,13 +1447,18 @@ struct TCar
|
|||||||
int CSBType = 0; //20171113 超声波模式
|
int CSBType = 0; //20171113 超声波模式
|
||||||
std::string DC_YK_Must; //夜考项目 20180301
|
std::string DC_YK_Must; //夜考项目 20180301
|
||||||
std::string MFXX_KSXM; //满分学习考试项目
|
std::string MFXX_KSXM; //满分学习考试项目
|
||||||
std::string MFXX_Parm; //满分学习参数
|
int MFXX_XSJL = 0; //满分学习行驶里程
|
||||||
|
bool MFXX_Mark = false; //满分学习是否电子评判自动扣分
|
||||||
|
//std::string MFXX_Parm; //满分学习参数
|
||||||
|
|
||||||
//档位转速比 2014111
|
//档位转速比 2014111
|
||||||
struct TCarZsBl { int CarZsBmin = -1; int CarZsBMax = -1; };
|
struct TCarZsBl { int CarZsBmin = -1; int CarZsBMax = -1; };
|
||||||
std::array<TCarZsBl, 7> DwZsBl; //20141111 档位转速比 档位转速比 array[1..5]
|
std::array<TCarZsBl, 7> DwZsBl; //20141111 档位转速比 档位转速比 array[1..5]
|
||||||
bool ZDB_Flag = false;
|
bool ZDB_Flag = false;
|
||||||
|
|
||||||
|
int RtkOffset = 0;
|
||||||
|
int MaxR = 0, MinR = 0; //最大及最小GPS搜索范围CM
|
||||||
|
|
||||||
//********************以下目前没用到*******************
|
//********************以下目前没用到*******************
|
||||||
/*
|
/*
|
||||||
//std::string CarTypeName; //车型名称 大货 对应carinfo表CARCLASS字段
|
//std::string CarTypeName; //车型名称 大货 对应carinfo表CARCLASS字段
|
||||||
@ -1506,8 +1515,6 @@ struct TTestCtl
|
|||||||
int64 ZXD_KSSJ_TK = 0; //转向灯考试时间
|
int64 ZXD_KSSJ_TK = 0; //转向灯考试时间
|
||||||
bool ZXD_GuanBi = false; //转向灯关闭标记
|
bool ZXD_GuanBi = false; //转向灯关闭标记
|
||||||
std::set<ExamItemCode> PassedItem; //std::string PassedItem; //已考项目编号列表
|
std::set<ExamItemCode> PassedItem; //std::string PassedItem; //已考项目编号列表
|
||||||
int MaxR = 0, MinR = 0; //最大及最小GPS搜索范围CM
|
|
||||||
int RtkOffset = 0;
|
|
||||||
bool IsPassItem14 = false; //加减挡拉是否考过 20170117
|
bool IsPassItem14 = false; //加减挡拉是否考过 20170117
|
||||||
int JianSuLeiXing = 0; //20171007减速类型
|
int JianSuLeiXing = 0; //20171007减速类型
|
||||||
int LianXuBianDaoKind = 0; //20171008 连续变更车道方式 0:abc 1:aba和abc都判
|
int LianXuBianDaoKind = 0; //20171008 连续变更车道方式 0:abc 1:aba和abc都判
|
||||||
@ -1936,12 +1943,13 @@ struct TRadarInfo
|
|||||||
|
|
||||||
struct TCpuOccupy
|
struct TCpuOccupy
|
||||||
{
|
{
|
||||||
int32 cores = 0;
|
int32 cores = 0;
|
||||||
int32 idle = 0;
|
int32 idle = 0;
|
||||||
int32 user = 0;
|
int32 iowait = 0;
|
||||||
int32 sys = 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(); }
|
TCpuOccupy() noexcept { clean(); }
|
||||||
virtual ~TCpuOccupy() noexcept { clean(); }
|
virtual ~TCpuOccupy() noexcept { clean(); }
|
||||||
@ -1949,6 +1957,7 @@ struct TCpuOccupy
|
|||||||
{
|
{
|
||||||
cores = 0;
|
cores = 0;
|
||||||
idle = 0;
|
idle = 0;
|
||||||
|
iowait = 0;
|
||||||
user = 0;
|
user = 0;
|
||||||
sys = 0;
|
sys = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -880,10 +880,15 @@ TEST_F(TestJudge, test_sub3_car_check_data)
|
|||||||
carInfo += writeFmt("CSBType", car->CSBType);
|
carInfo += writeFmt("CSBType", car->CSBType);
|
||||||
carInfo += writeFmt("DC_YK_Must", car->DC_YK_Must);
|
carInfo += writeFmt("DC_YK_Must", car->DC_YK_Must);
|
||||||
carInfo += writeFmt("MFXX_KSXM", car->MFXX_KSXM);
|
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("DwZsBl", car->DwZsBl);
|
||||||
carInfo += writeFmt("ZDB_Flag", car->ZDB_Flag);
|
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("CarTypeName", car->CarTypeName);
|
||||||
carInfo += writeFmt("CarTypeSystemParmNo", car->CarTypeSystemParmNo);
|
carInfo += writeFmt("CarTypeSystemParmNo", car->CarTypeSystemParmNo);
|
||||||
@ -932,10 +937,7 @@ TEST_F(TestJudge, test_sub3_car_check_data)
|
|||||||
*/
|
*/
|
||||||
std::string ctlInfo;
|
std::string ctlInfo;
|
||||||
ctlInfo += writeFmt("PassedItem", ctl->PassedItem);
|
ctlInfo += writeFmt("PassedItem", ctl->PassedItem);
|
||||||
ctlInfo += writeFmt("MaxR", ctl->MaxR);
|
|
||||||
ctlInfo += writeFmt("MinR", ctl->MinR);
|
|
||||||
ctlInfo += writeFmt("Gps_St", ctl->Gps_St);
|
ctlInfo += writeFmt("Gps_St", ctl->Gps_St);
|
||||||
ctlInfo += writeFmt("RtkOffset", ctl->RtkOffset);
|
|
||||||
//ctlInfo += writeFmt("KSDD", ctl->KSDD);
|
//ctlInfo += writeFmt("KSDD", ctl->KSDD);
|
||||||
ctlInfo += writeFmt("IsPassItem14", ctl->IsPassItem14);
|
ctlInfo += writeFmt("IsPassItem14", ctl->IsPassItem14);
|
||||||
ctlInfo += writeFmt("JianSuLeiXing", ctl->JianSuLeiXing);
|
ctlInfo += writeFmt("JianSuLeiXing", ctl->JianSuLeiXing);
|
||||||
|
|||||||
@ -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_CARID] = __KIT_NEW__(SelectOption, this, m_ui->CARID);
|
||||||
m_options[ID_IPADDR] = __KIT_NEW__(SelectOption, this, m_ui->IPADDR);
|
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_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_KSCX] = __KIT_NEW__(SelectOption, this, m_ui->KSCX);
|
||||||
m_options[ID_CARNAME] = __KIT_NEW__(SelectOption, this, m_ui->CARNAME);
|
m_options[ID_CARNAME] = __KIT_NEW__(SelectOption, this, m_ui->CARNAME);
|
||||||
m_options[ID_FLAG] = __KIT_NEW__(SelectOption, this, m_ui->FLAG);
|
m_options[ID_FLAG] = __KIT_NEW__(SelectOption, this, m_ui->FLAG);
|
||||||
@ -42,7 +43,7 @@ void MenuSelectCarInfo::onTriggeredClicked()
|
|||||||
return;
|
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++)
|
for(size_t i = 0; i < m_carinfo.size(); i++)
|
||||||
{
|
{
|
||||||
const TDBCarInfo& val = m_carinfo[i];
|
const TDBCarInfo& val = m_carinfo[i];
|
||||||
@ -55,6 +56,9 @@ void MenuSelectCarInfo::onTriggeredClicked()
|
|||||||
str = kit::fromUtf8(val.CARCLASS);
|
str = kit::fromUtf8(val.CARCLASS);
|
||||||
if(!CARCLASS.contains(str)) CARCLASS.push_back(str);
|
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);
|
str = kit::fromUtf8(val.KSCX);
|
||||||
if(!KSCX.contains(str)) KSCX.push_back(str);
|
if(!KSCX.contains(str)) KSCX.push_back(str);
|
||||||
|
|
||||||
@ -75,6 +79,7 @@ void MenuSelectCarInfo::onTriggeredClicked()
|
|||||||
m_options[ID_CARID]->createOption(CARID);
|
m_options[ID_CARID]->createOption(CARID);
|
||||||
m_options[ID_IPADDR]->createOption(IPADDR);
|
m_options[ID_IPADDR]->createOption(IPADDR);
|
||||||
m_options[ID_CARCLASS]->createOption(CARCLASS);
|
m_options[ID_CARCLASS]->createOption(CARCLASS);
|
||||||
|
m_options[ID_X_MCH]->createOption(X_MCH);
|
||||||
m_options[ID_KSCX]->createOption(KSCX);
|
m_options[ID_KSCX]->createOption(KSCX);
|
||||||
m_options[ID_CARNAME]->createOption(CARNAME);
|
m_options[ID_CARNAME]->createOption(CARNAME);
|
||||||
m_options[ID_FLAG]->createOption(FLAG);
|
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_CARID, createTableItem(kit::fromUtf8(val.CARID)));
|
||||||
m_ui->table->setItem(row, ID_IPADDR, createTableItem(kit::fromUtf8(val.IPADDR)));
|
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_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_KSCX, createTableItem(kit::fromUtf8(val.KSCX)));
|
||||||
m_ui->table->setItem(row, ID_CARNAME, createTableItem(kit::fromUtf8(val.CARNAME)));
|
m_ui->table->setItem(row, ID_CARNAME, createTableItem(kit::fromUtf8(val.CARNAME)));
|
||||||
m_ui->table->setItem(row, ID_FLAG, createTableItem(kit::fromUtf8(val.FLAG)));
|
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];
|
const TDBCarInfo& val = m_carinfo[i];
|
||||||
bool match = matchings(kit::fromUtf8(val.CARID), m_options[ID_CARID]->selectedOptions()) &&
|
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.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.KSCX), m_options[ID_KSCX]->selectedOptions()) &&
|
||||||
matchings(kit::fromUtf8(val.CARNAME), m_options[ID_CARNAME]->selectedOptions()) &&
|
matchings(kit::fromUtf8(val.CARNAME), m_options[ID_CARNAME]->selectedOptions()) &&
|
||||||
matchings(kit::fromUtf8(val.FLAG), m_options[ID_FLAG]->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()) &&
|
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.IPADDR), m_options[ID_IPADDR]->selectedText()) &&
|
||||||
matching(kit::fromUtf8(val.CARCLASS), m_options[ID_CARCLASS]->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.KSCX), m_options[ID_KSCX]->selectedText()) &&
|
||||||
matching(kit::fromUtf8(val.CARNAME), m_options[ID_CARNAME]->selectedText()) &&
|
matching(kit::fromUtf8(val.CARNAME), m_options[ID_CARNAME]->selectedText()) &&
|
||||||
matching(kit::fromUtf8(val.FLAG), m_options[ID_FLAG]->selectedText()) &&
|
matching(kit::fromUtf8(val.FLAG), m_options[ID_FLAG]->selectedText()) &&
|
||||||
|
|||||||
@ -24,8 +24,8 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
Ui::MenuSelectCarInfo* m_ui = nullptr;
|
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};
|
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", "KSCX", "CARNAME", "FLAG", "BK1", "BK2"};
|
const QStringList m_columnName = {"CARID", "IPADDR", "CARCLASS", "X_MCH", "KSCX", "CARNAME", "FLAG", "BK1", "BK2"};
|
||||||
|
|
||||||
std::array<SelectOption*, ID_MAX_carinfo> m_options;
|
std::array<SelectOption*, ID_MAX_carinfo> m_options;
|
||||||
TDBCarInfos m_carinfo;
|
TDBCarInfos m_carinfo;
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1211</width>
|
<width>1236</width>
|
||||||
<height>529</height>
|
<height>529</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -44,7 +44,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
<y>50</y>
|
<y>50</y>
|
||||||
<width>1191</width>
|
<width>1221</width>
|
||||||
<height>471</height>
|
<height>471</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -52,7 +52,7 @@
|
|||||||
<widget class="QComboBox" name="IPADDR">
|
<widget class="QComboBox" name="IPADDR">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>216</x>
|
<x>210</x>
|
||||||
<y>10</y>
|
<y>10</y>
|
||||||
<width>90</width>
|
<width>90</width>
|
||||||
<height>30</height>
|
<height>30</height>
|
||||||
@ -62,7 +62,7 @@
|
|||||||
<widget class="QLabel" name="label_8">
|
<widget class="QLabel" name="label_8">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>160</x>
|
<x>154</x>
|
||||||
<y>15</y>
|
<y>15</y>
|
||||||
<width>51</width>
|
<width>51</width>
|
||||||
<height>21</height>
|
<height>21</height>
|
||||||
@ -78,7 +78,7 @@
|
|||||||
<widget class="QLabel" name="label_9">
|
<widget class="QLabel" name="label_9">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>310</x>
|
<x>304</x>
|
||||||
<y>15</y>
|
<y>15</y>
|
||||||
<width>71</width>
|
<width>71</width>
|
||||||
<height>21</height>
|
<height>21</height>
|
||||||
@ -94,7 +94,7 @@
|
|||||||
<widget class="QComboBox" name="CARCLASS">
|
<widget class="QComboBox" name="CARCLASS">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>386</x>
|
<x>380</x>
|
||||||
<y>10</y>
|
<y>10</y>
|
||||||
<width>90</width>
|
<width>90</width>
|
||||||
<height>30</height>
|
<height>30</height>
|
||||||
@ -104,7 +104,7 @@
|
|||||||
<widget class="QLabel" name="label_10">
|
<widget class="QLabel" name="label_10">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>488</x>
|
<x>633</x>
|
||||||
<y>15</y>
|
<y>15</y>
|
||||||
<width>31</width>
|
<width>31</width>
|
||||||
<height>21</height>
|
<height>21</height>
|
||||||
@ -120,7 +120,7 @@
|
|||||||
<widget class="QComboBox" name="KSCX">
|
<widget class="QComboBox" name="KSCX">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>526</x>
|
<x>670</x>
|
||||||
<y>10</y>
|
<y>10</y>
|
||||||
<width>90</width>
|
<width>90</width>
|
||||||
<height>30</height>
|
<height>30</height>
|
||||||
@ -130,7 +130,7 @@
|
|||||||
<widget class="QComboBox" name="CARNAME">
|
<widget class="QComboBox" name="CARNAME">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>694</x>
|
<x>840</x>
|
||||||
<y>10</y>
|
<y>10</y>
|
||||||
<width>90</width>
|
<width>90</width>
|
||||||
<height>30</height>
|
<height>30</height>
|
||||||
@ -140,9 +140,9 @@
|
|||||||
<widget class="QComboBox" name="BK1">
|
<widget class="QComboBox" name="BK1">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>970</x>
|
<x>1080</x>
|
||||||
<y>10</y>
|
<y>10</y>
|
||||||
<width>90</width>
|
<width>51</width>
|
||||||
<height>30</height>
|
<height>30</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -150,9 +150,9 @@
|
|||||||
<widget class="QComboBox" name="BK2">
|
<widget class="QComboBox" name="BK2">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>1110</x>
|
<x>1169</x>
|
||||||
<y>10</y>
|
<y>10</y>
|
||||||
<width>90</width>
|
<width>61</width>
|
||||||
<height>30</height>
|
<height>30</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -160,7 +160,7 @@
|
|||||||
<widget class="QLabel" name="label_11">
|
<widget class="QLabel" name="label_11">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>788</x>
|
<x>925</x>
|
||||||
<y>15</y>
|
<y>15</y>
|
||||||
<width>41</width>
|
<width>41</width>
|
||||||
<height>21</height>
|
<height>21</height>
|
||||||
@ -176,7 +176,7 @@
|
|||||||
<widget class="QLabel" name="label_12">
|
<widget class="QLabel" name="label_12">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>1075</x>
|
<x>1135</x>
|
||||||
<y>15</y>
|
<y>15</y>
|
||||||
<width>31</width>
|
<width>31</width>
|
||||||
<height>21</height>
|
<height>21</height>
|
||||||
@ -192,7 +192,7 @@
|
|||||||
<widget class="QLabel" name="label_13">
|
<widget class="QLabel" name="label_13">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>620</x>
|
<x>765</x>
|
||||||
<y>15</y>
|
<y>15</y>
|
||||||
<width>68</width>
|
<width>68</width>
|
||||||
<height>21</height>
|
<height>21</height>
|
||||||
@ -208,7 +208,7 @@
|
|||||||
<widget class="QLabel" name="label_14">
|
<widget class="QLabel" name="label_14">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>936</x>
|
<x>1045</x>
|
||||||
<y>15</y>
|
<y>15</y>
|
||||||
<width>31</width>
|
<width>31</width>
|
||||||
<height>21</height>
|
<height>21</height>
|
||||||
@ -224,7 +224,33 @@
|
|||||||
<widget class="QComboBox" name="FLAG">
|
<widget class="QComboBox" name="FLAG">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>834</x>
|
<x>970</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>71</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_15">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>473</x>
|
||||||
|
<y>15</y>
|
||||||
|
<width>51</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>X_MCH</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QComboBox" name="X_MCH">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>530</x>
|
||||||
<y>10</y>
|
<y>10</y>
|
||||||
<width>90</width>
|
<width>90</width>
|
||||||
<height>30</height>
|
<height>30</height>
|
||||||
|
|||||||
@ -265,14 +265,6 @@ bool ReplayWrapper::replayTrackTypeInitExam(const TTrackData::Ptr& data)
|
|||||||
return false;
|
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))
|
if(!replayCheckSdkVersion(info.sdkver))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -370,36 +362,6 @@ void ReplayWrapper::replayTrackTypeRealExam(const TTrackData::Ptr& data)
|
|||||||
{
|
{
|
||||||
std::string strReal(data->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());
|
int codeValue = examJudgeRealExam(strReal.c_str(), strReal.length());
|
||||||
TASSERT(codeValue == codeSuccess, "");
|
TASSERT(codeValue == codeSuccess, "");
|
||||||
|
|
||||||
|
|||||||
@ -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. nitem1 ? CL8("免考") : CL8("不免考")));
|
||||||
//m_ui->stuBeg->addItem(CL8("模拟灯光(监管)免考:") + (value. nitem41 ? 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.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("(非增驾)")));
|
m_ui->stuBeg->addItem(CL8("增驾模式标志:") + kit::toString(value.zeng)+(value.zeng ? CL8("(增驾") : CL8("(非增驾)")));
|
||||||
//ksxm ykxm kfxm
|
//ksxm ykxm kfxm
|
||||||
for(int i = 0; i < m_items.size(); i++)
|
for(int i = 0; i < m_items.size(); i++)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user