修改串口

This commit is contained in:
hehaibing-1996
2025-03-21 18:55:17 +08:00
parent 9562d86449
commit c88a8122cc
3 changed files with 66 additions and 57 deletions

View File

@ -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