From cb61a204c29e9b14d0b3f4e677d8489fc40cba51 Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期三, 24 十二月 2025 11:20:33 +0800
Subject: [PATCH] 增加多流程JSON保存以及加载。

---
 LB_SmartVision/VisionForm.cs |  109 +++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 87 insertions(+), 22 deletions(-)

diff --git a/LB_SmartVision/VisionForm.cs b/LB_SmartVision/VisionForm.cs
index b014f34..efa9ff0 100644
--- a/LB_SmartVision/VisionForm.cs
+++ b/LB_SmartVision/VisionForm.cs
@@ -519,71 +519,97 @@
             }
             LB_SmartVision.Tool.Tool.ReadStringConfig("User ID", out string User_ID);
             LB_SmartVision.Tool.Tool.ReadStringConfig("Password", out string Password);
-
             GlobalVar.strProductName = DateBaseName;
-
             //鍔犺浇閫氳
             foreach (BaseCommunicator com in GlobalVar.dicCommunicators.Values)
+            {
                 com.Disconnect();
+            }
             GlobalVar.dicCommunicators.Clear();
             if (LoadAllCommunicators(GlobalVar.allCommunicatorsConnectionStringPath))
+            {
                 LogInfo("閫氳鍔犺浇鎴愬姛", LogInfoType.PASS);
+            }
             else
+            {
                 LogInfo("閫氳鍔犺浇澶辫触", LogInfoType.ERROR);
-
+            }
             //鍔犺浇鐩告満
             foreach (BaseCamera camera in GlobalVar.dicCameras.Values)
+            {
                 camera.Dispose();
+            }
             GlobalVar.dicCameras.Clear();
             if (LoadAllCameras(GlobalVar.allCamerasConnectionStringPath))
+            {
                 LogInfo("鐩告満鍔犺浇鎴愬姛", LogInfoType.PASS);
+            }
             else
+            {
                 LogInfo("鐩告満鍔犺浇澶辫触", LogInfoType.ERROR);
-
-            //蹇呴』鍏堝姞杞界浉鏈哄拰閫氳绔彛,鍥犱负娴佺▼鍔犺浇杩囩▼涓細鐢ㄥ埌鐩告満鍜岄�氳鍙�
-
+            }
             //鍔犺浇鍏ㄥ眬鍙橀噺
             IProcess.dicGlobalVars.Clear();
             if (LoadAllProcessVars(GlobalVar.allProcessVarsPath))
+            {
                 LogInfo("鍏ㄥ眬鍙橀噺鍔犺浇鎴愬姛", LogInfoType.PASS);
+            }
             else
+            {
                 LogInfo("鍏ㄥ眬鍙橀噺鍔犺浇澶辫触", LogInfoType.ERROR);
+            }
 
             //鍔犺浇娴佺▼
             GlobalVar.dicProcesses.Clear();
             if (LoadAllProcess(GlobalVar.allProcessConnectionStringPath))
+            {
                 LogInfo("娴佺▼鍔犺浇鎴愬姛", LogInfoType.PASS);
+            }
             else
+            {
                 LogInfo("娴佺▼鍔犺浇澶辫触", LogInfoType.ERROR);
-
+            }
             //鍔犺浇瑙﹀彂璁剧疆
             if (LoadAllProcessSetting(GlobalVar.allProcessSettingStringPath))
+            {
                 LogInfo("娴佺▼璁剧疆鍔犺浇鎴愬姛", LogInfoType.PASS);
+            }
             else
+            {
                 LogInfo("娴佺▼璁剧疆鍔犺浇澶辫触", LogInfoType.ERROR);
+            }
 
             //鍔犺浇娴佺▼甯冨眬
             GlobalVar.dicLayout.Clear();
             if (LoadAllLayout(GlobalVar.allLayoutPath))
+            {
                 LogInfo("娴佺▼甯冨眬鍔犺浇鎴愬姛", LogInfoType.PASS);
+            }
             else
+            {
                 LogInfo("娴佺▼甯冨眬鍔犺浇澶辫触", LogInfoType.ERROR);
+            }
 
             //鍔犺浇娴佺▼琛ㄦ牸
             GlobalVar.dicCsvSetting.Clear();
             if (LoadAllCsv(GlobalVar.allCsvPath))
+            {
                 LogInfo("娴佺▼琛ㄦ牸鍔犺浇鎴愬姛", LogInfoType.PASS);
+            }
             else
+            {
                 LogInfo("娴佺▼琛ㄦ牸鍔犺浇澶辫触", LogInfoType.ERROR);
+            }
 
             //鏄剧ず鎵�鏈変骇鍝�
             com_ProductName.Items.Clear();
             LB_SmartVision.Tool.Tool.ReadStringConfig("浜у搧鍒楄〃", out string Products);
             List<string> lstProduct = (Products.Split(',')).ToList();
             foreach (string DatabaseName in lstProduct)
+            {
                 com_ProductName.Items.Add(DatabaseName);
+            }
             com_ProductName.Items.Add("鏂板");
-
             com_ProductName.Text = GlobalVar.strProductName;
         }
 
@@ -614,7 +640,6 @@
                 strJson = streamReader.ReadToEnd();
                 streamReader.Close();
             }
