From c88a8122cc51d0515780211424a4b958b55a7e3f Mon Sep 17 00:00:00 2001 From: hehaibing-1996 Date: Fri, 21 Mar 2025 18:55:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=B2=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 货架标准上位机/ScannerManager.cs | 54 ++++++++---------- .../ViewModels/InInventoryViewModel.cs | 55 ++++++++++++------- 货架标准上位机/货架标准上位机.csproj | 14 ++--- 3 files changed, 66 insertions(+), 57 deletions(-) diff --git a/货架标准上位机/ScannerManager.cs b/货架标准上位机/ScannerManager.cs index 0076d26..5f2e6d6 100644 --- a/货架标准上位机/ScannerManager.cs +++ b/货架标准上位机/ScannerManager.cs @@ -4,9 +4,7 @@ using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; -using TouchSocket.Core; -using TouchSocket.SerialPorts; -using TouchSocket.Sockets; +using System.IO.Ports; using 智能仓储WCS管理系统.Views.Controls; namespace 智能仓储WCS管理系统 @@ -24,33 +22,29 @@ namespace 智能仓储WCS管理系统 { try { - var client = new SerialPortClient(); - //成功连接到端口 - client.Connected = (client, e) => - { - Logs.Write($"扫码枪{client.MainSerialPort.PortName},已成功连接!", LogsType.Scanner); - //初始化扫码枪对象 - var Scanner = new Scanner() - { - SerialPortClient = (SerialPortClient)client, - //ScannerDisplayControl = new ScannerDisplayControl(client.MainSerialPort.PortName), - COM = client.MainSerialPort.PortName, - TempCode = string.Empty, - }; - Scanners.Add(Scanner); - return EasyTask.CompletedTask; - }; - client.Setup(new TouchSocket.Core.TouchSocketConfig() - .SetSerialPortOption(new SerialPortOption() - { - BaudRate = 9600,//波特率 - DataBits = 8,//数据位 - Parity = System.IO.Ports.Parity.None,//校验位 - PortName = COM, - StopBits = System.IO.Ports.StopBits.One//停止位 - })); + var _serialPort = new SerialPort(); - client.Connect(LocalFile.Config.ScannerTimeOut, new CancellationToken()); + // 初始化串口配置 + _serialPort = new SerialPort + { + PortName = COM, + BaudRate = 9600, + Parity = Parity.None, + DataBits = 8, + StopBits = StopBits.One, + Handshake = Handshake.None, + Encoding = Encoding.UTF8 // 根据设备要求选择编码 + }; + _serialPort.Open(); + + var Scanner = new Scanner() + { + SerialPort = _serialPort, + //ScannerDisplayControl = new ScannerDisplayControl(client.MainSerialPort.PortName), + COM = COM, + TempCode = string.Empty, + }; + Scanners.Add(Scanner); } catch (Exception ex) { @@ -63,7 +57,7 @@ namespace 智能仓储WCS管理系统 public class Scanner { - public SerialPortClient SerialPortClient { get; set; } + public SerialPort SerialPort { get; set; } public ScannerDisplayControl ScannerDisplayControl { get; set; } diff --git a/货架标准上位机/ViewModels/InInventoryViewModel.cs b/货架标准上位机/ViewModels/InInventoryViewModel.cs index f8332bd..0a6d7bc 100644 --- a/货架标准上位机/ViewModels/InInventoryViewModel.cs +++ b/货架标准上位机/ViewModels/InInventoryViewModel.cs @@ -30,6 +30,7 @@ using WCS.Model.ApiModel.MatBaseInfo; using System.Security.Cryptography; using Ping9719.WpfEx; using System.Diagnostics.Eventing.Reader; +using System.IO.Ports; namespace 智能仓储WCS管理系统.ViewModel { @@ -41,30 +42,44 @@ namespace 智能仓储WCS管理系统.ViewModel var scanners = ScannerManager.Scanners; foreach (var scanner in scanners) { - scanner.SerialPortClient.Received = (client, e) => - { - //获取串口号 - var COM = client.MainSerialPort.PortName; - //获取扫码枪对象 - var scanner = ScannerManager.Scanners.Where(t => t.COM == COM).FirstOrDefault(); - if (scanner == null) - return EasyTask.CompletedTask; - int newBytes = e.ByteBlock.Len; - if (newBytes > 0) - { - var currentScanedCode = Encoding.UTF8.GetString(e.ByteBlock, 0, e.ByteBlock.Len); - Logs.Write($"接收到扫码枪[{scanner.COM}]扫码数据{currentScanedCode}", LogsType.Scanner); - scanner.TempCode += currentScanedCode; - //校验末尾码 - CheckDataCompleteness(scanner); - scanner.ScannerDisplayControl.RefreshValues(scanner.ShelfCode, scanner.MatSn, scanner.InstoreUser); - } - return EasyTask.CompletedTask; - }; + scanner.SerialPort.DataReceived += SerialPort_DataReceived; } RevertScannerStatus(); } + + public void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) + { + try + { + var _serialPort = sender as SerialPort; + if (_serialPort == null) + return; + //// 读取所有可用数据 + string receivedData = _serialPort.ReadExisting(); + //获取串口号 + var COM = _serialPort.PortName; + //获取扫码枪对象 + var scanner = ScannerManager.Scanners.Where(t => t.COM == COM).FirstOrDefault(); + if (scanner == null) + return; + //int newBytes = e.ByteBlock.Len; + if (receivedData.Length > 0) + { + var currentScanedCode = receivedData; + Logs.Write($"接收到扫码枪[{scanner.COM}]扫码数据{currentScanedCode}", LogsType.Scanner); + scanner.TempCode += currentScanedCode; + //校验末尾码 + CheckDataCompleteness(scanner); + scanner.ScannerDisplayControl.RefreshValues(scanner.ShelfCode, scanner.MatSn, scanner.InstoreUser); + } + } + catch (Exception ex) + { + Console.WriteLine($"接收数据错误: {ex.Message}"); + } + } + #region Property private string shelfCode; public string ShelfCode diff --git a/货架标准上位机/货架标准上位机.csproj b/货架标准上位机/货架标准上位机.csproj index eb2d627..6eece3f 100644 --- a/货架标准上位机/货架标准上位机.csproj +++ b/货架标准上位机/货架标准上位机.csproj @@ -60,8 +60,8 @@ + - @@ -84,12 +84,12 @@ - - - - - - + + + + + +