Selaa lähdekoodia

feat(house-fault): SerialBin 在6处 errorlist 旁登记结构化 HouseFault(保留 errorlist,编译0错)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
huangjie 2 päivää sitten
vanhempi
commit
abbf490
1 muutettua tiedostoa jossa 55 lisäystä ja 0 poistoa
  1. 55 0
      ivf_tl_operate_2.0/control/ivf_tl_Com/SerialBin.cs

+ 55 - 0
ivf_tl_operate_2.0/control/ivf_tl_Com/SerialBin.cs

@@ -31,6 +31,9 @@ namespace ivf_tl_Com
 
         private List<string> errorlist = new List<string>();
 
+        /// <summary>结构化坏舱清单(与 errorlist 并存,errorlist 仅日志兼容)。</summary>
+        public List<HouseFault> Faults { get; } = new List<HouseFault>();
+
         public int TLNum = -1;
 
         public int dayLighting = -1;
@@ -119,6 +122,14 @@ namespace ivf_tl_Com
                         if (CCDidSn.ContainsValue(SnNumber))
                         {
                             errorlist.Add($"ccdid:{i};ccdsn:{SnNumber}");
+                            Faults.Add(new HouseFault
+                            {
+                                HouseSn = -1,
+                                Type = HouseFaultType.CameraDuplicateSn,
+                                Reason = $"相机SN重复 ccdid:{i};ccdsn:{SnNumber}",
+                                Stage = "相机枚举",
+                                At = DateTime.UtcNow
+                            });
                         }
                         else
                         {
@@ -133,6 +144,14 @@ namespace ivf_tl_Com
                 lock (lockObject)
                 {
                     errorlist.Add($"获取{i}号相机ccdSn异常");
+                    Faults.Add(new HouseFault
+                    {
+                        HouseSn = -1,
+                        Type = HouseFaultType.CameraReadFailed,
+                        Reason = $"获取{i}号相机ccdSn异常",
+                        Stage = "相机枚举",
+                        At = DateTime.UtcNow
+                    });
                 }
             }
         }
@@ -210,6 +229,15 @@ namespace ivf_tl_Com
                     if (itemModel != null)
                     {
                         errorlist.Add($"从{serialModel.housePort}串口获取到的模块号{serialModel.houseSn}和{itemModel.housePort}串口获取到的模块号{itemModel.houseSn}重复");
+                        Faults.Add(new HouseFault
+                        {
+                            HouseSn = serialModel.houseSn,
+                            Port = serialModel.housePort,
+                            Type = HouseFaultType.HouseSnDuplicate,
+                            Reason = $"模块号{serialModel.houseSn}在{serialModel.housePort}与{itemModel.housePort}重复",
+                            Stage = "扫口握手",
+                            At = DateTime.UtcNow
+                        });
                         goto CC;
                     }
                 }
@@ -250,6 +278,15 @@ namespace ivf_tl_Com
                             else
                             {
                                 errorlist.Add($"相机列表中不存在仓室的CCDSN{currentCCDSN}");
+                                Faults.Add(new HouseFault
+                                {
+                                    HouseSn = serialModel.houseSn,
+                                    Port = serialModel.housePort,
+                                    Type = HouseFaultType.CcdSnMissing,
+                                    Reason = $"相机列表中不存在仓室的CCDSN{currentCCDSN}",
+                                    Stage = "扫口握手",
+                                    At = DateTime.UtcNow
+                                });
                             }
                            
                             serialModel.ccdSn = currentCCDSN;
@@ -258,6 +295,15 @@ namespace ivf_tl_Com
                         else
                         {
                             errorlist.Add($"从{serialModel.houseSn}号模块的{serialModel.housePort}串口获取到的{currentCCDSN}和{itemModel.ccdSn}模块{itemModel.housePort}串口的{itemModel.ccdSn}重复");
+                            Faults.Add(new HouseFault
+                            {
+                                HouseSn = serialModel.houseSn,
+                                Port = serialModel.housePort,
+                                Type = HouseFaultType.CcdSnDuplicate,
+                                Reason = $"舱{serialModel.houseSn}的CCDSN{currentCCDSN}与{itemModel.housePort}重复",
+                                Stage = "扫口握手",
+                                At = DateTime.UtcNow
+                            });
                         }
                     }
 
@@ -316,6 +362,15 @@ namespace ivf_tl_Com
                 lock (lockObject)
                 {
                     errorlist.Add($"获取端口信息异常{portName}:{ex.Message}");
+                    Faults.Add(new HouseFault
+                    {
+                        HouseSn = -1,
+                        Port = portName,
+                        Type = HouseFaultType.SerialReadException,
+                        Reason = $"获取端口信息异常{portName}:{ex.Message}",
+                        Stage = "扫口握手",
+                        At = DateTime.UtcNow
+                    });
                 }
             }
         }