/* * 说明: 评判项目头文件 * * 作者: 杨海洋 * 日期: 2023-05-11 */ #ifndef HJUDGEITEM_H #define HJUDGEITEM_H #include "HUtility.h" #include "IJudgeBrokerInterface.h" struct StageArg { StageArg(short) {}; }; //using StageArg = short; using IJudgeBrokerStage = IJudgeBrokerInterface; #define SecondsBetween(x1, x2) int64(std::abs((x1)-(x2))/1000) #define MilliSecondsBetween(x1, x2) int64(std::abs((x1)-(x2))) //===============科目三考试过程结构体定义================= struct TNS3PoseSysset { //左,右,低头,置信度,左后,右后 int left = 0; int right = 0; int low = 0; int score = 0; int leftBack = 0; int rightBack = 0; }; struct TNS3LKGreen //新科目三 { bool isGreen = false; int64 timeCount = 0; bool ts_green_to = false; bool markFlag = false; }; struct TNS3LRObserve //新科目三 { bool isJudge = false; int64 obsTime = 0; //左右侧观察角度 }; struct TNS3BianDao //新科目三 { bool isJudge = false; int64 leftBack = 0; int64 rightBack = 0; }; struct TNS3Chaoche //新科目三 { bool isJudge41401 = false; bool isJudge41403 = false; bool isJudge41405 = false; int64 toLeft = 0; //向左变道时 int64 timeRight = 0; //在超车道上 int64 toRight = 0; //向右变道时 }; //TDiaoTouJianSuRec struct TSlowDown { //减速慢行不扣分条件 //非1,2,3,4,-车速 Or 踩刹 Or 松油门 //1-车速 or 踩刹, //2-车速, //3-车速 and 踩刹 //4-脚刹车 //减速要求 bool Js_Passed = false; //是否减速成功 bool Js_Passed1 = false; //如果用到组合的子项1 bool Js_Passed2 = false; //如果用到组合的子项2 }; struct ISub3Item05Lkzx { int8 LuK_Type = 0; //路口类型 1-平交 2-环岛 int LuK_Fx_PointNo = INVALID_INDEX; //正确行驶方向 应该经过的 路口端点point_no bool LuK_TcRx = false; //停车让行标记 int LuK_TCSJ = 0; //路口内禁止停车时间(秒) double LuK_TCJL = 0; //越过停车线后X米后,不允许停车 int64 TC_TM = 0; //路口停车时的GetTickCountTest bool ReadNextLuDuanFlag = false; //路口端点标志 int XMJL_Mi = 0; //项目距离 20151214 int64 StopLine_TCTM = 0; //穿越停车线xx距离之后停车时刻的时间(穿越停车线之后xx距离内不允许停车不允许停车超过的时间) int StopLine_JLCM = 0; //穿越停车线时刻的距离 停止线时刻的距离 //减速类型: 减速慢行不扣分条件 // 非1,2,3,4,-车速 Or 踩刹 Or 松油门 // 1-车速 or 踩刹, //1: 30米前有刹车动作 // 2-车速, //2: 30米前车速降到了规定的速度(默认30KM/H) // 3-车速 and 踩刹 //3: 30米前有刹车动作,并且车速降到了规定的速度(默认30KM/H) // 4-脚刹车 //4: 30米前降过速度 int JianSu_LeiXing = 0; //对应参数Sysset522 int JianSu_SuDu = 0; //减速速度阈值,减速类型1和2会用到 //对应参数Sysset522 bool Cross_TZX_Flag = false; //穿越停止线标志 bool Judge_TCX = false; //停车线评判 bool Check_CheDao = false; //车道检查 bool LKTCKF = false; //路口停车扣分评判 bool OKFangXiangPt_SuccessFlag = false; //结束点标志 int Start_JL_CM = 0; //进项目时刻的累计距离 bool Step3Flag = false; //读到下一个路段标志 std::vector Step3PtArr; //读到下一个路段的穿越点 std::string Step3RoadData; //读到下一个路段信息 bool Mark_20_73_Flag = false; //20_73 扣分标记 #if JUDGE_USE_INSPECT bool Is_TCRX_Item = false; bool TCRX_FinishFlag = false; #endif TNS3LKGreen green; TNS3LRObserve observe; }; struct TSub3Item12Lkdt { int8 LuK_Type = 0; //路口类型 1-平交 2-环岛 int LuK_Fx_PointNo = INVALID_INDEX; //正确行驶方向 应该经过的 路口端点point_no bool LuK_TcRx = false; //停车让行标记 int LuK_TCSJ = 0; //路口内禁止停车时间(秒) double LuK_TCJL = 0; //越过停车线后X米后,不允许停车 int64 TC_TM = 0; //路口停车时的GetTickCountTest bool ReadNextLuDuanFlag = false; //路口端点标志 std::string CSLuDuan; //初始路段 int XMJL_Mi = 0; //项目距离 20151214 int64 StopLine_TCTM = 0; //穿越停车线xx距离之后停车时刻的时间(穿越停车线之后xx距离内不允许停车不允许停车超过的时间) int StopLine_JLCM = 0; //穿越停车线时刻的距离 停止线时刻的距离 //减速类型: 减速慢行不扣分条件 // 非1,2,3,4,-车速 Or 踩刹 Or 松油门 // 1-车速 or 踩刹, //1: 30米前有刹车动作 // 2-车速, //2: 30米前车速降到了规定的速度(默认30KM/H) // 3-车速 and 踩刹 //3: 30米前有刹车动作,并且车速降到了规定的速度(默认30KM/H) // 4-脚刹车 //4: 30米前降过速度 int JianSu_LeiXing = 0; //对应参数Sysset522 int JianSu_SuDu = 0; //减速速度阈值,减速类型1和2会用到 //对应参数Sysset522 bool Cross_TZX_Flag = false; //穿越停止线标志 int64 Enter_TK = 0; //进入时刻的时间TK double LuK_Zx_Deg = 0; //变化角度阀值,转向方向灯 bool LuK_FXD_AngleOKFlag = false; bool Judge_TCX = false; //停车线评判 bool Check_CheDao = false; //车道检查 bool LKTCKF = false; //路口停车扣分评判 bool OKFangXiangPt_SuccessFlag = false; //结束点标志 bool JudgeFXD_Flag = false; //路口评判方向灯标志 bool Temp_ZFXD = false; //左右方向灯标志 int Start_JL_CM = 0; //进项目时刻的累计距离 bool Step3Flag = false; //读到下一个路段标志 std::vector Step3PtArr; //读到下一个路段的穿越点 std::string Step3RoadData; //读到下一个路段信息 bool Mark_12_42_Flag = false; //12_42 扣分标记 TSlowDown slowDown; TNS3LKGreen green; TNS3LRObserve observe; }; struct TSub3Item12Ptdt { int FinishDiaoTou_JiaoDu_Change = 0; //掉头角度阈值 int XMJL_Mi = 0; //项目距离 int CSJL_Mi = 0; //初始距离(单位:米) int Max_DC_CiShu = 0; //倒车后退次数限制 double CS_GPS_D = 0.0; //GPS角度 bool FXD_TM_OK_Flag = false; bool b_FXD = false; //是否打方向灯 20160405 bool b_JSC = false; //20170505 int Temp_XS = 0; //减速要求 20170824 int BianDaoJL = 0; //变道行驶距离(单位:米) bool MarkFlag_12_42 = false; //扣分标识 bool MarkFlag_12_43 = false; bool MarkFlag_12_45 = false; bool MarkFlag_12_46 = false; bool MarkFlag_20_73 = false; bool MarkFlag_20_20 = false; bool Judge_DengGuang_Flag = false; TSlowDown slowDown; Linei line; //用于新的角度变化计算方式 TMapping mapping; }; struct TSub3Item15Lkzz { int8 LuK_Type = 0; //路口类型 1-平交 2-环岛 int LuK_Fx_PointNo = 0; //正确行驶方向 应该经过的 路口端点point_no bool LuK_TcRx = false; //停车让行标记 int LuK_TCSJ = 0; //路口内禁止停车时间(秒) double LuK_TCJL = 0.0; //越过停车线后X米后,不允许停车 int64 TC_TM = 0; //路口停车时的GetTickCountTest bool ReadNextLuDuanFlag = false; //路口端点标志 int XMJL_Mi = 0; //项目距离 20151214 int64 StopLine_TCTM = 0; //穿越停车线xx距离之后停车时刻的时间(穿越停车线之后xx距离内不允许停车不允许停车超过的时间) int StopLine_JLCM = 0; //穿越停车线时刻的距离 停止线时刻的距离 //减速类型: 减速慢行不扣分条件 // 非1,2,3,4,-车速 Or 踩刹 Or 松油门 // 1-车速 or 踩刹, //1: 30米前有刹车动作 // 2-车速, //2: 30米前车速降到了规定的速度(默认30KM/H) // 3-车速 and 踩刹 //3: 30米前有刹车动作,并且车速降到了规定的速度(默认30KM/H) // 4-脚刹车 //4: 30米前降过速度 int JianSu_LeiXing = 0; //对应参数Sysset522 int JianSu_SuDu = 0; //减速速度阈值,减速类型1和2会用到 //对应参数Sysset522 bool Cross_TZX_Flag = false; //穿越停止线标志 int64 Enter_TK = 0; //进入时刻的时间TK double LuK_Zx_Deg = 0; //变化角度阀值,转向方向灯 bool LuK_FXD_AngleOKFlag = false; bool Judge_TCRX_JianSu = false; //评判减速和停车让行 bool Judge_TCX = false; //停车线评判 bool Check_CheDao = false ; //车道检查 bool LKTCKF = false; //路口停车扣分评判 bool OKFangXiangPt_SuccessFlag = false; //结束点标志 bool JudgeFXD_Flag = false; //路口评判方向灯标志 bool Temp_ZFXD = false, Temp_ZFXD3s = false; //左右方向灯标志 int64 Temp_ZFXD_TM = 0; //打左方向灯时刻的时间 int Start_JL_CM = 0; //进项目时刻的累计距离 bool Step3Flag = false; //读到下一个路段标志 std::vector Step3PtArr; //读到下一个路段的穿越点 std::string Step3RoadData; //读到下一个路段信息 bool ZhongXinDian3MarkFlag = false; //扣分标识 bool Mark_20_73_Flag = false; //扣分标识 #if JUDGE_USE_INSPECT bool read5FlagShapeNo = false; #endif TNS3LKGreen green; TNS3LRObserve observe; }; struct TSub3Item16Lkyz { int8 LuK_Type = 0; //路口类型 1-平交 2-环岛 int LuK_Fx_PointNo = 0; //正确行驶方向 应该经过的 路口端点point_no bool LuK_TcRx = false; //停车让行标记 int LuK_TCSJ = 0; //路口内禁止停车时间(秒) double LuK_TCJL = 0.0; //越过停车线后X米后,不允许停车 int64 TC_TM = 0; //路口停车时的GetTickCountTest bool ReadNextLuDuanFlag = false; //路口端点标志 int XMJL_Mi = 0; //项目距离 20151214 int64 StopLine_TCTM = 0; //穿越停车线xx距离之后停车时刻的时间(穿越停车线之后xx距离内不允许停车不允许停车超过的时间) int StopLine_JLCM = 0; //穿越停车线时刻的距离 停止线时刻的距离 //减速类型: 减速慢行不扣分条件 // 非1,2,3,4,-车速 Or 踩刹 Or 松油门 // 1-车速 or 踩刹, //1: 30米前有刹车动作 // 2-车速, //2: 30米前车速降到了规定的速度(默认30KM/H) // 3-车速 and 踩刹 //3: 30米前有刹车动作,并且车速降到了规定的速度(默认30KM/H) // 4-脚刹车 //4: 30米前降过速度 int JianSu_LeiXing = 0; //对应参数Sysset522 int JianSu_SuDu = 0; //减速速度阈值,减速类型1和2会用到 //对应参数Sysset522 bool Cross_TZX_Flag = false; //穿越停止线标志 int64 Enter_TK = 0; //进入时刻的时间TK double LuK_Zx_Deg = 0; //变化角度阀值,转向方向灯 bool LuK_FXD_AngleOKFlag = false; bool Judge_TCRX_JianSu = false; //评判减速和停车让行 bool Judge_TCX = false; //停车线评判 bool Check_CheDao = false; //车道检查 bool LKTCKF = false; //路口停车扣分评判 bool OKFangXiangPt_SuccessFlag = false; //结束点标志 bool JudgeFXD_Flag = false; //路口评判方向灯标志 bool Temp_YFXD = false, Temp_YFXD3s = false; //左右方向灯标志 int64 Temp_YFXD_TM = 0; //打右方向灯计时刻的时间 int Start_JL_CM = 0; //进项目时刻的累计距离 bool Step3Flag = false; //读到下一个路段标志 std::vector Step3PtArr; //读到下一个路段的穿越点 std::string Step3RoadData; //读到下一个路段信息 bool Mark_20_73_Flag = false; //扣分标识 TNS3LKGreen green; TNS3LRObserve observe; }; struct TSub3Item04Bgcd //变更车道 { //Status: //0,1,2: 未发生变道 //3:变道成功 //4: 结束项目(变道后10米) //13:正在变道(未完成变道)(比如:SysSet[414]=1,然后GPS基准点已经变过来了,但是车轮还没有过来) int8 Status = 0; double Temp_Right_JL = 0.0; //进入项目时离右边线距离 int Temp_LJJL_1 = 0; //进入项目时的累计距离 int Temp_LJJL_2 = 0; //变道发生时的累计距离 int Temp_XMJL = 0; //项目距离 米 bool Temp_ZFXD3s = false, Temp_YFXD3s = false, Temp_ZFXD = false, Temp_YFXD = false; int64 Temp_ZFXD_TM = 0, Temp_YFXD_TM = 0; //打左右方向灯时刻的时间 int Temp_BasePointInLaneNo = 0, Temp_BaseLaneCount = 0; //超车前的车道号,车道数 int8 Temp_No_BGCD = 0; //是否不需要变道,只要判断距离就可以了 int Temp_No_BGCD_YuZhi = 0; //不需要实际变道模式下,车辆离右边线距离变化阀值 bool Temp_No_BGCD_FinishFlag = false; bool Temp_Add_XMJL_Flag = false; //是否要增加项目距离 bool Mark_4_42_Flag = false; //扣分标识 bool Mark_4_43_Flag = false; //扣分标识 bool LeftBianDaoFlag = false; //左侧变道标识 bool RightBianDaoFlag = false; //右侧变道标识 bool JudgeFXD = false; //新科目三 TNS3BianDao bian; }; struct TSub3Item10Ccxx //超车 { //1:初始超车道阶段 2:初始普通车道阶段 3:左侧超车阶段 4:完成左侧超车阶段 //5:回原车道阶段 6:完成回原车道阶段 int8 Status = 0; bool CS_CCD_Flag = false; //初始是否在超车到标记 int Temp_LJJL_CCD_PTCD = 0; //进入项目时的累计距离(超车道->普通车道) int Temp_LJJL_2 = 0; //变道发生时的累计距离 int64 Temp_TM = 0; //变道、超车以前后轮都过线的时间 int Start_LJJL = 0; //(单位米) int Temp_XMJL = 0; //项目距离 米 bool GuiZhou_ZFXD_Flag = false; //贵州地区左方向灯标志 bool Temp_ZFXD3s, Temp_ZFXD = false; //左右方向灯标志 int64 Temp_ZFXD_TM = 0; //打左方向灯计时刻的时间 int64 Temp_ZFXD_GZ_TM = 0; //贵州需求打左方向灯时间 20180903 int64 Lt_YJ_TM = 0; //远近光灯变化时间 int64 Lt_YJ_ID = false; //远近光灯变化 int St4_CCD_MinJL = 0; //超车后,超车道需要行驶的距离 int Temp_BasePointInLaneNo = 0, Temp_BaseLaneCount = 0; //超车前的车道号,车道数 int CS_CCD_Max_XSJL = 0; //超车道上最多可以行驶的距离 //初始超车道,二次超车最小行驶距离(如果初始在超车道上,需要驶离超车道, //然后行驶规定的距离后,再次进入超车道超车) int CS_CCD_ErCiChaoChe_Min_XSJL = 0; //初始在超车道行驶到普通车道,要行使一段距离才能再次进入超车道 bool CS_CCD_ErCiChaoChe_Min_XSJL_OK = false; //初始在超车道行驶到普通车道,要行使一段距离才能再次进入超车道状态 int64 St4_HuiYuanCheDao_TM = 0; //超车回原车道时刻 int St4_HuiYuanCheDao_Miao = 0; //超车回原车道时间 int Temp_CC_CSSJ = 0; //超车达到车速的持续时间 20150507 bool Temp_CC_SD_OKFlag = false; //超车达到车速的要求 20150507 int Temp_CC_CS = 0; //超车需达到的车速 20150507 bool Mark_CC_CS_Flag = false; //超车速度扣分 int Temp_CC_CSOK_LastHaoMiao = 0; //超车已达车速的时间 20150507 int64 Temp_CC_OK_KSSJ = 0; //超车已达车速的开始时间 20150507 int Temp_CS_GuiZhouKind = 0; //超车速度要求阶段(贵州) bool Temp_LaBa_Flag = false; //超车过程中是否已按了喇叭 20151223 周口 int64 GuangXi_CCD_KSSJ = 0; //20181016 进入超车道时计时 广西梧州 int Temp_CCDW = 0; //超车挡位要求 int Temp_CCDW_Type = 0; //超车档位要求,格式:档位^类型 类型为0表示达到一次即可,为1表示超车道上要全程达到。 bool Temp_No_ChaoChe = false; //无需超车(比如:在最左侧车道上,lyggy需求) int Temp_St2_CheDaoHao = 0; //普通车道的车道号 int Temp_St2_CheDaoCount = 0; //普通车道的车道数 bool Mark_20_60_Flag = false; //扣分标识 bool Mark_10_41_Flag = false; //扣分标识 bool Mark_10_42_Flag = false; //扣分标识 bool Mark_10_43_Flag = false; //扣分标识 bool Mark_20_42_Flag = false; //扣分标识 bool Mark_10_07_Flag = false; //扣分标识 bool Mark_10_02_Flag = false; //扣分标识 bool Mark_13_06_Flag = false; //扣分标识 bool pullingLane = false; // 是否播报驶离超车道语音 TNS3Chaoche observe; }; struct TSub3Item03Zxxs //直线行驶 { double KZCS = 0; //控制车速 double KZSDFW = 0; //控制速度范围 int BiaoZhun_CS = 0; //达标车速 int JianSu_YuZhi = 0; //减速阀值 int parm_hcjl = 0, parm_xmjl = 0;//直线行驶:缓冲距离,项目距离 int KouFen_JianGe_HaoMiao = 0, KFCS = 0; //扣分时间间隔 单位毫秒 20151218 河北沧州 int64 KFSJ = 0; //扣分时间,间隔多少秒内不能重复扣分 int Gps_Offset = 0; //直线行驶增加GPS校验(空或0-不起效;>0偏移距离cm,建议350) int Init_LJJL = 0; //进项目时刻的累计距离 int Init_D = 0; //边距离限制阈值 int Max_CS = 0; //记录最高车速 double init_Jd = 0.0; //20171013 差分初始角度 int Kind = 0; //20171220 评判点类型(0-右边距离 1-左边距离) double JiaoDu_BianHua_YuZhi = 0; //角度变化阈值 bool Judge_CS = false; //车速是否要评判 0:不评判 1:评判(默认为0) //20180323 int Judge_FXD = 0; //是否判方向灯 bool WavFlag2 = false; //语音提示,请保持直线行驶 标识 bool Mark_20_73_Flag = false; //扣分标识 bool Mark_3_04_Flag = false; //扣分标识 //新科目三 TNS3LRObserve observe; }; struct TSub3Item06Rxhd //人行横道 6 { int8 Status = 0; //1-进项目到人行横道之前 2-经过人行横道线 3-等待项目结束 int tmp_ljjlcm = 0; //经过人行横道对应经纬度时的累计距离CM 20140730 int tmp_xmjl = 0; //厘米 bool tmp_xrtg = false; //行人通过标识 int tmpljjl = 0; //进入项目时刻的累计距离 bool tmp_Face_ID = false; //是否已判断过面部 bool b_Jsc = false; //南京地区需要有脚刹车动作 20150120 int64 tcsj = 0; //停车时间,初始是0 integer 20190305 int jiansu_leixing = 0; //减速类型 int jiansu_sudu = 0; //减速速度阈值 int tmp_jskf = 0; //是否判减速扣分标识 连续的人行横道间隔不超过30米,不需判断减速 int last_jl = 0; //两个人行横道间隔小于50米不判减速 int WavKind = 0; //SysSet[512]-->3 学校、公交、人行横道模拟项目是否语音标识,0:不需要 1:需要 2024-03-18 yhy 增加 TNS3LRObserve observe; }; struct TSub3Item07Xxqy //学校区域 7 { int Temp_LJJL_CM = 0; //进入项目时的累计距离 CM 20140730 int Temp_XMJL = 0; //项目距离 米 int Temp_XS = 0; //限速值 bool ShanDongKM3_JianSu_Flag = false; bool HasMark_7_02 = false, JSC_Flag = false; //是否扣了速度分,是否脚刹动作 bool Temp_TCRX = false; //是否有行人通过 20160516 int tcsj = 0; //停车时间 20190305 bool Judge_JSC = false; //是否增加脚刹判断 20190314 bool SJXR_Flag = false; //是否有随机行人标记 int Temp_JL_NanJing = 0; //南京特殊地区用 bool Forbidden_LaBa_Flag = false; //学校区域是否禁止按喇叭:0(默认)-不扣;1-扣分(20-51) int WavKind = 0; //SysSet[512]-->3 学校、公交、人行横道模拟项目是否语音标识,0:不需要 1:需要 2024-03-18 yhy 增加 TNS3LRObserve observe; }; struct TSub3Item08Gjzt //公交站台 8 { int Temp_LJJL_CM = 0; //进入项目时的累计距离 CM 20140730 int Temp_XMJL_Mi = 0; //项目距离 米 int Temp_XS = 0; //限速值 bool Finish_JSC = false; //完成脚刹车动作 bool Finish_JianSu = false; //完成减速动作 int8 JudgeKind = 0; //0:不需要评判减速相关的 1:需要评判减速相关的 bool Temp_TCRX = false; //是否有行人通过 20160516 int64 Temp_TCSJ = 0; //停车时间 20190305 bool Judge_JSC = false; //是否增加脚刹判断 20190314 bool Must_JianSu_Flag = false; //必须减速标志 bool EndXMJL_Flag = false; //结束项目距离标志 int WavKind = 0; //SysSet[512]-->3 学校、公交、人行横道模拟项目是否语音标识,0:不需要 1:需要 2024-03-18 yhy 增加 int s509_10 = 0; #if JUDGE_USE_INSPECT bool inspectJSC = false; //完成脚刹车动作 #endif TNS3LRObserve observe; }; struct TSub3Item09Hcxx //会车 9 { int64 Enter_TK = 0; //进项目的时刻 int Enter_Wheel_LF_ToRightEdge = 0; //左前轮离右边线距离 int Enter_JL = 0; //进项目时的距离 int Enter_LeftBodyCenter_JL = 0; //左车身中心点离左边线距离(特殊地点版本) int Enter_CS = 0; //进入时刻的车速 bool Finish_YouCeXingShi = false; //完成右侧行驶标志(完成了会车动作) int Temp_XS = 0; //速度限制 int HC_XMJL = 0; //会车项目距离 20160419 bool ZXLine_Flag = false; //中心虚线标志 int HeFa_YouBianJu = 0; //会车时候,最大右边线距离,必须小于等于这个值才认为右边距离是合法的 int YouBianJu_XSJL = 0; //会车靠右持续行驶距离(不设置就不做这块限制) int Temp_YouBianJu_XSJL = 0; //靠右边行驶的临时距离 int JianSu_Timing = 0; //减速评判时机(进项目后的时间)秒 TSlowDown slowDown; }; struct TSub3Item01Sczb //上车准备 1 { int8 Status = 0; int newtype = 0; //绕车一周模式 int time_tishi = 0; //时间提示 int time_raoche = 0; int time_koufen = 0; int time_tishi_js = 0; int time_koufen_js = 0; int time_guanmen_js = 0; int time_raoche_js = 0; //radarSignal: array[0..4] of String; //超声波信号数组 int radarCount = 0; //超声波数量 bool bsound_dh = false; //提示点火 bool FinishFlag = false; }; struct TSub3Item41Mndg //模拟灯光 41 { int P_zys = 0; //灯光操作允许总延时(毫秒) int P_CSOK_YanShi = 0; //一开始灯光就是正确的评判延时(毫秒) int P_YJGD_JT_YS = 0; //远近光灯交替操作延时 bool P_IF_Err_Kf = false; //灯光错了是否扣分 int8 P_Op_Cnt = 0; //操作次数 int P_yyjgsj = 0; //语音间隔时间(毫秒) 20170606 bool Lt_YesID = false; int64 Lt_YJ_TM = 0; //远近光灯变化时间 int64 Lt_LastChange_TM = 0; //灯光最后变化时间 int Lt_YJ_cs = 0; //远近光灯变化次数 20150327 //std::array Lt_Change; //: array[0..6] of string; //0:未定义 1:示宽,2:双跳,3:雾灯,4:远光,5:近光,6:交替, 注意:记录灯光的变化,示宽是从有到无,其他是从无到有 std::string Lt_Change; std::string Lt_Change_Last; int8 ItemNo = 0, ItemStatus = 0; //St 控制具体项目 St1控制指定项目的状态 int64 Snd_Wav_Start_TM = 0; //语音开始时间 int64 Snd_Wav_End_TM = 0; //语音结束时间 bool Valid = false; int8 SubWav1 = 0, SubWav2 = 0; //语音序号 int8 Op_Step = 0; //操作到第几步 std::string Op_Rd_str, Op_Rd_str1; //: string[100]; //操作顺序字符串 int P_Ccopys = 0; //超车灯光时间 20140812 int Cc_Jd = 0; //超车阶段 0--语音阶段 1-左方向灯 2-交替 3-右方向灯 4-回归原位 20140812 std::array Cc_beforeYfd; //: array[0..2] of integer; //超车前是不是右方向灯 20140726 第一位表示右方向灯,第二位表示 双跳灯 第三位表示 雾灯 20140812 bool b3szfxd = false; //20150803 bool CheSu_KouFen = false; //有车速是否扣分 int lstcstd = 0; //20171009临时停车双跳灯要求 1:要打 int mndg_add_lukou = 0; int64 stdjs = 0; //20171018 临时停车时双跳灯计时 std::vector kflst; //: string[100]; //20171022 扣分列表 int64 yjjtbeg = 0, yjjtend = 0; //20171031 int LastSubItemNo = 0; int64 endTick = 0; bool endFlag = false; }; struct TSub3Item02Qbxx //起步 2 { int8 State = 0; //项目状态 bool Mark_2_09_Flag = false; bool is_radar = false; //视觉相关的 //考点系统参数---地点版本参数 int Sys502_11 = 0; int Sys524_4 = 0; int sys502_8_1 = 0; int sys502_8_2 = 0; int Temp_JL_CM = 0; bool Mark_ChuangDong = false; int64 ZhunBeiQiBuTK = 0; //Cardinal; int QiBu_LJJL_CM = 0; bool Error_SSC_Flag = false; //以下是溜车评判需要用到的变量 int PubMaxLCValue = 0; Pointi PubLCTCPtt; bool PubCanMarkLC50Flag = true; //注意初始必须是true //新科三参数 int64 obsTime = 0; }; struct TDwCs_Range { int High_Cs = 0; int Low_Cs = 0; }; struct TSub3Item14Jjdw //加减档 14 { int ItemPosI = 0; int Status = 0; int64 Enter_Tk = 0; // Cardinal; int Enter_Ljjl = 0; int JJDXS = 0; //加减挡位限时 int XMJL = 0; std::string dwsx_str = ""; //: string[100]; int Last_Dw = 0; int Last_Dw_kf = 0; //扣分时的最后档位 std::arrayDwCs_Range; //: array[0..10] of TDwCs_Range; int Enter_Dw = 0; //进项目时的档位 20140617 int Last_Lhq = 0; //离合器 20141030 // bSgXm: boolean; //手工进入项目 20141101 int bSgFs = 0; //手工进入方式,1:先加后减 2:先减后加 bool bMaxDwCs = false; //最高档时,车速没有达到要求值 20150201 int maxdw = 0; //要求加到最高的档位 20150201 int Ddsj = 0; //档位停留时间 20150526 int yysj = 0; //语音时间 20150526 // maxDwCssj: integer; //最高挡,车速达到要求持续时间 20160623 int64 maxDwCssc = 0; //: Cardinal; //最高挡,车速达到的持续时长 20160623 20200709 }; struct TSub3Item11Kbtc //靠边停车 { int8 Status = 0; //0-播报语音 1-语音结束,开始评判 到停车前 2-停车了但未确认,可能继续行驶 3-确认停车了 4-下车评判 int PPFXD = 0; //评判方向灯时机 0-达到指定的角度变化 1-停车前 int parm_xmjl = 0; //项目距离 double parm_Rtk_Ag = 0.0; //: real; //方向灯角度 20151013 差分角度 int parm_KaiMen_Status6 = 0; //开门后,多长时间,自动进入Status6( 关门处理阶段) int parm_Fxd3s = 0; int parm_ZSj = 0; //总用时 20160613 int Enter_ljjl= 0; //进项目累计距离 int64 Enter_Tk = 0; //: Cardinal; //进项目时间 int Entet_SJ = 0; //靠边时时间 20160613 double Enter_Rtk_Ag = 0.0;// real; // 进项目差分角度 20151013 bool yfxd = false, yfxd3s = false; int64 yfxd_tk= 0; // Cardinal; bool HasJudgeFXD = false; //方向动了标志 bool bJc = false, bJc1 = false, bJc2 = false; ///20150304 贵州考试结束下车关门前增加调整内外后视镜 int TingCheJiShi = 0; //20170215 停车计时 int jscnt = 0; //20170215 记次,控制语音 int tclssjs = 0, tclsscnt = 0; //20170223 茂名 停车拉手刹 int kbtcwc = 0; //20170310 int Parm_HanZhong_KBTC_SJ = 0; //靠边允许停车时间秒,必须在这个时间内拉手刹 //xhzt: integer; //20171020 //熄火状态 int kbtccs = 0; //20180317 靠边停车评判距离的次数,防止当时信号不好 int dcykkb = 0; //大车夜考模式 0:不启用 1:启用 20181015 int KaoShiJieShu_JS = 0; //考试结束计时 20181016 int Parm_BaoDing_TC_CheDaoJuLi = 0; //保定等特殊地区允许停车的车道距离 bool chongxindianhuo = false; //重新点火 int64 chongxindianhuo_tk = 0; //: Cardinal; int Parm_TC_KaiCheMen_ShiJian = 0; //停车后,多长时间内必须开车门 int64 TCZT_Tk = 0; // Cardinal; //进项目时间 //扣分相关的 bool Kf03 = false; bool Kf10 = false; bool Kf05 = false; bool Kf06 = false; //ZDTC: Boolean; //主动停车,不是因为熄火造成的停车 //以下是新科目三 int64 stopPose; //停车前内头部姿态 int64 doorPose; //打开车门前头部姿态 }; struct TRoad_Attr { std::string Road_Code; //: string[10]; std::string Attr_Str; //: string[30]; }; struct TDWErrorRec { int64 djtkCnt = 0; //切换计时时间毫秒 int djsc = 0; //切换时累计时长 毫秒 int Ljsc = 0; //累计时长 毫秒 }; struct TSub3Item20Comm_CJH //标准科目三综合评判 TKm3Itm20_CJH { int tmp_ljmc = 0; int oldlc, lcmc = 0; //历史溜车距离, 溜车累计脉冲 bool lcppks = false; //溜车评判开始 std::string currpos; //: string[100]; //获得gps的当前位置名称 int izz = 0, iyz = 0, ifxpidx = 0, ifxpflag = 0; // 原左转, 原右转计数, 方向盘数组指针, 方向盘标记: -1 左, 0: 中, 1: 右 std::array ibtkt; //: array[1..4] of Integer; int ifxdflag = 0, ifxdtkt = 0; //方向灯方向 方向灯开始时间 bool bqbfxd = false, bkbfxd = false; //起步方向灯, 靠边方向灯检查情况 int xhcs = 0; //熄火次数 int64 xhkftk = 0; //: Cardinal; //熄火扣分时间 int ItemNo = 0; int64 dtfxpmark; //: Cardinal; int64 lhqjs = 0, lhqjl = 0; //离合器计时 int kdhx = 0; int64 kdhx_tk = 0, kdhx_tk_lhq = 0; //: Cardinal; //20180209 int kdhx_dw = 0; int64 SongKaiShaChe_tk = 0; //: Cardinal; bool JieDaoFXD_Flag = false; int lhqxs = 0, lhqxjl = 0, lhq_kdhxxs = 0; //离合器限定时长 s 离合器限定距离 m int zdxhkf = 0; //20180608 由boolean 改成integer 型 熄火次数扣分, 1:根据PLC熄火次数 2:根据点火2,其它值:根据发动机转速为0或点火2+转速小于100 int fscys = 0; // 踩副刹时长 int DWKF_SJ = 0; int64 Mark_DW_CS_ZS_TK = 0; //: Cardinal; //挡位与车速或者转速不匹配扣分TK int KongYouMen_FDJ_YZ = 0; //空油门 发动机转速阀值 int KonbYouMen_FDJ_BS = 0; int ZXD_BGB_JL = 0; //转向灯不关闭距离 int ZXD_BGB_SJ = 0; // //转向灯不关闭时间 //制动不平顺时间 int ZDBPS_SJ = 0; int ZXD_Open_TempJL = 0; //记录转向灯打开一瞬间的累计距离 int zxd_bgbsj = 0; int zxd_kssj = 0; //档位车速控制 int8 dw_cs_dw2 = 0; int8 dw_cs_cs2 = 0; int8 dw_cs_sj2 = 0; short dw_cs_sl2 = 0; //: smallint; int8 dw_cs_dw1 = 0; int8 dw_cs_cs1 = 0; int8 dw_cs_sj1 = 0; short dw_cs_sl1 = 0; //: smallint; //方向控制不稳 double fxkzbwjd = 0.0; //: Single; double fxkzbwxz = 0.0; //: Single; //1,2挡距离限制 int dw12_1d_jl = 0; //1档距离 int dw12_2d_jl = 0; //2档距离 int dw12_3d_jl = 0; //1+2档累计距离 bool dw12_1d_kfrep = false, dw12_2d_kfrep = false, dw12_3d_kfrep = false; // 1,2挡重复扣分 int dw12_Ljjl1 = 0; //起效累计距离 int dw12_Ljjl1_new = 0; // bool dw12_Ljjl1_new_iskf = false; int dw12_Ljjl2 = 0; //起效累计距离 std::string dw12_1d_kf; //: string[100]; //扣分项 std::string dw12_2d_kf; //: string[100]; //扣分项 std::string dw12_3d_kf; //: string[100]; //扣分项 //20140529 int dw12_1d_sj = 0; //1档时间 int dw12_2d_sj = 0; //2档时间 int dw12_3d_sj = 0; //1+2档累计时间 int dw12_Ljsj1 = 0; //起效累计时间 int dw12_Ljsj2 = 0; //起效累计时间 int low_speed = 0; int low_speed_jl = 0; int low_speed_jl_count = 0; bool Gbdg_ID = false; //关闭灯光提示标志 int64 Gbdg_SndTk = 0; //: Cardinal; //关闭灯光提示时间 int64 Gbdg_EndTk = 0; //: Cardinal; int64 Gbdg_Kfyy = 0; //关闭灯光扣分延时 int BeforeBgcd_LaneNo = 0; //0-表示变更车道前没有在车道内,不判方向灯;判完方向灯将其置为0 bool BeforeBgcd_zfxd = false, BeforeBgcd_yfxd = false; //左右方向灯是否已开 bool BeforeBgcd_zfxd3s = false, BeforeBgcd_yfxd3s = false; //左右方向灯是否已3s int bgcd_fangxiang = 0; //bgcd_zidongchaoche: boolean; // int DW_CS_ERROR_DW = 0; //档位车速不匹配的 档位 ,dw_cs_err_dw_gd 高档 20150526 bool DW_CS_High_Flag = false; //低档车速过高 int64 DW_CS_ERROR_TK = 0; //: Cardinal; //档位车速不匹配的 开始时间 //20151029 bool dw_cs_err_LowDw_csj = false, dw_cs_err_LowDw_gd_csj = false; //低档车速过高 int64 DW_FDJZS_ERROR_TK = 0; // Cardinal; //档位与发动机转速不匹配的 开始时间 int DW_FDJZS_ERROR_DW = 0; //挡位与发动机转速不匹配的挡位 int Road_Attr_MaxCS = 0; int64 Road_Attr_MaxCS_Tm = 0; //: Cardinal; bool Road_Attr_NoDiaotou = false; std::array Road_Attr; //: array[0..500] of TRoad_Attr; int Road_Attr_LEN = 0; int Rxd_Face_Ljjl = 0; int Last_Dw = 0; //最后一次的有效档位 int Cs_ljZ = 0, Cs_lj0 = 0, Cs_lj1 = 0, Cs_lj2 = 0, Cs_js0 = 0, Cs_js1 = 0, Cs_js2 = 0; //20140418 sysset[400] 20180810 int Last_Wlzt = 0; //最后围栏状态 int cwlsj = 0; //出围栏时间 20140724 bool bZdKbTc = false; //项目结束后,自动报靠边停车项目 20140728 int ZdKbTcJl = 0; //自动报靠边停车的距离 20140728 int KbTcJl = 0; //符合自动报靠边停车的当前距离 int fdjdsint = 0; //发动机怠速计算因子 20140904 std::array DwCs_Range; //: array[1..10] of TDwCs_Range; //20141027 bool bXhBycs = false; //20141216;根据熄火次数扣熄火 int XhJgSj = 0; //20141218 熄火间隔时间 //parm_Z_Ac: real; //Z轴加速度阀值 20150112 //Parm_Z_sj: integer; //制动不平顺扣分时间 20150112 int zdsj = 0; //20150112 int cfssj = 0; //20150327 踩副踩时间 int zbksddsj = 0; // 准备考试允许等待时间 20150721 int zbksddtscs = 0; // 准备考试允许等待时间提示最大次数 20170508 bool bKsAqd = false; //是否一上车就系了安全带 20150722 int xsfx = 0; //0 上山, 1下山 20150817 贵州 int xsldh = 0; //开始下山路段号 20151112 贵州 std::string yjdg_road_code; //: string[100]; // 夜间需要灯光操作路段名 20151112 std::string lstc_road_code; //: string[100]; //临时停车路段名 20151116 int lstc_kssj = 0, lstc_tcsj = 0; //进入临时停车时间 20151116 int lstc_zt = 0; //0 进入区域 1停车状态 2准备起步 2015116 int lstc_yfxd = 0, lstc_zfxd = 0; //临时停车是否打了右方向灯 int lstc_lb = 0; bool lstc_kf = false ; //20170711 临时停车是否扣分 int yxkfsj1 = 0, yxkfsj2 = 0; //20151120 压线扣分时间 bool bOpenDoor = false; //20160323 是否开门 int gc_kssj = 0; // 进入同方向近距离跟车 20160617 int gc_zt = 0; // 0进入项目 -1结束 20160617 int rxhd_kssj = 0, rxhd_zt = 0; //进入人行横道时间 状态 20160617 int wxhd_kssj = 0, wxhd_zt = 0; //没有交通信号灯的路口 int hc_kssj = 0, hc_zt = 0; //模拟会车 int cc_kssj = 0, cc_zt = 0; //模拟超车 int yjdw = 0; //20160801 越级档位 std::string kf64; //: string[100]; //20160929 int jscnt = 0; //20170215 汉中 //hffdyysj: integer; //20160307 合肥肥东语音时间 int dddhkf = 0, dddhsj = 0; // 20170223 点火等待扣分 1表示准备扣分 dddhsj 等待点火时间 秒 茂名 int kf06sj = 0; //20170517 30108扣分的时间 bool bXhKf = false; //: boolean; //是否可以根据点火2熄火扣分 std::string WzmKFRoad; //: string[100]; //y夜间无照明扣分路段 20170817 int64 L_Csb_tk = 0, R_Csb_tk = 0, L_Csb_tk4 = 0, R_Csb_tk3 = 0; //: Cardinal; //20170827 20171113 int dwjs = 0; //20170906 int dh1 = 0, fdjzs = 0; //20170911 int yjjdcxsj = 0; //20171023 int yjjdkfjs = 0; //20171023 越级加档扣分时间 int qbjxmsj = 0; //20171107 起步进项目时机 0表示只要停车满足5秒就进入起步状态 1表示只有差分才能进项目 int qbsjcs = 0; //20171107 停车多长时间进入起步状态 ,单位秒 int qcyjjdkf = 0; //20171127全程越级加挡扣专项扣分 0:扣通用分 1:扣专项分 std::array DWErrArr; //: array[0..10] of TDWErrorRec; //20171130 int mndgddsj = 0; //20180104 模拟灯光触发等待时长,单位秒(插了安全带后等待时长再触发模拟灯光) int MnYj_Tk = 0; //20180104 int bdfxdsj = 0; //变道方向灯评判时机 0:以变道时判灯 1:以压线时记录打灯记录 ,变道时评判 int CheLunYaXian_St = 0; //车轮压线状态 0未压,1压线 20180415 int xsfxtype = 0; //行驶方向类型 0:正向 1:逆向 20180530 bool zdbd = false; //是否主动变道 20180531 bool zdbd3 = false; int dtzzj = 0; //20180830 501参数第4个 bool qdfdjpp = false; //20181016 广西梧州 开始考试要在2分钟内启动发动机 bool ksrcpp = false; //20190305 开始绕车一周触发的评判 int64 NoFace2S = 0; //2019-4-111 int kaishikaoshi_fadongji = 0; bool bJc1 = false, bJc2 = false, bJc3 = false; //是否检查了座椅 20150206 bool blichengyuying = false; int feijidongchedaojuli = 0; int FeiJiDongCheDaoJuLi_Tail = 0; int mark_Point_No = 0; //绕路点扣分 int64 NoHandsSj = 0; //双手离开方向盘时间 // 老的新科三注释掉没用了 // int sslkfxp_sj = 0, sslkfxp_kfbj = 0; //双手离开方向盘时间参数 // int dslkfxp_sj = 0, dslkfxp_jlpc = 0, dslkfxp_kfbj = 0; //单手离开方向盘时间秒,右边距离偏差cm // int sccw_sj = 0, sccw_kfbj = 0; //伸出窗外时间秒 // int kfsj_43 = 0, kfsj_76 = 0, kfsj_903 = 0, kfsj_20_62 = 0; //20,43扣分时间 // int64 no_singletime = 0; //: cardinal; }; struct TSub3Item20Comm_XLG //标准科目三综合评判 TKm3Itm20_XLG { bool XH_Enabled = false; bool CSH_QBDW_Flag = false; //初始化起步挡位标志 int QB_CSJL_CM = 0; //起步时刻初始距离(厘米) bool Mark_20_77_Flag = false; bool qdysFlag = false; //启动钥匙标志 bool aqd_kfid = false; //安全带扣分 int CGD_Nums = 0; //达到次高挡的次数 bool rmndg2 = false; //无锡地区在发动机未启动点切换,提示启动发动机,启动发动机之后播报模拟灯光 struct TSub3SpeedDistance { int speed = 0; int limit = 0; //单位米 int distance = 0; //单位米 }; std::map SDs534; std::map SDs535; }; struct TSub3Item20Comm_NS3 //新科目三 { int64 offSteer = 0; //时间超过双手脱离方向盘安全时间 int oneHand = 0; //单手控制方向盘,且车辆发生偏移,初始偏移距离CM int64 sight = 0; //视线离开行驶方向时间 int64 outWindow = 0; //手伸出窗外时间 bool isJudgeRainfall = false; bool isJudgeIllum = false; int64 rainfall = 0; //降雨量 int64 illumination = 0; //光照 }; #endif // HJUDGEITEM_H