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