diff --git a/SlnMesnac.Common/GunHelper.cs b/SlnMesnac.Common/GunHelper.cs
index c0c4dc2..1ac1b58 100644
--- a/SlnMesnac.Common/GunHelper.cs
+++ b/SlnMesnac.Common/GunHelper.cs
@@ -46,9 +46,6 @@ namespace SlnMesnac.Common
{
try
{
- string port = System.IO.Ports.SerialPort.GetPortNames().FirstOrDefault();
- //实例化串行端口
-
//端口名 注:因为使用的是USB转RS232 所以去设备管理器中查看一下虚拟com口的名字
serialPort.PortName = config.Port;// portName;
//波特率 霍尼威尔扫码枪115200,普通9600
diff --git a/SlnMesnac.Common/LightHelper.cs b/SlnMesnac.Common/LightHelper.cs
new file mode 100644
index 0000000..1d6116b
--- /dev/null
+++ b/SlnMesnac.Common/LightHelper.cs
@@ -0,0 +1,135 @@
+using Microsoft.Extensions.DependencyInjection;
+using SlnMesnac.Config;
+using System;
+using System.Collections.Generic;
+using System.IO.Ports;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace SlnMesnac.Common
+{
+ ///
+ /// 光源控制类
+ ///
+ public sealed class LightHelper
+ {
+
+ #region 单例实现
+ private static readonly LightHelper lazy = new LightHelper();
+ public static LightHelper Instance
+ {
+ get
+ {
+ return lazy;
+ }
+ }
+ #endregion
+
+ #region 变量定义
+ private static SerialPort serialPort = new SerialPort();
+
+ #endregion
+
+ private DebugConfig config = DebugConfig.Instance;
+
+ //初始化串口并启动接收数据
+ public void InstanceSerialPort()
+ {
+ try
+ {
+
+
+ serialPort.PortName = config.LightPort;// portName;
+
+ serialPort.BaudRate = 115200;
+ //奇偶校验
+ serialPort.Parity = Parity.None;
+ //停止位
+ serialPort.StopBits = StopBits.One;
+ //数据位
+ serialPort.DataBits = 0x8;
+ //忽略null字节
+ serialPort.DiscardNull = true;
+
+ //接收事件
+ serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);
+
+ //开启串口
+ serialPort.Open();
+
+
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.Message.ToString());
+ }
+ }
+
+
+
+ ///
+ /// 接收数据
+ ///
+ ///
+ ///
+ private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
+ {
+
+ string result = "";
+ int bytesToRead = serialPort.BytesToRead;
+ byte[] buf = new byte[bytesToRead];
+ serialPort.Read(buf, 0x0, bytesToRead);
+
+ for (int i = 0x0; i < buf.Length; i++)
+ {
+ int num = (int)buf[i];
+ result =result+num.ToString("X2");
+ }
+ Console.WriteLine(result);
+ }
+
+ ///
+ /// 发送数据方法
+ /// OK-校验成功关闭灯光,NG-校验失败闪烁红灯
+ ///
+ ///
+ public void SendData(string data)
+ {
+ try
+ {
+ if (serialPort.IsOpen)
+ {
+
+ if (data == "OPEN")
+ {
+ // 第1通道亮度200
+ serialPort.WriteLine("$310C86E");
+
+ // 第2通道亮度200
+ serialPort.WriteLine("$320C86E");
+ }
+ else if (data == "CLOSE")
+ {
+ // 第2通道亮度0
+ serialPort.WriteLine("$3100004");
+ // 第2通道亮度0
+ serialPort.WriteLine("$3200005");
+ }
+ }
+ else
+ {
+ Console.WriteLine("串口未打开,请先初始化串口并打开连接。");
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"发送数据时发生错误:{ex.Message}");
+ }
+
+ }
+
+
+ }
+}
diff --git a/SlnMesnac.Common/WaringLightUtil.cs b/SlnMesnac.Common/WaringLightUtil.cs
new file mode 100644
index 0000000..acf9b8b
--- /dev/null
+++ b/SlnMesnac.Common/WaringLightUtil.cs
@@ -0,0 +1,273 @@
+//using BarcodeScan;
+//using System;
+//using System.Collections.Generic;
+//using System.Linq;
+//using System.Text;
+//using System.Threading;
+//using System.Threading.Tasks;
+
+//namespace Sys.Utilities
+//{
+// ///
+// /// 报警灯工具类
+// ///
+// public class WaringLightUtil
+// {
+
+// private static ScanProvider _scanner;
+// private static string _portName;
+// private static int _baudRate;
+// private static Thread thread;
+
+
+
+
+// #region 打开
+
+// ///
+// /// 打开串口 portName 端口 baudRate 波特率
+// ///
+// /// 端口
+// /// 波特率
+// ///
+// public static bool Open(string portName, int baudRate)
+// {
+// _portName = portName;
+// _baudRate = baudRate;
+// return InitScanner();
+// }
+
+// private static bool InitScanner()
+// {
+// bool connFlag = false;
+// try
+// {
+// // 打开串口
+// _scanner = new ScanProvider(_portName, _baudRate);
+// // 打开串口
+// if (_scanner.Open())
+// {
+// connFlag = true;
+// }
+// else
+// {
+// connFlag = false;
+// }
+// }
+// catch (Exception ex)
+// {
+// connFlag = false;
+// }
+// return connFlag;
+// }
+
+// #endregion
+
+// ///
+// /// 开启或关闭报警灯,status:1开启、2关闭,autoClosed:是否自动关闭
+// ///
+// /// 1开启,2关闭
+// /// 是否自动关闭
+// //public static void AlarmLamp(int status, bool autoClosed = true)
+// //{
+// // try
+// // {
+// // if (status == 1)
+// // {
+// // WaringLightUtil.WriteData(1, 2);
+// // Thread.Sleep(100);
+// // WaringLightUtil.WriteData(3, 1);
+// // Thread.Sleep(100);
+// // WaringLightUtil.WriteData(4, 1);
+
+// // if (autoClosed == true)
+// // {
+// // thread = new Thread(CloseAlarmLampThree)
+// // {
+// // IsBackground = true
+// // };
+// // thread.Start();
+// // }
+// // }
+// // else
+// // {
+// // WaringLightUtil.WriteData(1, 1);
+// // Thread.Sleep(100);
+// // WaringLightUtil.WriteData(3, 2);
+// // Thread.Sleep(100);
+// // WaringLightUtil.WriteData(4, 2);
+// // }
+// // }
+// // catch (Exception)
+// // {
+
+// // }
+// //}
+
+// //private static void CloseAlarmLampThree()
+// //{
+// // try
+// // {
+// // Thread.Sleep(5000);
+
+// // WaringLightUtil.WriteData(1, 1);
+// // Thread.Sleep(100);
+// // WaringLightUtil.WriteData(3, 2);
+// // Thread.Sleep(100);
+// // WaringLightUtil.WriteData(4, 2);
+// // }
+// // catch(Exception)
+// // {
+
+// // }
+// //}
+
+// public static void TriggerReleaseOne()
+// {
+// try
+// {
+// WaringLightUtil.WriteData(1, 1);
+// Thread.Sleep(1000);
+// WaringLightUtil.WriteData(1, 2);
+// }
+// catch (Exception)
+// {
+
+// }
+// }
+
+// #region 发送数据
+// ///
+// /// 数据发送 层数layer 1绿 2黄 3红 4锋鸣 状态lampStatus 打开 1 关闭2
+// ///
+// /// 层数 1 2 3 4
+// /// 状态 打开 1 关闭2
+// public static void WriteData(int layer, int lampStatus)
+// {
+// byte[] NormalDataBuff = new byte[8];
+// NormalDataBuff[0] = 0x01;
+// NormalDataBuff[1] = 0x05;
+// NormalDataBuff[2] = 0x00;
+// if (layer == 1) {
+// NormalDataBuff[3] = 0X00;
+// }
+// if (layer == 2)
+// {
+// NormalDataBuff[3] = 0X01;
+// }
+// if (layer == 3)
+// {
+// NormalDataBuff[3] = 0X02;
+// }
+// if (layer == 4)
+// {
+// NormalDataBuff[3] = 0X03;
+// }
+
+// if (lampStatus == 1)
+// {
+// NormalDataBuff[4] = 0xFF;
+// }
+// else {
+// NormalDataBuff[4] = 0x00;
+// }
+
+
+
+
+// NormalDataBuff[5] = 0x00;
+// int CRCBuff = CRC16(NormalDataBuff, 0, 5);
+// string bb = Convert.ToString(CRCBuff, 16).ToUpper().PadLeft(4, '0');
+// NormalDataBuff[6] = Convert.ToByte(bb.Substring(0, 2), 16);//CRC 校验低位
+// NormalDataBuff[7] = Convert.ToByte(bb.Substring(2, 2), 16);//CRC 校验低位
+// _scanner.Write(NormalDataBuff, 0, 8);
+// }
+
+// #endregion
+
+
+
+
+
+
+// #region CRC
+// private static readonly byte[] _auchCRCHi = new byte[]//crc高位表
+// {
+// 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
+// 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
+// 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
+// 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
+// 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
+// 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
+// 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
+// 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
+// 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
+// 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
+// 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
+// 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
+// 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
+// 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
+// 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
+// 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
+// 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
+// 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
+// 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
+// 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
+// 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
+// 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
+// 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
+// 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
+// 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
+// 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
+// };
+// private static readonly byte[] _auchCRCLo = new byte[]//crc低位表
+// {
+// 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
+// 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
+// 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
+// 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
+// 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
+// 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
+// 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
+// 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
+// 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
+// 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
+// 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
+// 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
+// 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
+// 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
+// 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
+// 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,
+// 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,
+// 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
+// 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,
+// 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,
+// 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
+// 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
+// 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,
+// 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
+// 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,
+// 0x43, 0x83, 0x41, 0x81, 0x80, 0x40
+// };
+
+// public static ushort CRC16(Byte[] buffer, int Sset, int Eset)
+// {
+// byte crcHi = 0xff; // 高位初始化
+
+// byte crcLo = 0xff; // 低位初始化
+
+// for (int i = Sset; i <= Eset; i++)
+// {
+// int crcIndex = crcHi ^ buffer[i]; //查找crc表值
+
+// crcHi = (byte)(crcLo ^ _auchCRCHi[crcIndex]);
+// crcLo = _auchCRCLo[crcIndex];
+// }
+// return (ushort)(crcHi << 8 | crcLo);
+// }
+// }
+// #endregion
+
+
+
+//}
diff --git a/SlnMesnac.Config/DebugConfig.cs b/SlnMesnac.Config/DebugConfig.cs
index 894fd86..f5d18de 100644
--- a/SlnMesnac.Config/DebugConfig.cs
+++ b/SlnMesnac.Config/DebugConfig.cs
@@ -72,12 +72,22 @@ namespace SlnMesnac.Config
}
///
- /// Com口
+ /// 报警灯COM口
///
public string Port
{
get { return iniHelper.IniReadValue("system", "ComPort"); }
set { iniHelper.IniWriteValue("system", "ComPort", value); }
}
+
+
+ ///
+ /// 灯光控制COM口
+ ///
+ public string LightPort
+ {
+ get { return iniHelper.IniReadValue("system", "LightPort"); }
+ set { iniHelper.IniWriteValue("system", "LightPort", value); }
+ }
}
}