From 46431fb658701489f8d5de4475b02df728c51f36 Mon Sep 17 00:00:00 2001
From: chunxiaqiu <1057644574@qq.com>
Date: 星期三, 18 三月 2026 15:48:26 +0800
Subject: [PATCH] 新增:读码器功能模块,集成华睿读码器并初步实现读码功能
---
LB_VisionProcesses/Processes/BarcodeReaderProcess.cs | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 150 insertions(+), 0 deletions(-)
diff --git a/LB_VisionProcesses/Processes/BarcodeReaderProcess.cs b/LB_VisionProcesses/Processes/BarcodeReaderProcess.cs
new file mode 100644
index 0000000..2318b91
--- /dev/null
+++ b/LB_VisionProcesses/Processes/BarcodeReaderProcess.cs
@@ -0,0 +1,150 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+using LB_VisionProcesses.BarcodeReaders;
+
+namespace LB_VisionProcesses.Processes
+{
+ [Process("璇荤爜宸ュ叿", Category = "鍙栧儚宸ュ叿", Description = "閫氳繃璇荤爜鍣ㄨ幏鍙栨潯鐮佹暟鎹�")]
+ public class BarcodeReaderProcess : IProcess
+ {
+ /// <summary>
+ /// 璇荤爜鍣ㄥ疄渚嬮泦鍚� (鐢变富绋嬪簭绠$悊骞朵紶鍏�)
+ /// </summary>
+ [JsonIgnore]
+ public ConcurrentDictionary<string, BarcodeReaderBase> dicBarcodeReaders { get; set; }
+
+ /// <summary>
+ /// 褰撳墠鍏宠仈鐨勮鐮佸櫒
+ /// </summary>
+ [JsonIgnore]
+ public BarcodeReaderBase Reader { get; set; }
+
+ public BarcodeReaderProcess()
+ {
+ strProcessName = "璇荤爜宸ュ叿";
+ strProcessClass = "LB_VisionProcesses.Processes.BarcodeReaderProcess";
+
+ Params.Inputs.Add("璁惧鍝佺墝", "Huayray");
+ Params.Inputs.Add("璁惧SN", "");
+ Params.Inputs.Add("瑙﹀彂妯″紡", "杞Е鍙�");
+ Params.Inputs.Add("瓒呮椂鏃堕棿", 2000);
+
+ Params.Outputs.Add("鏉$爜缁撴灉", "");
+ Params.Outputs.Add("鐮佹暟閲�", 0);
+ }
+
+ public override void InitRunParams()
+ {
+ Result = true;
+ Msg = "鍑嗗杩愯";
+ bCompleted = false;
+ }
+
+ public override bool Run()
+ {
+ DateTime StartTime = DateTime.Now;
+ try
+ {
+ InitRunParams();
+
+ string sn = Params.Inputs["璁惧SN"]?.ToString();
+ if (string.IsNullOrEmpty(sn))
+ {
+ Msg = "璁惧SN鏈厤缃�";
+ Result = false;
+ return false;
+ }
+
+ // 浠庡叏灞�鍙橀噺鎴栦紶鍏ュ瓧鍏歌幏鍙�
+ if (dicBarcodeReaders == null)
+ {
+ // 灏濊瘯浠庡叏灞� dicGlobalVars 鑾峰彇 (鍋囪涓荤▼搴忓凡鏀惧叆)
+ if (dicGlobalVars.ContainsKey("dicBarcodeReaders"))
+ {
+ dicBarcodeReaders = dicGlobalVars["dicBarcodeReaders"] as ConcurrentDictionary<string, BarcodeReaderBase>;
+ }
+ }
+
+ if (dicBarcodeReaders != null && dicBarcodeReaders.ContainsKey(sn))
+ {
+ Reader = dicBarcodeReaders[sn];
+ }
+
+ if (Reader == null)
+ {
+ Msg = $"璇荤爜鍣╗{sn}]鏈垵濮嬪寲";
+ Result = false;
+ return false;
+ }
+
+ string triggerMode = Params.Inputs["瑙﹀彂妯″紡"]?.ToString();
+ if (triggerMode == "杞Е鍙�")
+ {
+ bool success = Reader.SoftTrigger();
+ Msg = success ? "瑙﹀彂鎴愬姛" : "瑙﹀彂澶辫触";
+ Result = success;
+ }
+ }
+ catch (Exception ex)
+ {
+ Msg = "杩愯寮傚父: " + ex.Message;
+ Result = false;
+ }
+ finally
+ {
+ RunTime = (DateTime.Now - StartTime).TotalMilliseconds;
+ bCompleted = true;
+ }
+ return Result;
+ }
+
+ public override bool Load(string fullPath)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(fullPath) || !File.Exists(fullPath)) return false;
+ string json = File.ReadAllText(fullPath, Encoding.UTF8);
+ Params = JsonConvert.DeserializeObject<ProcessParams>(json);
+ Params?.FixDeserializedData();
+ return true;
+ }
+ catch { return false; }
+ }
+
+ public override bool Save(string filePath)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(filePath)) return false;
+ if (!Directory.Exists(filePath)) Directory.CreateDirectory(filePath);
+ string fullPath = Path.Combine(filePath, strProcessName + ".json");
+ string json = JsonConvert.SerializeObject(Params, Formatting.Indented);
+ File.WriteAllText(fullPath, json, Encoding.UTF8);
+ return true;
+ }
+ catch { return false; }
+ }
+
+ public override object Clone()
+ {
+ try
+ {
+ var obj = (BarcodeReaderProcess)MemberwiseClone();
+ string json = JsonConvert.SerializeObject(this.Params);
+ obj.Params = JsonConvert.DeserializeObject<ProcessParams>(json);
+ return obj;
+ }
+ catch { return (BarcodeReaderProcess)MemberwiseClone(); }
+ }
+
+ public override void Dispose() { }
+ }
+}
--
Gitblit v1.9.3