新评判

This commit is contained in:
lixiao 2025-05-20 14:41:24 +08:00
parent fd44196a1d
commit 88f00ddfcf
10 changed files with 117 additions and 79 deletions

View File

@ -27,7 +27,7 @@
#define JUDGE_VERSION_MAJOR 1
#define JUDGE_VERSION_MINOR 0
#define JUDGE_VERSION_PATCH 3
#define JUDGE_VERSION_STAMP "2505132200b"
#define JUDGE_VERSION_STAMP "2505201042b"
#if JUDGE_USE_OLD
# undef JUDGE_VERSION_STAMP
# define JUDGE_VERSION_STAMP "2411121010b.old"

View File

@ -635,27 +635,29 @@ bool ExamCarSub3::Init_KM3_Global()
//只有掉头项目才有右掉头一说 //20150516
examItem->bYdt = (itemNo == Sub3ItemType12Dtxx && parm1->TXT2 == "ydt" ? true : false); //是否右掉头
//如果是满分学习的 czlx=1 m_stuInfo.czlx //满分学习非必考项目,一开始考试就通知外壳合格变绿
//满分学习,如果都没配默认都要做, 如果配了就是配哪个做哪个没配不做
//大车夜考,如果都没配默认都算完成, 如果配了就是配哪个做哪个没配不做
//如果是满分学习的 czlx=1 m_stuInfo.czlx
if(m_stuInfo.mfxx && itemNo != Sub3ItemType13Yjxs && IS_A1A2A3B1B2C6(cartype))
{
if(m_car.MFXX_KSXM != "")
{
std::string s = "," + std::to_string(itemNo) + ",";
std::string ss = "," + m_car.MFXX_KSXM + ",";
if(!Tools::pos(s, ss)) //非必考直接算完成变绿
if(!Tools::pos(s, ss))
{
examItem->NoID = true;
KM3EndItem(itemNo,true,false);
}
}
//对夜考项目进行特殊处理 //大车夜考非必考项目,一开始考试就通知外壳合格变绿
}
//对夜考项目进行特殊处理
if(m_car.Night_ID == true && itemNo != Sub3ItemType13Yjxs)
{
std::string s = "," + std::to_string(itemNo) + ",";
std::string ss = "," + m_car.DC_YK_Must + ",";
if(!Tools::pos(s, ss)) //非必考直接算完成变绿
if(!Tools::pos(s, ss))
{
//examItem->Item_Color = itemStateHg;
//examItem->TestPro = ItemProFlagIdle;
//examItem->FinishFlag = true;
examItem->NoID = true;
KM3EndItem(itemNo,isReplay(),false); //轨迹回放工具回放模式要发时间,不然项目不好变绿
}
@ -3230,22 +3232,23 @@ void ExamCarSub3::Km3NewEnterItem()
TChuanGan* cg = m_cg;
//1、非前进状态忽略
TChuanGan* his1 = historyChuanGan(1);
if(cg->move != moveForward || his1->move != moveForward)
if(cg->move == moveBackward || his1->move == moveBackward)
{
return;
}
if(cg->move == moveStop && his1->move == moveStop &&
cg->real.gps.sd < 0.1 && his1->real.gps.sd < 0.1)
{
return;
}
//if(cg->move != moveForward || his1->move != moveForward)
//{
// return;
//}
//2、速度是0也退出
//if(cg->real.gps.sd < 0.1 || his1->real.gps.sd < 0.1) return; //ai_CS_GPS
//3、非差分状态忽略//非差分状态不允许进项目
//417参数为1,在差分状态才能进入自动评判项目 417没设的话不判断是不是差分状态 20250428
if(TableSysSet->get417() == "1")
{
if(!cg->real.gps.rtkEnabled)
{
return;
}
}
if(!cg->real.gps.valid()) return;
static constexpr double KK0 = GPS_DIV;
@ -3409,11 +3412,18 @@ void ExamCarSub3::Km3NewEnterItem()
if(mpt->point_type > 0 && Tools::pos("+", Road_Code) == false)
{
}
else
{
//417参数为1,在差分状态才能进入自动评判项目 417没设的话不判断是不是差分状态 20250428
if(TableSysSet->get417() == "1" && !cg->real.gps.rtkEnabled)
{
}
else
{
ReadItemByPoint(crossPointNo);
}
}
//(*2024-03-05*)
//ReadItemByPoint(crossPointNo);

View File

@ -3,7 +3,14 @@
#define ENTER_ITEM_AND_MARK(mark) \
{ \
if(doEnterItem()) { loginfo("enter item %d-%s", itemNo(), itemName().c_str()); } \
if(doEnterMark(true)) { loginfo("enter item %d-%s", itemNo(), itemName().c_str()); } \
m_existMark = true; \
{ mark; }; \
}
#define ENTER_COMM_AND_MARK(mark) \
{ \
if(doEnterMark(false)) { loginfo("enter item %d-%s", itemNo(), itemName().c_str()); } \
m_existMark = true; \
{ mark; }; \
}
@ -107,11 +114,11 @@ JUDGE_STAGE_IMPL(Sub2Judge03Cftc, Sub2CftcStage0)
}
}
//中停扣分(前进状态中停的)
if(cgcu->move == moveForward && cg01->move == moveStop && cg05->move == moveStop && cg10->move == moveStop)
{
ENTER_ITEM_AND_MARK(JUDGE_MARK_ITEM_MUST_MORE(MARK_SUB2_CFTC_02)); //add enter
}
//中停扣分(前进状态中停的) //侧方只有在开始后退以后才扣中停
//if(cgcu->move == moveForward && cg01->move == moveStop && cg05->move == moveStop && cg10->move == moveStop)
//{
// ENTER_ITEM_AND_MARK(JUDGE_MARK_ITEM_MUST_MORE(MARK_SUB2_CFTC_02)); //add enter
//}
//穿越结束线了
if(m_endLineFlag == true && cgcu->move == moveForward)
@ -353,6 +360,15 @@ bool Sub2Judge03Cftc::doEnterItem()
return false;
}
bool Sub2Judge03Cftc::doEnterMark(bool isItemMark)
{
if(isItemMark) //只有项目扣分才会进项目事件,压线通用评判不会触发进项目
{
return doEnterItem();
}
return true;
}
void Sub2Judge03Cftc::calcCrossLine()
{
TChuanGan* cgcu = m_car->historyChuanGan();
@ -530,14 +546,14 @@ void Sub2Judge03Cftc::touchLineMark(LineNum num)
}
else
{
ENTER_ITEM_AND_MARK(JUDGE_MARK_COMM_MUST_MORE(MARK_SUB2_COMM_91)); //标准的
ENTER_COMM_AND_MARK(JUDGE_MARK_COMM_MUST_MORE(MARK_SUB2_COMM_91)); //标准的
}
}
else if(m_stage == Sub2CftcStage1 || m_stage == Sub2CftcStage2)
{
if(s609_2 == 1)
{
ENTER_ITEM_AND_MARK(JUDGE_MARK_COMM_MUST_MORE(MARK_SUB2_COMM_91));
ENTER_COMM_AND_MARK(JUDGE_MARK_COMM_MUST_MORE(MARK_SUB2_COMM_91));
}
else
{

View File

@ -56,6 +56,7 @@ private:
void calcCrossLine();
//执行进项目
bool doEnterItem();
bool doEnterMark(bool isItemMark);
//判断是否非标准测绘项目L23线 非标准返回false
bool isStandard();

View File

@ -175,6 +175,7 @@ void Sub3Judge12Lkdt::dealJudgeItem()
ctl->ZXD_GuanBi = true;
}
m_exam->TestPro = ItemProFlagEnd;
JudgeFlagEnd();
return;
}
}
@ -236,6 +237,7 @@ void Sub3Judge12Lkdt::dealJudgeItem()
if(cg->ai_ljjl_cm - m_itemv.StopLine_JLCM >= dis2)
{
m_exam->TestPro = ItemProFlagEnd;
JudgeFlagEnd();
return;
}
}
@ -326,6 +328,7 @@ void Sub3Judge12Lkdt::dealJudgeItem()
if(cg->ai_ljjl_cm - m_itemv.Start_JL_CM > m_itemv.XMJL_Mi * 100)
{
m_exam->TestPro = ItemProFlagEnd;
JudgeFlagEnd();
return;
}
}
@ -394,6 +397,7 @@ void Sub3Judge12Lkdt::dealJudgeItem()
if(OKFlag == true)
{
m_exam->TestPro = ItemProFlagEnd;
JudgeFlagEnd();
return;
}
}
@ -429,22 +433,6 @@ void Sub3Judge12Lkdt::dealJudgeItem()
str += buf;
}
if(m_exam->TestPro == ItemProFlagEnd)
{
if(m_itemv.LuK_Fx_PointNo > 0)
{
if(m_itemv.OKFangXiangPt_SuccessFlag == false && m_itemv.ReadNextLuDuanFlag == true)
{
JUDGE_MARK_SUB3(12, "41", true);
}
}
if(m_itemv.slowDown.Js_Passed == false)
{
//对可能出现危险的情形未采取减速、鸣喇叭等安全措施
JUDGE_MARK_SUB3(12, "46", false); //20170505
}
}
str += msg;
showStatus(JUDGE_UTF8S("[大路口掉头]") + str);
@ -465,6 +453,25 @@ void Sub3Judge12Lkdt::JudgeFXD()
}
}
void Sub3Judge12Lkdt::JudgeFlagEnd()
{
if(m_exam->TestPro == ItemProFlagEnd)
{
if(m_itemv.LuK_Fx_PointNo > 0)
{
if(m_itemv.OKFangXiangPt_SuccessFlag == false && m_itemv.ReadNextLuDuanFlag == true)
{
JUDGE_MARK_SUB3(12, "41", true);
}
}
if(m_itemv.slowDown.Js_Passed == false)
{
//对可能出现危险的情形未采取减速、鸣喇叭等安全措施
JUDGE_MARK_SUB3(12, "46", false); //20170505
}
}
}
void Sub3Judge12Lkdt::NS3JudgeVision_41501(bool opportunity)
{
//不观察左、右方交通情况,转弯通过路口时,未观察侧前方交通情况,

View File

@ -36,6 +36,7 @@ public:
protected:
void JudgeFXD();
void JudgeFlagEnd();
private:
TSub3Item12Lkdt m_itemv;

View File

@ -12,8 +12,10 @@ export default class TcpClient {
private localIpPort: string = ''
private oppositeIp: string = ''
private oppositeIpPort: string = ''
private num: number = 0//重连次数
private tcpSendNum: number = 0//重连次数
private num: number = 0
//重连次数
private tcpSendNum: number = 0
//重连次数
private folderPath
private tcp: any = null
@ -145,13 +147,13 @@ export default class TcpClient {
console.log(`${TAG} TCP send error ${JSON.stringify(err)}`)
this.tcpSendNum++
if (!globalThis.getCloseTcp && this.tcpSendNum > 10) {
globalThis.getCloseTcp = true
setTimeout(async () => {
getTCP(true)
}, 3000)
this.tcpSendNum = 0
return
}
globalThis.getCloseTcp=true
// this.writeLog({
// time:dateFormat(new Date()),
// message: `${TAG} TCPsend error ${JSON.stringify(err)}`,
@ -201,16 +203,19 @@ export default class TcpClient {
// callback(value.message)
});
}
async writeLog(param) {
// const fileUtil = new FileUtil(globalThis.context)
// fileUtil.editFile(`${this.folderPath}/plcLog.txt`, JSON.stringify(param)+`\n`)
}
async initPath() {
return
const fileUtil = new FileUtil(globalThis.context)
const date = dateFormat(new Date).split(' ')[0]
this.folderPath = await fileUtil.initFolder(`/PLC/${date}`);
}
offTcp(callback) {
console.log(TAG, 'tcpofff')
this.tcp.off('testTagofmessg', callback);

View File

@ -61,8 +61,6 @@ struct Index {
private avPlayer
private context = getContext(this) as common.UIAbilityContext;
private serviceExtProxy: IdlServiceExtProxy
@State judgeVersion: string = ""
private version: string = judgeConfig.version
@Styles
commStyle(){
@ -199,12 +197,12 @@ struct Index {
Column() {
Row() {
Column() {
Text('V外壳' + this.version)
Text('V外壳' + globalThis.version)
.fontColor('#CCAE7A')
.fontSize(18 * globalThis.ratio)
.width('30%')
.margin({ bottom: 10 })
Text('V评判' + this.judgeVersion)
Text('V评判' + globalThis.judgeVersion)
.fontColor('#CCAE7A')
.fontSize(18 * globalThis.ratio)
.width('30%')
@ -600,7 +598,6 @@ struct Index {
}
async initParams() {
this.judgeVersion = await examJudgeVersion()
await getUDP(this.context, false)
this.loading = false
await getDeviceInfo(this.context)

View File

@ -117,6 +117,7 @@ export default struct RealTime {
async aboutToDisappear() {
clearInterval(this.timer)
}
async aboutToAppear() {
this.version = (await examJudgeVersion()) + "/" + judgeConfig.version

View File

@ -1,7 +1,7 @@
//考试回放开关
export const judgeConfig = {
// 外壳版本号
version: "2025.05.15.01",
version: "2025.05.20.01",
//本地目录开关
isTrajectoryOpen: false,
//是否开启拍照