-
             GlobalVar.allCamerasConnectionString = JsonConvert.DeserializeObject<ConcurrentDictionary<string, string>>(strJson);
             if (GlobalVar.allCamerasConnectionString == null)
             {
@@ -628,16 +653,21 @@
                 switch (brand)
                 {
                     case CameraBrand.HRCamera:
-                        camera = new HRCamera();
-                        break;
+                        {
+                            camera = new HRCamera();
+                            break;
+                        }
                     case CameraBrand.LBCamera:
-                        //camera = new LBCamera();
-                        break;
+                        {
+                            //camera = new LBCamera();
+                            break;
+                        }
                     default:
-                        MessageBox.Show($"[{CameraConnectionString.Key}]鍝佺墝涓嶆敮鎸�!", "寮傚父");
-                        continue;
+                        {
+                            MessageBox.Show($"[{CameraConnectionString.Key}]鍝佺墝涓嶆敮鎸�!", "寮傚父");
+                            continue;
+                        }
                 }
-
                 camera.SN = CameraConnectionString.Key;
                 if (!camera.InitDevice(CameraConnectionString.Key, this.Handle))
                 {
@@ -665,8 +695,9 @@
                     string CameraBrand = item.Value.Brand.ToString();//"1111"
 
                     if (string.IsNullOrEmpty(CameraSN) || string.IsNullOrEmpty(CameraBrand))
+                    {
                         break;
-
+                    }
                     GlobalVar.allCamerasConnectionString.TryAdd(CameraSN, CameraBrand);
                 }
                 var settings = new JsonSerializerSettings
@@ -776,9 +807,13 @@
                         Communicator.CommunicatorConnections.Add("绔彛", PORT);
                         Communicator.CommunicatorName = CommunicatorName;
                         if (!Communicator.Connect())
+                        {
                             LogInfo($"鍒濆鍖栭�氳鍙{CommunicatorName}]澶辫触,鍘熷洜鏄瘂Communicator.Msg}", LogInfoType.ERROR);
+                        }
                         else
+                        {
                             LogInfo($"鍒濆鍖栭�氳鍙{CommunicatorName}]鎴愬姛", LogInfoType.PASS);
+                        }
                         GlobalVar.dicCommunicators.TryAdd(CommunicatorName, Communicator);
                     }
                     else
@@ -810,7 +845,9 @@
                         string PORT = match.Groups[3].Value;        // "1111"
 
                         if (string.IsNullOrEmpty(ClassName) || string.IsNullOrEmpty(IP) || string.IsNullOrEmpty(PORT))
+                        {
                             break;
+                        }
 
                         //鍒╃敤鍙嶅皠鍒涘缓瀹炰緥
                         Type type = IProcess.GetExecutingAssembly().GetType(ClassName);
@@ -831,10 +868,13 @@
                         Communicator.CommunicatorConnections.Add("绔彛", PORT);
                         Communicator.CommunicatorName = CommunicatorName;
                         if (!Communicator.Connect())
+                        {
                             LogInfo($"鍒濆鍖栭�氳鍙{CommunicatorName}]澶辫触,鍘熷洜鏄瘂Communicator.Msg}", LogInfoType.ERROR);
+                        }
                         else
+                        {
                             LogInfo($"鍒濆鍖栭�氳鍙{CommunicatorName}]鎴愬姛", LogInfoType.PASS);
-
+                        }
                         GlobalVar.dicCommunicators.TryAdd(CommunicatorName, Communicator);
                     }
                     else
@@ -863,12 +903,12 @@
                     string PORT = item.Value.CommunicatorConnections["绔彛"].ToString();//"1111"
 
                     if (string.IsNullOrEmpty(ClassName) || string.IsNullOrEmpty(IP) || string.IsNullOrEmpty(PORT))
+                    {
                         break;
-
+                    }
                     string CommunicatorConnectionString = $"({ClassName})[{IP}][{PORT}]";
                     GlobalVar.allCommunicatorsConnectionString.TryAdd(item.Key, CommunicatorConnectionString);
                 }
-
                 var settings = new JsonSerializerSettings
                 {
                     Formatting = Formatting.Indented,
@@ -919,17 +959,19 @@
                 List<string> lstProcessName = JsonConvert.DeserializeObject<List<string>>(strJson);
 
                 if (lstProcessName == null)
+                {
                     return false;
-
+                }
                 // 浣跨敤鏂瑰紡
                 var sortedKeys = lstProcessName
                     .OrderBy(k => k, new NaturalStringComparer())
                     .ToList();
                 GlobalVar.dicProcesses.Clear();
                 foreach (var ProcessName in sortedKeys)
+                {
                     GlobalVar.dicProcesses.TryAdd(ProcessName
                         , new ProcessRunBll(ProcessName, GlobalVar.dicCameras, GlobalVar.dicCommunicators));
-
+                }
                 return true;
             }
             catch { return false; }
@@ -966,7 +1008,9 @@
                 foreach (var process in GlobalVar.dicProcesses.Values)
                 {
                     if (!process.Save(out string msg))
+                    {
                         LogInfo($"娴佺▼[{process.Name}]淇濆瓨澶辫触,鍘熷洜:{msg}", LogInfoType.NOSHOW);
+                    }
                 }
 
                 try
@@ -1440,6 +1484,27 @@
                 }
             });
         }
+
+        private void VisionForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            SaveAllSetting();
+            if (MessageBox.Show("鏄惁鍏抽棴杞欢锛�", "鎻愮ず", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)//
+            {
+                e.Cancel = true;
+                return;
+            }
+            //鍏抽棴绐椾綋閲婃斁璧勬簮
+            AsyncLogHelper.Dispose();
+            foreach (BaseCamera camera in GlobalVar.dicCameras.Values)
+            {
+                camera.Dispose();
+            }
+            foreach (BaseCommunicator communicator in GlobalVar.dicCommunicators.Values)
+            {
+                communicator.Disconnect();
+            }
+            FormClosing -= VisionForm_FormClosing;
+        }
     }
 }
 

--
Gitblit v1.9.3