You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
5.4 KiB
C#

//using Microsoft.Extensions.DependencyInjection;
//using System;
//using System.Collections.Generic;
//using System.IO.Ports;
//using System.Text;
//namespace SlnMesnac.Common
//{
// public sealed class GunHelper
// {
// private static SerialPort serialPort = new SerialPort();
// public static List<System.IO.Ports.SerialPort> serialPorts = new List<System.IO.Ports.SerialPort>();
// // 扫码枪绑定模型
// public static List<GunBindModel> gunBindModels = new List<GunBindModel>();
// #region 单例实现
// private static readonly GunHelper lazy = new GunHelper();
// /// <summary>
// /// 扫码委托 ,箱壳码1,内胆码2
// /// </summary>
// /// <param name="materialCodeStr"></param>
// /// <param name="ip"></param>
// public delegate void RefreshMaterialCodeStr(string shellCode, string linerCode);
// public static event RefreshMaterialCodeStr RefreshMaterialCodeStrEvent;
// public static GunHelper Instance
// {
// get
// {
// return lazy;
// }
// }
// #endregion
// //初始化串口并启动接收数据
// public static void InstanceSerialPort3()
// {
// try
// {
// // string port = System.IO.Ports.SerialPort.GetPortNames().FirstOrDefault();
// // string port = appConfig.Port;
// var portList = appConfig.GetPortList();
// if (portList == null || portList.Count == 0)
// {
// Console.WriteLine("端口列表为空,无法初始化串口。");
// return;
// }
// //获取系统所有可打开的串口
// var availablePorts = System.IO.Ports.SerialPort.GetPortNames();
// foreach (var port in portList)
// {
// // 检查端口是否存在于可用端口列表中
// if (!availablePorts.Contains(port))
// {
// LogHelper.Instance.Info($"端口 {port} 不存在于设备管理器中,跳过初始化。");
// continue;
// }
// var serialPort = new System.IO.Ports.SerialPort();
// // 设置串口属性
// serialPort.PortName = port;
// serialPort.BaudRate = int.Parse(appConfig.BaudRate);
// serialPort.Parity = Parity.None;
// serialPort.StopBits = StopBits.One;
// serialPort.DataBits = 8;
// serialPort.DiscardNull = true;
// #region 将串口绑定模型添加到列表
// GunBindModel model = new GunBindModel();
// model.Port = port;
// gunBindModels.Add(model);
// #endregion
// // 为每个串口设置独立的数据接收事件
// serialPort.DataReceived += (sender, e) => SerialPort_DataReceived(sender, e, model);
// // 将串口添加到列表
// serialPorts.Add(serialPort);
// // 开启串口
// serialPort.Open();
// LogHelper.Instance.Info($"端口 {port} 实例化开启成功");
// }
// }
// catch (Exception ex)
// {
// LogHelper.Instance.Info($"实例化串口异常:{ex.Message}");
// }
// }
// private static void SerialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e, GunBindModel model)
// {
// try
// {
// var serialPort = (System.IO.Ports.SerialPort)sender; // 获取引发事件的串口对象
// Thread.Sleep(50);
// int nums = serialPort.BytesToRead;
// byte[] receiveBytes = new byte[nums];
// serialPort.Read(receiveBytes, 0, nums);
// StringBuilder sb = new StringBuilder();
// string str = Encoding.ASCII.GetString(receiveBytes).Replace("\r\n", "").Replace("\r", "").Replace("\n", "");
// if (str.Substring(0, 1) == "B")
// {
// model.ShellCode = str;
// }
// else if (str.Substring(0, 1) == "L")
// {
// model.LinerCode = str;
// }
// if (!string.IsNullOrEmpty(model.LinerCode) && !string.IsNullOrEmpty(model.ShellCode))
// {
// try
// {
// // 绑定事件
// RefreshMaterialCodeStrEvent(model.ShellCode, model.LinerCode);
// }
// catch (Exception ex)
// {
// LogHelper.Instance.Info($"串口{model.Port}绑定异常:{ex.Message}");
// }
// finally
// {
// model.ShellCode = "";
// model.LinerCode = "";
// }
// }
// sb.Clear();
// }
// catch (Exception ex)
// {
// LogHelper.Instance.Info($"串口{model.Port}接收数据异常:{ex.Message}");
// }
// }
// }
//}