SerialPortHelper是一款基于C#的串口助手类库。 项目处于开发测试阶段,未经充分测试与验证,不推荐用于生产环境。
目前操作逻辑可能随时变动,不保证接口与功能向后兼容。
欢迎加入测试并向我们提交BUG或建议,请下载最新Releases版本参与测试!
串口助手类库项目,目前基于 .NET Framework 3.5 编译,若需要 .NET Framework 4+ 可以直接自行修改框架编译。
注意:目前处于开发阶段无法用于生产,有想法或建议请Issues。
-
SerialPortHelperTest 串口助手类库测试项目,主要用于演示SerialPortHelper类库的各项功能与测试任务。
-
SerialPostTool 串口调试工具,基于SerialPortHelper类库开发的高级串口调试工具,下载后可直接使用。
这里只列举部分功能,详细操作文档请参考使用文档
使用前需要引用 SerialPortHelperLib
,可以直接将源码直接添加到解决方案中,也可以引用SerialPortHelperLib.dll
文件;接下来在代码文件顶部添加 :
using SerialPortHelperLib;
即可开始使用串口助手类库。
首先需要定义一个全局类
//定义SerialPortHelper类
private SerialPortHelper spb;
然后添加一个 ComboBox
控件,命名 cbPortName
。
最后在窗体加载中加入初始化代码:
//实例化串口助手
spb = new SerialPortHelper();
//设置串口号ComboBox,并写入默认配置
spb.ConfigSerialPort = new ConfigCom(cbPortName).GetConfigComData();
若要自定义串口配置可以定义ConfigCom类:
//定义ConfigCom类
private ConfigCom cc;
//修改配置
cc = new ConfigCom(cbSerial);
cc.BaudRate = 14400;
cc.DataBits = 7;
cc.StopBits = StopBits.OnePointFive;
cc.Parity = Parity.Even;
//写入串口配置
spb.ConfigSerialPort = cc.GetConfigComData();
使用 OpenCom
开启串口,需要传入一个out
字符串,用于返回错误信息。
spb.OpenCom(out string strError);
if(strError != "null")
{
//串口开启失败
MessageBox.Show(strError);
}
与开启串口类似,使用 CloseCom
方法关闭串口。
spb.CloseCom(out string strError);
if (strError != "null")
{
//关闭串口失败
MessageBox.Show(strError);
}
发送Byte数组到串口:
spb.Write(Byte数组);
发送十六进制到串口:
spb.Write(SerialData.ToHexByteArray(十六进制字符串));
发送字符串到串口:
spb.Write(SerialData.ToByteArray(字符串));
若要接收数据,需要在串口初始化时增加接收事件绑定:
//串口助手类初始化
//绑定接收数据函数SerialPortDataReceivedProcess
spb.BindSerialPortDataReceivedProcessEvent(new SerialPortHelper.DelegateSerialPortDataReceivedProcessEvent(SerialPortDataReceivedProcess));
绑定的方法 SerialPortDataReceivedProcess
示例如下:
/// <summary>
/// 串口接收数据处理
/// </summary>
/// <param name="sender">串口助手类对象</param>
/// <param name="arrData">接收数据数组</param>
private void SerialPortDataReceivedProcess(object sender, byte[] arrData)
{
this.Invoke(new Action(() =>
{
//串口数据处理
}));
}
关于接收数据转换可参考Wiki中的 SerialData 部分。
计划在后续版本中加入的功能与优化,如果有其他功能建议欢迎在 issues 中反馈。
- 简化检测串口流程,删除多余的重复功能。
- 增加接收数据同步获取,与现有的异步获取可同时使用。
- 进一步完善Wiki文档。