From 75b3600a5cf0222f89f7024f74ca76536b17dbca Mon Sep 17 00:00:00 2001 From: lixiao <932184220@qq.com> Date: Wed, 14 May 2025 14:19:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E5=88=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/cpp/sdk/common/HVersion.h | 2 +- entry/src/main/cpp/sdk/common/Tools.cpp | 15 ++ entry/src/main/cpp/sdk/common/Tools.h | 3 + entry/src/main/cpp/sdk/exam/ExamCarSub2.cpp | 30 +++- entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp | 37 ++++- entry/src/main/cpp/sdk/exam/ExamSensor.cpp | 157 +++++++++--------- entry/src/main/cpp/sdk/exam/ExamSensor.h | 1 + entry/src/main/cpp/sdk/exam/IExamCar.cpp | 20 +++ entry/src/main/cpp/sdk/exam/IExamCar.h | 1 + .../src/main/cpp/sdk/exam/IExamCarAbstract.h | 2 + .../src/main/cpp/sdk/graphic/GraphicImage.cpp | 11 +- .../cpp/sdk/judge/sub3/Sub3Judge02Qbxx.cpp | 10 ++ .../main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.h | 2 +- .../cpp/sdk/judge/sub3/Sub3Judge11Kbtc.cpp | 35 ++-- .../cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp | 3 +- 15 files changed, 226 insertions(+), 103 deletions(-) diff --git a/entry/src/main/cpp/sdk/common/HVersion.h b/entry/src/main/cpp/sdk/common/HVersion.h index 25e2bf04..50fe437a 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 "2505091540b" +#define JUDGE_VERSION_STAMP "2505132200b" #if JUDGE_USE_OLD # undef JUDGE_VERSION_STAMP # define JUDGE_VERSION_STAMP "2411121010b.old" diff --git a/entry/src/main/cpp/sdk/common/Tools.cpp b/entry/src/main/cpp/sdk/common/Tools.cpp index 797e0a6a..6a348c93 100644 --- a/entry/src/main/cpp/sdk/common/Tools.cpp +++ b/entry/src/main/cpp/sdk/common/Tools.cpp @@ -1,6 +1,21 @@ #include "Tools.h" +#include "HVersion.h" #include "Loggerxx.h" +bool Tools::checkVersion(const std::string& version) +{ + std::vector ver = Tools::split(version, "."); + //int major = std::atoi(ver[0].c_str()); + //int minor = std::atoi(ver[1].c_str()); + //int patch = std::atoi(ver[2].c_str()); + std::string v3 = ver[3]; + if(v3.back() == 'b') + { + v3.pop_back(); + } + return (v3 < "2505121242"); +} + int64 Tools::nowTime() { return std::chrono::duration_cast diff --git a/entry/src/main/cpp/sdk/common/Tools.h b/entry/src/main/cpp/sdk/common/Tools.h index 66083ada..de223227 100644 --- a/entry/src/main/cpp/sdk/common/Tools.h +++ b/entry/src/main/cpp/sdk/common/Tools.h @@ -13,6 +13,8 @@ class Tools { public: + + static bool checkVersion(const std::string& version); //获取当前系统时间,单位:毫秒 static int64 nowTime(); //壁钟,防止有人篡改系统时间,导致考试有些评判项目计时限时不准 @@ -190,6 +192,7 @@ public: //获取当前机器的CPU逻辑核心数 static int getCpuProcessors(); + }; #endif // TOOLS_H diff --git a/entry/src/main/cpp/sdk/exam/ExamCarSub2.cpp b/entry/src/main/cpp/sdk/exam/ExamCarSub2.cpp index 412b5dd7..dffce997 100644 --- a/entry/src/main/cpp/sdk/exam/ExamCarSub2.cpp +++ b/entry/src/main/cpp/sdk/exam/ExamCarSub2.cpp @@ -284,13 +284,35 @@ bool ExamCarSub2::examMarkItem(ExamItemCode itemNo, const std::string& serial, b void ExamCarSub2::examNonGps(TChuanGan* cg) { - const TGpsInfo& gps = cg->real.gps; - if(!gps.rtkEnabled || !gps.valid() || cg->real.gps.errorFlag) + const TGpsInfo* gps = nullptr; + bool ok = true; + const TGpsInfo* gps1 = &cg->real.gps; + //如果gps1异常了就直接报gps1,如gps1正常就检查gps2 + if(!gps1->rtkEnabled || !gps1->valid() || gps1->errorFlag) + { + gps = gps1; + ok = false; + } + else + { + ExamCarType cartype = carType(); + if(IS_A2C6(cartype)) + { + const TGpsInfo* gps2 = &cg->real.gps2; + if(!gps2->rtkEnabled || !gps2->valid() || gps2->errorFlag) + { + gps = gps2; + ok = false; + } + } + } + + if(!ok) { if(m_nontime == 0) { - m_nontime = gps.sj; - m_nongps = gps; + m_nontime = Tools::nowTime(); + m_nongps = *gps; createEventNonGps({TNonGpsReport, m_nongps}); //上报GPS异常数据 } else diff --git a/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp b/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp index fed0a8ab..08778168 100644 --- a/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp +++ b/entry/src/main/cpp/sdk/exam/ExamCarSub3.cpp @@ -268,7 +268,7 @@ bool ExamCarSub3::Init_KM3_Global() const TDBCarInfo* carInfo = TableCarInfo->findCarInfo(carId); if(nullptr == carInfo || carInfo->CARCLASS.empty()) { - logerror("database not find carID=%d or carClass=%p is empty, init error", carId, carInfo); + logerror("database carInfo error, carID=%d, carInfo=0x%p, carClass=%s", carId, carInfo, carInfo->CARCLASS.c_str()); return false; } TASSERT_BOOL(carInfo->CARCLASS == carClass(), ""); @@ -409,7 +409,8 @@ bool ExamCarSub3::Init_KM3_Global() //当前时间到达夜考时间点了 //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((isExamMode() && (dt.hour*60 + dt.minute >= m_car.Night_Hr*60 + m_car.Night_Mi)) || (isExamDrill() && isSfyk())) { //如果不考模拟灯光 if(!m_stuInfo.dmndg) @@ -4405,13 +4406,35 @@ bool ExamCarSub3::examMarkItem(ExamItemCode itemNo, const std::string& serial, b void ExamCarSub3::examNonGps(TChuanGan* cg) { - const TGpsInfo& gps = cg->real.gps; - if(!gps.rtkEnabled || !gps.valid() || cg->real.gps.errorFlag) + const TGpsInfo* gps = nullptr; + bool ok = true; + const TGpsInfo* gps1 = &cg->real.gps; + //如果gps1异常了就直接报gps1,如gps1正常就检查gps2 + if(!gps1->rtkEnabled || !gps1->valid() || gps1->errorFlag) + { + gps = gps1; + ok = false; + } + else + { + ExamCarType cartype = carType(); + if(IS_A2C6(cartype)) + { + const TGpsInfo* gps2 = &cg->real.gps2; + if(!gps2->rtkEnabled || !gps2->valid() || gps2->errorFlag) + { + gps = gps2; + ok = false; + } + } + } + + if(!ok) { if(m_nontime == 0) { m_nontime = Tools::nowTime(); - m_nongps = gps; + m_nongps = *gps; createEventNonGps({TNonGpsReport, m_nongps}); //上报GPS异常数据 } else @@ -5848,6 +5871,8 @@ void ExamCarSub3::Calc_LaneDistance_Tail() { calcToLaneArc2(Lj, road->Area, body.b1_b_G, body.ZH_W_b_G, RTKKM3_Tail.Wheel_LB_ToBaseLine); calcToLaneArc2(Lj, road->Area, body.b1_b_G, body.YH_W_b_G, RTKKM3_Tail.Wheel_RB_ToBaseLine); + calcToLaneArc2(Lj, road->Area, body.b1_b_G, body.b(RF_I), RTKKM3_Tail.Body_RF_ToBaseLine); + calcToLaneArc2(Lj, road->Area, body.b1_b_G, body.b(RB_I), RTKKM3_Tail.Body_RB_ToBaseLine); } //else if(p == 3) //3:车身左侧与本车道左侧距离 @@ -5870,6 +5895,8 @@ void ExamCarSub3::Calc_LaneDistance_Tail() { calcToLaneLine(Lj, road->Area.Pts, body.b1_b_G, body.ZH_W_b_G, RTKKM3_Tail.Wheel_LB_ToBaseLine); calcToLaneLine(Lj, road->Area.Pts, body.b1_b_G, body.YH_W_b_G, RTKKM3_Tail.Wheel_RB_ToBaseLine); + calcToLaneLine(Lj, road->Area.Pts, body.b1_b_G, body.b(RF_I), RTKKM3_Tail.Body_RF_ToBaseLine, true); + calcToLaneLine(Lj, road->Area.Pts, body.b1_b_G, body.b(RB_I), RTKKM3_Tail.Body_RB_ToBaseLine, true); } //else if(p == 3) //3:车身左侧与本车道左侧距离 diff --git a/entry/src/main/cpp/sdk/exam/ExamSensor.cpp b/entry/src/main/cpp/sdk/exam/ExamSensor.cpp index ef701bf9..60f1cc12 100644 --- a/entry/src/main/cpp/sdk/exam/ExamSensor.cpp +++ b/entry/src/main/cpp/sdk/exam/ExamSensor.cpp @@ -168,14 +168,19 @@ bool ExamSensor::convertDatas(TChuanGan* cg) //} //航向角(默认是按诺瓦泰的数据格式定义的,所以要加上180度) 1:天宝(北云)/C1 2:诺瓦泰 - if(gps.bklx == boardTypeTB) + //2505121242兼容这个时间之前的特殊版卡类型做航向角转换处理的 + if(Tools::checkVersion(m_car->carVerison())) { - gps.hxj += 180.0; - } - if(gps.hxj >= 360.0) - { - gps.hxj -= 360.0; + if(gps.bklx == boardTypeTB) + { + gps.hxj += 180.0; + } + if(gps.hxj >= 360.0) + { + gps.hxj -= 360.0; + } } + //实际上车这里经纬度要转化,测试的数据都是转化好的 gps.jd = GpsMath::convertGpsCoord2(gps.jd); gps.wd = GpsMath::convertGpsCoord2(gps.wd); @@ -190,19 +195,23 @@ bool ExamSensor::convertDatas(TChuanGan* cg) if(IS_A2C6(cartype)) { TGpsInfo& gps2 = cg->real.gps2; - if(gps2.bklx == boardTypeTB) + //2505121242兼容这个时间之前的特殊版卡类型做航向角转换处理的 + if(Tools::checkVersion(m_car->carVerison())) { - gps2.hxj += 180.0; - } - if(gps2.hxj >= 360.0) - { - gps2.hxj -= 360.0; + if(gps2.bklx == boardTypeTB) + { + gps2.hxj += 180.0; + } + if(gps2.hxj >= 360.0) + { + gps2.hxj -= 360.0; + } } //实际上车这里经纬度要转化,测试的数据都是转化好的 gps2.jd = GpsMath::convertGpsCoord2(gps2.jd); gps2.wd = GpsMath::convertGpsCoord2(gps2.wd); #if !JUDGE_USE_INSPECT - gps.sd *= GPS_VEL_COEFF; //无锡所检测不需要乘这个系数,因为我们实际用的时候是gps速度,无锡所是加工后的数据 + gps2.sd *= GPS_VEL_COEFF; //无锡所检测不需要乘这个系数,因为我们实际用的时候是gps速度,无锡所是加工后的数据 #endif } @@ -995,82 +1004,80 @@ void ExamSensor::setStatus(TChuanGan* cg, CarMoveState s) bool ExamSensor::filterWrong(TChuanGan* cg) { - TGpsInfo& gps = cg->real.gps; - - //位置差分, 角度差分 - if(gps.dwzt == gpsStatusNARROW_INT && gps.jdzt == gpsStatusANGLE) - { - gps.rtkEnabled = true; - } - else - { - gps.rtkEnabled = false; - logwarning("rtk Enabled not, dwzt=%d, jdzt=%d", gps.dwzt, gps.jdzt); - } - TChuanGan* his = m_car->historyChuanGan(); - gps.errorFlag = false; - //过滤GPS漂移数据 - if(his != nullptr) + bool ok1 = filterGpsWrong(&cg->real.gps, his != nullptr ? &his->real.gps : nullptr); + bool ok2 = true; + ExamCarType cartype = m_car->carType(); + if(IS_A2C6(cartype)) { - const TGpsInfo& h_gps = his->real.gps; - int64 interval = std::abs(gps.sj - h_gps.sj); - //如果是正常连续数据才判断漂移,有可能是断网收不到数据,然后过了几秒又收到数据距离会远超过限制距离 - if(interval < 1*SECOND) - { - TGPSPoint p1 = h_gps.to(); - TGPSPoint p2 = gps.to(); - double distance = GpsMath::calcGpsDistanceCM(p1, p2, p1.gc); - if(distance > DEVIATION_RANGE_DISTANCE_CM) - { - logwarning("deviation rang distance=%0.2f CM", distance); - gps.errorFlag = true; - } - double angle = std::abs(gps.hxj - h_gps.hxj); - if(angle > DEVIATION_RANGE_ANGLE_MIN && angle < DEVIATION_RANGE_ANGLE_MAX) - { - logwarning("deviation rang angle=%0.2f", angle); - gps.errorFlag = true; - } - } + ok2 = filterGpsWrong(&cg->real.gps2, his != nullptr ? &his->real.gps2 : nullptr); } m_car->examNonGps(cg); - if(gps.errorFlag) + //ExamSubject sub = m_car->examSubject(); + //if(ExamSubject2 == sub) + //{ + // return ok1 && ok2; + //} + //else if(ExamSubject3 == sub) + //{ + // return ok1 && ok2; + //} + + return ok1 && ok2; +} + +bool ExamSensor::filterGpsWrong(TGpsInfo* gps, const TGpsInfo* h_gps) +{ + //位置差分, 角度差分 + if(gps->dwzt == gpsStatusNARROW_INT && gps->jdzt == gpsStatusANGLE) { - logwarning("errorFlag invalid dwzt=%d, jdzt=%d, jd=%0.8f, wd=%0.8f", gps.dwzt, gps.jdzt, gps.jd, gps.wd); + gps->rtkEnabled = true; + } + else + { + gps->rtkEnabled = false; + logwarning("rtk Enabled not, dwzt=%d, jdzt=%d", gps->dwzt, gps->jdzt); + } + + gps->errorFlag = false; + //过滤GPS漂移数据 + if(h_gps != nullptr) + { + int64 interval = std::abs(gps->sj - h_gps->sj); + //如果是正常连续数据才判断漂移,有可能是断网收不到数据,然后过了几秒又收到数据距离会远超过限制距离 + if(interval < 1*SECOND) + { + TGPSPoint p1 = h_gps->to(); + TGPSPoint p2 = gps->to(); + double distance = GpsMath::calcGpsDistanceCM(p1, p2, p1.gc); + if(distance > DEVIATION_RANGE_DISTANCE_CM) + { + logwarning("deviation rang distance=%0.2f CM", distance); + gps->errorFlag = true; + } + double angle = std::abs(gps->hxj - h_gps->hxj); + if(angle > DEVIATION_RANGE_ANGLE_MIN && angle < DEVIATION_RANGE_ANGLE_MAX) + { + logwarning("deviation rang angle=%0.2f", angle); + gps->errorFlag = true; + } + } + } + + if(gps->errorFlag) + { + logwarning("errorFlag invalid dwzt=%d, jdzt=%d, jd=%0.8f, wd=%0.8f", gps->dwzt, gps->jdzt, gps->jd, gps->wd); return false; } - if(!gps.valid()) + if(!gps->valid()) { - logwarning("gps invalid dwzt=%d, jdzt=%d, jd=%0.8f, wd=%0.8f", gps.dwzt, gps.jdzt, gps.jd, gps.wd); + logwarning("gps invalid dwzt=%d, jdzt=%d, jd=%0.8f, wd=%0.8f", gps->dwzt, gps->jdzt, gps->jd, gps->wd); return false; } - ExamSubject sub = m_car->examSubject(); - if(ExamSubject2 == sub) - { - //return gps.rtkEnabled == true && gps.valid(); - return gps.valid(); //2025-03-20 modify - } - else if(ExamSubject3 == sub) - { - if(gps.valid()) //20240811 yhy - { - //数据是正常的 - } - else - { - //if(m_car->historyCount() > 0) - //{ - // cloneWith(m_car->historyChuanGan(), cg); - //} - } - return true; - } - return true; } diff --git a/entry/src/main/cpp/sdk/exam/ExamSensor.h b/entry/src/main/cpp/sdk/exam/ExamSensor.h index 0e4072a8..5276616d 100644 --- a/entry/src/main/cpp/sdk/exam/ExamSensor.h +++ b/entry/src/main/cpp/sdk/exam/ExamSensor.h @@ -26,6 +26,7 @@ public: virtual bool calcCarBody(TChuanGan* cg); //过滤异常数据 virtual bool filterWrong(TChuanGan* cg); + virtual bool filterGpsWrong(TGpsInfo* gps, const TGpsInfo* h_gps); //计算考车状态(科目三) virtual bool GetCarDirStauts(TChuanGan* cg); //计算考车状态(科目二) diff --git a/entry/src/main/cpp/sdk/exam/IExamCar.cpp b/entry/src/main/cpp/sdk/exam/IExamCar.cpp index 18c636e2..c3ba0db9 100644 --- a/entry/src/main/cpp/sdk/exam/IExamCar.cpp +++ b/entry/src/main/cpp/sdk/exam/IExamCar.cpp @@ -483,6 +483,26 @@ void IExamCar::examPerformSummary() exam.bxjl = dis.y*10; //单位毫米 所以要乘10 exam.hint = m_message; exam.lane = historyChuanGan()->RTKKM3; + ExamCarType cartype = carType(); + if(IS_A2C6(cartype)) + { + //对于牵引车,车身距离都是指的挂车(车厢),如果车轮,车前轮指的是车头的轮子,车后轮指的挂车最后面轮子,和军华确认过的 2025-05-13 + const TRTKResult& rtkTail = historyChuanGan()->RTKKM3_Tail; + TRTKResult& lane = exam.lane; + + lane.Body_LF_ToLeftEdge = rtkTail.Body_LF_ToLeftEdge; + lane.Body_LB_ToLeftEdge = rtkTail.Body_LB_ToLeftEdge; + lane.Body_RF_ToRightEdge = rtkTail.Body_RF_ToRightEdge; + lane.Body_RB_ToRightEdge = rtkTail.Body_RB_ToRightEdge; + lane.Body_RF_ToBaseLine = rtkTail.Body_RF_ToBaseLine; + lane.Body_RB_ToBaseLine = rtkTail.Body_RB_ToBaseLine; + + lane.Wheel_RB_ToRightEdge = rtkTail.Wheel_RB_ToRightEdge; + lane.Wheel_RB_ToBaseLine = rtkTail.Wheel_RB_ToBaseLine; + lane.Wheel_LB_ToRightEdge = rtkTail.Wheel_LB_ToRightEdge; + lane.Wheel_LB_ToBaseLine = rtkTail.Wheel_LB_ToBaseLine; + + } std::string data = XParser::toAny(exam); FactoryExamService->examJudgeCallbackPerformToCaller(data.c_str(), data.size()); diff --git a/entry/src/main/cpp/sdk/exam/IExamCar.h b/entry/src/main/cpp/sdk/exam/IExamCar.h index 5edb854c..7aa03a69 100644 --- a/entry/src/main/cpp/sdk/exam/IExamCar.h +++ b/entry/src/main/cpp/sdk/exam/IExamCar.h @@ -89,6 +89,7 @@ public: virtual ISurveyCarAbstract* carModel() MEANS { return m_carModel; } virtual int modelSize() MEANS { return m_carModel->size(); } virtual ExamSubject examSubject() MEANS { return ExamSubject(m_carInfo->kskm); } + virtual const std::string& carVerison() MEANS { return m_carInfo->sdkver; } virtual int carID() MEANS { return m_carInfo->kchm; } virtual const std::string& carClass() MEANS { return m_carInfo->name; } virtual int carCode() MEANS { return m_carCode; } diff --git a/entry/src/main/cpp/sdk/exam/IExamCarAbstract.h b/entry/src/main/cpp/sdk/exam/IExamCarAbstract.h index 0c4c1f80..67e30787 100644 --- a/entry/src/main/cpp/sdk/exam/IExamCarAbstract.h +++ b/entry/src/main/cpp/sdk/exam/IExamCarAbstract.h @@ -104,6 +104,8 @@ public: virtual int modelSize() const = 0; //考试科目 virtual ExamSubject examSubject() const = 0; + //轨迹初始化版本号 + virtual const std::string& carVerison() const = 0; //考车ID virtual int carID() const = 0; //考车名称 diff --git a/entry/src/main/cpp/sdk/graphic/GraphicImage.cpp b/entry/src/main/cpp/sdk/graphic/GraphicImage.cpp index 2b2258bb..94aa126f 100644 --- a/entry/src/main/cpp/sdk/graphic/GraphicImage.cpp +++ b/entry/src/main/cpp/sdk/graphic/GraphicImage.cpp @@ -136,12 +136,6 @@ const char* GraphicImage::image() #endif int offset_y = 1; - if(m_showVersion) - { - drawText(Pointi(1, offset_y), JUDGE_VERSION_INFO, RGB_BLUE, 16); - offset_y += 16; - } - if(m_showTime) { int64 tick = Tools::nowTime(); @@ -149,6 +143,11 @@ const char* GraphicImage::image() drawText(Pointi(1, offset_y), tm.c_str(), RGB_PERILLA, 16); offset_y += 16; } + //if(m_showVersion) + //{ + // drawText(Pointi(1, offset_y), JUDGE_VERSION_INFO, RGB_BLUE, 16); + // offset_y += 16; + //} toRgb(); return (const char*)m_rgb; diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.cpp b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.cpp index d5466de3..d60df9d2 100644 --- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.cpp +++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.cpp @@ -52,6 +52,16 @@ bool Sub3Judge02Qbxx::dealJudgeEnter() m_exam->TestPro = ItemProFlagJudge; //ToDo2:生成进项目事件 + + if(m_car->examAlready(Sub3ItemType01Sczb) && m_car->examAlready(Sub3ItemType41Mndg)) + { + if(!m_sound_qibu) + { + m_sound_qibu = true; + m_car->createEventSound({m_exam->ItemNo, sound::sub3_402001}); + } + } + return true; } diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.h b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.h index 6307bdea..1d3a3501 100644 --- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.h +++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge02Qbxx.h @@ -69,7 +69,7 @@ protected: private: TSub3Item02Qbxx m_itemv; bool m_Pub_First_QiBu_Flag = false; //起步方向灯和喇叭 只判一次 第一次进起步项目才判 - + bool m_sound_qibu = false; //**********************以下是新科目三************************ private: //起步项目中,车辆状态从停止切换前进前10s内,头部姿态没有大于左后侧角度【23度】 diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge11Kbtc.cpp b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge11Kbtc.cpp index 3351b09e..c81de233 100644 --- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge11Kbtc.cpp +++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge11Kbtc.cpp @@ -554,7 +554,7 @@ void Sub3Judge11Kbtc::DoStatus_2() else if(s430 == "1") //拉手刹放空挡 { //20180625 - if(sor.ssc == SYES && sor.dw == 0) + if(sor.ssc == SYES && (sor.dw == 0 || sor.dw == 10)) { m_itemv.Status = 3; return; @@ -699,8 +699,14 @@ void Sub3Judge11Kbtc::DoStatus_3() } //压路边线 - Judge_KBTC_YaXian(); - Judge_KBTC_YaXian_Tail(); //A2C6-20250314 + if(!IS_A2C6(m_carType)) + { + Judge_KBTC_YaXian(); + } + else + { + Judge_KBTC_YaXian_Tail(); //A2C6-20250314 + } } else @@ -1077,8 +1083,14 @@ void Sub3Judge11Kbtc::DoStatus_4() { if(m_car->rtkEnabled()) { - Judge_KBTC_YaXian(); - Judge_KBTC_YaXian_Tail(); //A2C6-20250314 + if(!IS_A2C6(m_carType)) + { + Judge_KBTC_YaXian(); + } + else + { + Judge_KBTC_YaXian_Tail(); //A2C6-20250314 + } } } // 20171211 } @@ -1307,7 +1319,6 @@ void Sub3Judge11Kbtc::Judge_KBTC_YaXian() RightJL1_RF = RTKKM3_1.Body_RF_ToBaseLine; RightJL2_RF = RTKKM3_2.Body_RF_ToBaseLine; - RightJL0_RB = RTKKM3_0.Body_RB_ToBaseLine; RightJL1_RB = RTKKM3_1.Body_RB_ToBaseLine; RightJL2_RB = RTKKM3_2.Body_RB_ToBaseLine; @@ -1457,16 +1468,20 @@ void Sub3Judge11Kbtc::Judge_KBTC_YaXian_Tail() RightJL1_RF = RTKKM3_Tail_1.Body_RF_ToBaseLine; RightJL2_RF = RTKKM3_Tail_2.Body_RF_ToBaseLine; - RightJL0_RB = RTKKM3_Tail_0.Body_RB_ToBaseLine; RightJL1_RB = RTKKM3_Tail_1.Body_RB_ToBaseLine; RightJL2_RB = RTKKM3_Tail_2.Body_RB_ToBaseLine; } else { - RightJL0_RF = RTKKM3_Tail_0.Wheel_RF_ToBaseLine; - RightJL1_RF = RTKKM3_Tail_1.Wheel_RF_ToBaseLine; - RightJL2_RF = RTKKM3_Tail_2.Wheel_RF_ToBaseLine; + //对于牵引车,车身距离都是指的挂车(车厢),如果车轮,车前轮指的是车头的轮子,车后轮指的挂车最后面轮子,和军华确认过的 2025-05-13 + const TRTKResult& RTKKM3_0 = m_car->historyRtkKM3(0); + const TRTKResult& RTKKM3_1 = m_car->historyRtkKM3(1); + const TRTKResult& RTKKM3_2 = m_car->historyRtkKM3(2); + + RightJL0_RF = RTKKM3_0.Wheel_RF_ToBaseLine; + RightJL1_RF = RTKKM3_1.Wheel_RF_ToBaseLine; + RightJL2_RF = RTKKM3_2.Wheel_RF_ToBaseLine; RightJL0_RB = RTKKM3_Tail_0.Wheel_RB_ToBaseLine; RightJL1_RB = RTKKM3_Tail_1.Wheel_RB_ToBaseLine; diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp index d7d0a589..e2d5527b 100644 --- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp +++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp @@ -868,7 +868,8 @@ void Sub3Judge20Comm::CallMoNiDengGuang() if(m > 0) { - if(m_engineTick > 0 && cg->tkCnt - m_engineTick > m*SECOND) + //if(m_engineTick > 0 && cg->tkCnt - m_engineTick > m*SECOND) + if(m_engineTick > 0 && m_car->timeElapsed() > m*SECOND) { JUDGE_MARK_SUB3(20, "94", true); }