diff --git a/entry/src/main/cpp/sdk/exam/ExamCarSub3.h b/entry/src/main/cpp/sdk/exam/ExamCarSub3.h
index 49c93e37..12e3e169 100644
--- a/entry/src/main/cpp/sdk/exam/ExamCarSub3.h
+++ b/entry/src/main/cpp/sdk/exam/ExamCarSub3.h
@@ -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;
diff --git a/entry/src/main/cpp/sdk/exam/IExamCar.h b/entry/src/main/cpp/sdk/exam/IExamCar.h
index 0242c19a..d8a369e4 100644
--- a/entry/src/main/cpp/sdk/exam/IExamCar.h
+++ b/entry/src/main/cpp/sdk/exam/IExamCar.h
@@ -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;  //考试及格分数
diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge10Ccxx.cpp b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge10Ccxx.cpp
index 968c4da5..74ba97c6 100644
--- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge10Ccxx.cpp
+++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge10Ccxx.cpp
@@ -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;
             }
diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp
index dbaa9f6f..a03f6bbb 100644
--- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp
+++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.cpp
@@ -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);
+        }
     }
 }
 
@@ -2176,7 +2173,6 @@ 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;
 
@@ -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))
@@ -2968,7 +2963,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)
 
diff --git a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.h b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.h
index 9aeeb49c..95454fbf 100644
--- a/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.h
+++ b/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.h
@@ -213,7 +213,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
diff --git a/entry/src/main/cpp/toolkit/ui/MainWindow.ui b/entry/src/main/cpp/toolkit/ui/MainWindow.ui
index ba3e16e8..992d01d5 100644
--- a/entry/src/main/cpp/toolkit/ui/MainWindow.ui
+++ b/entry/src/main/cpp/toolkit/ui/MainWindow.ui
@@ -2503,7 +2503,7 @@ QSlider::sub-page:horizontal
      
       410
       500
-      91
+      121
       16
      
     
@@ -2514,7 +2514,7 @@ QSlider::sub-page:horizontal
    
     
      
-      510
+      530
       500
       91
       16
@@ -2540,9 +2540,9 @@ QSlider::sub-page:horizontal
    
     
      
-      610
+      630
       500
-      91
+      81
       16
      
     
@@ -2553,7 +2553,7 @@ QSlider::sub-page:horizontal
    
     
      
-      510
+      530
       517
       91
       16
@@ -2566,9 +2566,9 @@ QSlider::sub-page:horizontal
    
     
      
-      610
+      630
       517
-      91
+      81
       16
      
     
diff --git a/entry/src/main/ets/pages/Judge.ets b/entry/src/main/ets/pages/Judge.ets
index fd74671c..fc8fe911 100644
--- a/entry/src/main/ets/pages/Judge.ets
+++ b/entry/src/main/ets/pages/Judge.ets
@@ -122,7 +122,6 @@ struct Index {
         markreal:mark.markreal * 1,
         markserial:mark.markserial,
         kfxh:mark.kfxh,
-        //TODO 科目三评判新参数
         OnlyOneKind:mark.onlyoneid * 1,
         NoCancelId:mark.nocancelid * 1,
         GPS_SID:mark.gps_sid == 0 ? false : true
@@ -160,7 +159,6 @@ struct Index {
           name: decodeURI(sys.v_name)
         })
       }
-
       this.judgeConfigObj[sys.v_no] = value
     });
     this.judgeConfig = judgeConfig;
@@ -232,7 +230,6 @@ struct Index {
       }
 
       const {no1,no2,no3,} = systemParm;
-
       this.systemparmArr.push({
         'NO1':no1*1,'NO2':no2*1,'NO3':no3*1,
         'TXT1':decodeURIComponent(systemParm.txt1),
@@ -257,7 +254,6 @@ struct Index {
         this.examMileage = decodeURI(systemParm.txt1)
       }
     })
-
     const projects = this.projects;
     if (!projects.length) {
       prompt.showToast({
@@ -396,7 +392,6 @@ struct Index {
     const strArr = str.split('\n');
     const [initData,beginData] = [strArr[0],strArr[1]];
     const initDataObj = JSON.parse(initData)
-
     examSubject == 2
       ? await this.initSystemKm2Param()
       : await this.initSystemKm3Param(initDataObj.systemparm)
@@ -818,7 +813,7 @@ struct Index {
   @State startFullTime: string = ''
   @State startHourTime: string = ''
   //科目类型
-  @State examSubject: 2 | 3 = 2;
+  @State examSubject: 2 | 3 = 3;
   @State ddxkTime: number = 0;
   @State ddxkKsxmArr: string[] = ['']
   @State ddxkKfArr: string[] = ['']
diff --git a/entry/src/main/ets/pages/judgeSDK/utils/judge-config.ts b/entry/src/main/ets/pages/judgeSDK/utils/judge-config.ts
index a23c68cf..91d6bd62 100644
--- a/entry/src/main/ets/pages/judgeSDK/utils/judge-config.ts
+++ b/entry/src/main/ets/pages/judgeSDK/utils/judge-config.ts
@@ -8,7 +8,7 @@ export const judgeConfig = {
   udpOpen:false,
   // 本地模型地址
   modelPath: 'models/model_enc',
-  trajectoryPath: 'logs/2024_05_14/0000000000001_342323199501470011_测试学员1_2024_05_14_11_28_31/judge_exam_data.txt'
+  trajectoryPath: 'logs/2024_05_15/0000000000001_342323199501470011_测试学员1_2024_05_15_15_30_23/judge_exam_data.txt'
 }
 
 //0000000000001_342323199501470011_测试学员1_2024_04_28_10_59_44
@@ -17,7 +17,6 @@ export const judgeConfig = {
 
 // 济南轨迹回放
 // test_sub3_car_test_jinan-32038219990808021X-20240322173643.txt
-
 // test_sub3_car_test_jinan-32038219990808021X-20240322173643.track
 // 2024_01_24_11_30_06_2210707689316_620502199005070478_马鸣五
 // 2024_01_24_10_25_41_2231212226990_330184200208281821_金晓婷
\ No newline at end of file