From 8826196fc78ceb9c327d3abf7f2f2cf06dabb5df Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期四, 09 四月 2026 14:43:32 +0800
Subject: [PATCH] 修复布局移除&添加bug。
---
LB_SmartVision/VisionForm.cs | 150 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 145 insertions(+), 5 deletions(-)
diff --git a/LB_SmartVision/VisionForm.cs b/LB_SmartVision/VisionForm.cs
index 3167069..aa8fae8 100644
--- a/LB_SmartVision/VisionForm.cs
+++ b/LB_SmartVision/VisionForm.cs
@@ -1,6 +1,7 @@
锘縰sing HalconDotNet;
using LB_SmartVision.Forms;
using LB_SmartVision.Forms.Pages;
+using LB_SmartVision.Forms.Pages.BarcodeReaderPage;
using LB_SmartVision.Forms.Pages.CameraPage;
using LB_SmartVision.Forms.Pages.CommunicatorPage;
using LB_SmartVision.Forms.Pages.HistoricalData;
@@ -16,6 +17,8 @@
using LB_SmartVisionCommon;
using LB_SmartVisionLoginUI;
using LB_VisionProcesses;
+using LB_VisionProcesses.BarcodeReaders;
+using LB_VisionProcesses.BarcodeReaders.Huayray;
using LB_VisionProcesses.Cameras;
using LB_VisionProcesses.Cameras.HikCameras;
using LB_VisionProcesses.Cameras.HRCameras;
@@ -51,10 +54,12 @@
{
public partial class VisionForm : Form
{
+ #region Variable
public string NowBom = string.Empty;
AllProcessesPage AllProcessesPage = new AllProcessesPage();
CamerasEditPage CamerasEditPage = new CamerasEditPage();
+ BarcodeReadersEditPage BarcodeReadersEditPage = new BarcodeReadersEditPage();
HistoricalDataEditPage HistoricalDataEditPage = new HistoricalDataEditPage();
CommunicatorsEditPage CommunicatorsEditPage = new CommunicatorsEditPage();
SettingEditPage SettingEditPage = new SettingEditPage();
@@ -77,6 +82,8 @@
// 绐椾綋绫荤殑鍏ㄥ眬鍙橀噺锛氭爣璁版槸鍚﹀厑璁稿垏鎹ab锛堥粯璁ゅ厑璁革級
private bool _isTabSwitchAllowed = true;
+ #endregion
+
public VisionForm()
{
InitializeComponent();
@@ -94,10 +101,15 @@
HistoricalDataEditPage.LogInfo += LogInfo;
materialTabControl.Controls.Add(new MyPage(HistoricalDataEditPage));
+
lEDLightSourceControlEditPage.LogInfo += LogInfo;
materialTabControl.Controls.Add(new MyPage(lEDLightSourceControlEditPage));
+
CamerasEditPage.LogInfo += LogInfo;
materialTabControl.Controls.Add(new MyPage(CamerasEditPage));
+
+ BarcodeReadersEditPage.LogInfo += LogInfo;
+ materialTabControl.Controls.Add(new MyPage(BarcodeReadersEditPage));
CommunicatorsEditPage.LogInfo += LogInfo;
materialTabControl.Controls.Add(new MyPage(CommunicatorsEditPage));
@@ -771,6 +783,20 @@
{
LogInfo("鐩告満鍔犺浇澶辫触", LogInfoType.ERROR);
}
+ //鍔犺浇璇荤爜鍣�
+ foreach (var reader in GlobalVar.dicBarcodeReaders.Values)
+ {
+ reader.Dispose();
+ }
+ GlobalVar.dicBarcodeReaders.Clear();
+ if (LoadAllBarcodeReaders(GlobalVar.allBarcodeReadersConnectionStringPath))
+ {
+ LogInfo("璇荤爜鍣ㄥ姞杞芥垚鍔�", LogInfoType.PASS);
+ }
+ else
+ {
+ LogInfo("璇荤爜鍣ㄥ姞杞藉け璐�", LogInfoType.ERROR);
+ }
//鍔犺浇鍏ㄥ眬鍙橀噺
IProcess.dicGlobalVars.Clear();
if (LoadAllProcessVars(GlobalVar.allProcessVarsPath))
@@ -936,7 +962,109 @@
SaveAllCsv();
SaveMotionControlDatas();
SaveSerialPorts();
+ SaveAllBarcodeReaders();
}
+
+
+ public bool LoadAllBarcodeReaders(string allBarcodeReadersConnectionStringPath)
+ {
+ if (!File.Exists(allBarcodeReadersConnectionStringPath))
+ {
+ Debug.WriteLine("璇荤爜鍣ㄩ厤缃枃浠朵笉瀛樺湪锛屽垱寤虹┖鏂囦欢");
+ SaveAllBarcodeReaders();
+ return true;
+ }
+ string strJson = string.Empty;
+ using (StreamReader streamReader = new StreamReader(allBarcodeReadersConnectionStringPath, Encoding.UTF8))
+ {
+ strJson = streamReader.ReadToEnd();
+ streamReader.Close();
+ }
+ GlobalVar.allBarcodeReadersConnectionString = JsonConvert.DeserializeObject<ConcurrentDictionary<string, string>>(strJson);
+ if (GlobalVar.allBarcodeReadersConnectionString == null)
+ {
+ MessageBox.Show("璇荤爜鍣ㄥ姞杞藉け璐�!", "寮傚父");
+ return false;
+ }
+ BarcodeReaderBase reader = null;
+ foreach (var ReaderConnectionString in GlobalVar.allBarcodeReadersConnectionString)
+ {
+ Enum.TryParse<BarcodeReaderBrand>(ReaderConnectionString.Value, out BarcodeReaderBrand brand);
+ switch (brand)
+ {
+ case BarcodeReaderBrand.Huayray:
+ {
+ reader = new HRBarcodeReader();
+ break;
+ }
+ default:
+ {
+ MessageBox.Show($"[{ReaderConnectionString.Key}]璇荤爜鍣ㄥ搧鐗屼笉鏀寔!", "寮傚父");
+ continue;
+ }
+ }
+ reader.SN = ReaderConnectionString.Key;
+ if (!reader.Open(ReaderConnectionString.Key))
+ {
+ LogInfo($"鍒濆鍖栬鐮佸櫒[{ReaderConnectionString.Key}]澶辫触", LogInfoType.ERROR);
+ reader.IsConnected = false;
+ reader.IsGrabbing = false;
+ }
+ else
+ {
+ LogInfo($"鍒濆鍖栬鐮佸櫒[{ReaderConnectionString.Key}]鎴愬姛", LogInfoType.PASS);
+ }
+
+ GlobalVar.dicBarcodeReaders.TryAdd(ReaderConnectionString.Key, reader);
+ }
+
+ return true;
+ }
+
+ public bool SaveAllBarcodeReaders()
+ {
+ try
+ {
+ string strJson = string.Empty;
+ GlobalVar.allBarcodeReadersConnectionString = new ConcurrentDictionary<string, string>();
+
+ foreach (var item in GlobalVar.dicBarcodeReaders)
+ {
+ string ReaderSN = item.Value.SN;
+ string ReaderBrand = item.Value.Brand.ToString();
+
+ if (string.IsNullOrEmpty(ReaderSN) || string.IsNullOrEmpty(ReaderBrand))
+ {
+ break;
+ }
+ GlobalVar.allBarcodeReadersConnectionString.TryAdd(ReaderSN, ReaderBrand);
+ }
+ var settings = new JsonSerializerSettings
+ {
+ Formatting = Formatting.Indented,
+ ContractResolver = new DefaultContractResolver
+ {
+ NamingStrategy = new CamelCaseNamingStrategy()
+ }
+ };
+
+ strJson = JsonConvert.SerializeObject(GlobalVar.allBarcodeReadersConnectionString, settings);
+ string directoryPath = Path.GetDirectoryName(GlobalVar.allBarcodeReadersConnectionStringPath);
+ if (!Directory.Exists(directoryPath))
+ {
+ try
+ {
+ Directory.CreateDirectory(directoryPath);
+ }
+ catch (Exception)
+ { }
+ }
+ File.WriteAllText(GlobalVar.allBarcodeReadersConnectionStringPath, strJson, Encoding.UTF8);
+ return true;
+ }
+ catch { return false; }
+ }
+
public bool LoadSerialPorts(string allSerialPortPath)
{
@@ -2243,7 +2371,7 @@
var value = item.Value;
var triggerComm = value["瑙﹀彂閫氳"];
var triggerChar = value["瑙﹀彂瀛楃"];
- return triggerComm != null;
+ return triggerComm != null && !triggerComm.Equals("鏃�");
//return triggerComm != null && triggerComm.Equals(name) &&
// (string.IsNullOrEmpty(triggerChar?.ToString()) ||
// msg.StartsWith(triggerChar.ToString()));
@@ -2253,7 +2381,13 @@
{
return;
}
- TriggerRunMessageReceived(matchedItems[0].Value["瑙﹀彂閫氳"], matchedItems[0].Value["瑙﹀彂瀛楃"]);
+ foreach (var item in matchedItems)
+ {
+ Task.Factory.StartNew(() =>
+ {
+ TriggerRunMessageReceived(item.Value["瑙﹀彂閫氳"], item.Value["瑙﹀彂瀛楃"]);
+ });
+ }
}
private void btn_RunContinuously_Click(object sender, EventArgs e)
@@ -2276,7 +2410,7 @@
var value = item.Value;
var triggerComm = value["瑙﹀彂閫氳"];
var triggerChar = value["瑙﹀彂瀛楃"];
- return triggerComm != null;
+ return triggerComm != null && !triggerComm.Equals("鏃�");
//return triggerComm != null && triggerComm.Equals(name) &&
// (string.IsNullOrEmpty(triggerChar?.ToString()) ||
// msg.StartsWith(triggerChar.ToString()));
@@ -2284,8 +2418,14 @@
.ToList(); // 閬垮厤閲嶅瀛楀吀璁块棶鍜岃绠辨搷浣�
while (btn_RunContinuously.Text.Equals("鏆傚仠杩愯"))
{
-
- TriggerRunMessageReceived(matchedItems[0].Value["瑙﹀彂閫氳"], matchedItems[0].Value["瑙﹀彂瀛楃"]);
+ foreach (var item in matchedItems)
+ {
+ Task.Factory.StartNew(() =>
+ {
+ TriggerRunMessageReceived(item.Value["瑙﹀彂閫氳"], item.Value["瑙﹀彂瀛楃"]);
+ });
+ }
+ //TriggerRunMessageReceived(matchedItems[0].Value["瑙﹀彂閫氳"], matchedItems[0].Value["瑙﹀彂瀛楃"]);
Thread.Sleep(3500);
}
//this.Invoke(() =>
--
Gitblit v1.9.3