|
|
@@ -77,9 +77,8 @@ namespace ivf_tl_Control
|
|
|
AppData.LogService.TLLog($"相机信息:{JsonConvert.SerializeObject(serialBin.CCDidSn)}", LogEnum.RunRecord);
|
|
|
if (errorList.Any())
|
|
|
{
|
|
|
- errora = $"获取相机Id和CCDSN错误{JsonConvert.SerializeObject(errorList)}";
|
|
|
- AppData.LogService.TLLog(errora, LogEnum.RunRecord);
|
|
|
- return (new TLInitControllerResult(), new List<int>());
|
|
|
+ // 舱室故障隔离:相机枚举异常不再整机中止,只记日志;受影响舱稍后在 CCDSN 配对时落坏舱被剔除。
|
|
|
+ AppData.LogService.TLLog($"相机枚举有异常(不中止,受影响舱将按坏舱剔除):{JsonConvert.SerializeObject(errorList)}", LogEnum.RunRecord);
|
|
|
}
|
|
|
CamNum = serialBin.CCDidSn.Where(x => x.Value != null).Count();
|
|
|
errorList = serialBin.Start();
|
|
|
@@ -88,9 +87,8 @@ namespace ivf_tl_Control
|
|
|
|
|
|
if (errorList.Any())
|
|
|
{
|
|
|
- errora = $"获取串口信息错误{JsonConvert.SerializeObject(errorList)}";
|
|
|
- AppData.LogService.TLLog(errora, LogEnum.RunRecord);
|
|
|
- return (new TLInitControllerResult(), new List<int>());
|
|
|
+ // 舱室故障隔离:扫口异常不再整机中止,剔除坏舱后用好舱继续(见下方 RunnableHouses)。
|
|
|
+ AppData.LogService.TLLog($"扫口有异常(将剔除坏舱后继续):{JsonConvert.SerializeObject(errorList)}", LogEnum.RunRecord);
|
|
|
}
|
|
|
|
|
|
var modelCount = serialBin.SerialModels.Count;
|
|
|
@@ -117,7 +115,25 @@ namespace ivf_tl_Control
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- List<int> listIntRunHoues = serialBin.SerialModels.Select(x => x.houseSn).ToList();
|
|
|
+ // 舱室故障隔离:坏舱 = 故障清单中已知舱号;可跑舱 = 发现的舱 − 坏舱;仅零可跑才整机中止。
|
|
|
+ var discovered = serialBin.SerialModels.Select(x => x.houseSn).ToList();
|
|
|
+ List<int> listIntRunHoues = StartupFaultPolicy.RunnableHouses(discovered, serialBin.Faults);
|
|
|
+
|
|
|
+ foreach (var f in serialBin.Faults) if (f.HouseSn > 0) f.Isolated = true;
|
|
|
+ AppData.StartupFaults = serialBin.Faults;
|
|
|
+ if (serialBin.Faults.Any())
|
|
|
+ AppData.LogService.TLLog($"启动坏舱清单:{JsonConvert.SerializeObject(serialBin.Faults)};可跑舱:{string.Join(",", listIntRunHoues)}", LogEnum.RunRecord);
|
|
|
+
|
|
|
+ if (StartupFaultPolicy.IsFatal(listIntRunHoues))
|
|
|
+ {
|
|
|
+ errora = "所有舱室初始化失败,无可运行舱室";
|
|
|
+ AppData.LogService.TLLog(errora, LogEnum.RunRecord);
|
|
|
+ return (new TLInitControllerResult(), new List<int>());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 启动期坏舱经现有 reportAlarm 报警闭环上报(alarm 表/双端列表/短信电话/可消警);失败不影响启动。
|
|
|
+ try { AppData.ReportStartupFaults(); } catch { }
|
|
|
+
|
|
|
TLInitData tLInitData = new TLInitData();
|
|
|
tLInitData.tlSn = $"NEO-1-{serialBin.TLNum}";
|
|
|
tLInitData.dayLighting = serialBin.dayLighting;
|