generated from wangsr/FrameworkBase.Wangsr
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.
74 lines
2.7 KiB
C#
74 lines
2.7 KiB
C#
using HighWayIot.Log4net;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Net.Sockets;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using TouchSocket.Core;
|
|
using TouchSocket.SerialPorts;
|
|
using TouchSocket.Sockets;
|
|
|
|
namespace HighWayIot.TouchSocket
|
|
{
|
|
public class TouchSocketCOM
|
|
{
|
|
/// <summary>
|
|
/// 日志
|
|
/// </summary>
|
|
private static LogHelper _logHelper = LogHelper.Instance;
|
|
|
|
/// <summary>
|
|
/// 懒加载
|
|
/// </summary>
|
|
private static readonly Lazy<TouchSocketCOM> lazy = new Lazy<TouchSocketCOM>(() => new TouchSocketCOM());
|
|
|
|
public static TouchSocketCOM Instance => lazy.Value;
|
|
|
|
public Action<string> ComAction;
|
|
|
|
/// <summary>
|
|
/// 创建串口连接
|
|
/// </summary>
|
|
public async Task CreateConnection()
|
|
{
|
|
try
|
|
{
|
|
var client = new SerialPortClient();
|
|
client.Connecting = (c, e) => { return EasyTask.CompletedTask; };//即将连接到端口
|
|
client.Connected = (c, e) => { return EasyTask.CompletedTask; };//成功连接到端口
|
|
client.Closing = (c, e) => { return EasyTask.CompletedTask; };//即将从端口断开连接。此处仅主动断开才有效。
|
|
client.Closed = (c, e) => { return EasyTask.CompletedTask; };//从端口断开连接,当连接不成功时不会触发。
|
|
client.Received = (c, e) =>
|
|
{
|
|
//收到信息
|
|
string mes = e.ByteBlock.Span.ToString(Encoding.UTF8);
|
|
ComAction.Invoke(mes);
|
|
return EasyTask.CompletedTask;
|
|
};
|
|
|
|
await client.SetupAsync(new TouchSocketConfig()
|
|
.SetSerialPortOption(new SerialPortOption()
|
|
{
|
|
BaudRate = 9600,//波特率
|
|
DataBits = 8,//数据位
|
|
Parity = System.IO.Ports.Parity.None,//校验位
|
|
PortName = "COM5",//COM
|
|
StopBits = System.IO.Ports.StopBits.One//停止位
|
|
})
|
|
.SetSerialDataHandlingAdapter(() => new PeriodPackageAdapter() { CacheTimeout = TimeSpan.FromMilliseconds(100) })
|
|
.ConfigurePlugins(a =>
|
|
{
|
|
//a.Add<MyPlugin>();
|
|
}));
|
|
|
|
await client.ConnectAsync();
|
|
_logHelper.Info("COM5连接成功");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logHelper.Error("连接失败", ex);
|
|
}
|
|
}
|
|
}
|
|
}
|