linux 串口类封装,C#串口类封装 SuperSerialPort
发布日期:2022-02-03 04:38:36 浏览次数:9 分类:技术文章

本文共 2602 字,大约阅读时间需要 8 分钟。

///

/// SuperSerialPort

///

public class SuperSerialPort

{

private SerialPort CommPort = new SerialPort();

public SuperSerialPort()

{

CommPort.DataReceived += serialport_DataReceived;

}

private StringBuilder SerialDataReceived = new StringBuilder();

private void serialport_DataReceived(object sender, SerialDataReceivedEventArgs e)

{

//读取数据

int length = CommPort.BytesToRead;

byte[] buffers = new byte[length];

CommPort.Read(buffers, 0, length);

//调用委托事件

DataReceived?.Invoke(buffers);

}

#region 公有属性

///

/// 端口

///

public string PortName

{

get { return CommPort.PortName; }

}

///

/// 获取 端口列表

///

public List GetPortNames()

{

return SerialPort.GetPortNames().ToList();

}

///

/// 获取 奇偶校验位 列表

///

///

public List GetParitys()

{

List list = new List();

foreach (string str in Enum.GetNames(typeof(Parity)))

{

list.Add(str);

}

return list;

}

///

/// 获取 停止位 列表

///

///

public List GetStopBits()

{

List list = new List();

foreach (string str in Enum.GetNames(typeof(StopBits)))

{

list.Add(str);

}

return list;

}

///

/// 打开串口

///

public void Open()

{

if (!CommPort?.IsOpen)

{

CommPort.Open();

}

}

///

/// 关闭串口

///

public void Close()

{

if (CommPort?.IsOpen)

{

CommPort.Close();

}

}

#endregion

#region 设置串口信息

///

/// 设置串口信息

///

public void SetPortInfo(string PortName, string Parity, string Stop, string Data, string BaudRate)

{

CommPort.PortName = PortName;

CommPort.Parity = (Parity)Enum.Parse(typeof(Parity), Parity);

CommPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), Stop);

CommPort.DataBits = int.Parse(Data);

CommPort.BaudRate = int.Parse(BaudRate);

}

#endregion

#region HexToByte

///

/// HexToByte

///

private byte[] HexToByte(string msg)

{

msg = msg.Replace(" ", "");

byte[] comBuffer = new byte[msg.Length / 2];

for (int i = 0; i < msg.Length; i += 2)

comBuffer[i / 2] = (byte)Convert.ToByte(msg.Substring(i, 2), 16);

return comBuffer;

}

#endregion

#region ByteToHex

///

/// ByteToHex

///

private string ByteToHex(byte[] comByte)

{

StringBuilder builder = new StringBuilder(comByte.Length * 3);

foreach (byte data in comByte)

builder.Append(Convert.ToString(data, 16).PadLeft(2, '0'));

return builder.ToString().ToUpper();

}

#endregion

#region 接收事件

///

///

///

public Action DataReceived { get; set; }

#endregion

#region 发送事件

///

/// 发送命令

///

/// 十六进制字符串

public void Send(string cmd)

{

if (!string.IsNullOrEmpty(cmd) && CommPort.IsOpen)

{

byte[] serOrder = HexToByte(cmd);

CommPort.Write(serOrder, 0, serOrder.Length);

}

}

///

/// byte数组

///

///

public void Send(byte[] cmdbytes)

{

if (cmdbytes?.Length > 0 && CommPort.IsOpen)

{

CommPort.Write(cmdbytes, 0, cmdbytes.Length);

}

}

#endregion

}

转载地址:https://blog.csdn.net/weixin_30596151/article/details/116790950 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:android视频播放器5.0,最强安卓播放器MX Player支持安卓5.0了(附官方下载地址)
下一篇:linux 查看网络 历史,Linux历史命令操作记录查询

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月20日 02时00分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

spring boot 与 Ant Design of Vue 实现新增角色(二十) 2019-04-27
spring boot 与 Ant Design of Vue 实现修改角色(二十一) 2019-04-27
spring boot 与 Ant Design of Vue 实现删除角色(补二十一) 2019-04-27
spring boot 与 Ant Design of Vue 实现组织管理布局的实现(二十二) 2019-04-27
spring boot 与 Ant Design of Vue 实现左侧组织树(二十三) 2019-04-27
spring boot 与 Ant Design of Vue 实现新增组织(二十四) 2019-04-27
spring boot 与 Ant Design of Vue 实现修改组织(二十五) 2019-04-27
spring boot 与 Ant Design of Vue 实现删除组织(二十六) 2019-04-27
spring boot 与 Ant Design of Vue 实现获取用户列表(二十七) 2019-04-27
spring boot 与 Ant Design of Vue 实现删除用户(三十) 2019-04-27
spring boot 与 Ant Design of Vue 鉴权体系获取用户信息的实现(三十二) 2019-04-27
Druid连接池实现自定义场景的多数据库的连接 2019-04-27
PL/SQL数据库管理工具的使用 2019-04-27
带你玩转属于自己的spring-boot-starter系列(一) 2019-04-27
带你玩转属于自己自己的spring-boot-starter系列(二) 2019-04-27
带你玩转属于自己的spring-boot-starter系列(三) 2019-04-27
基于SnowFlake算法如何让分库分表中不同的ID落在同一个库的算法的实现 2019-04-27
基于springboot的ShardingSphere5.X的分库分表的解决方案之分表解决方案(一) 2019-04-27
基于springboot的ShardingSphere5.X的分库分表的解决方案之关联查询解决方案(三) 2019-04-27
Linux文件管理参考 2019-04-27