# SerialPortHelper
**Repository Path**: djc0/SerialPortHelper
## Basic Information
- **Project Name**: SerialPortHelper
- **Description**: 基于C#的串口助手类库
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 2
- **Created**: 2022-02-12
- **Last Updated**: 2024-12-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# SerialPortHelper
SerialPortHelper是一款基于C#的串口助手类库。
项目处于开发测试阶段,未经充分测试与验证,不推荐用于生产环境。
> 目前操作逻辑可能随时变动,不保证接口与功能向后兼容。
欢迎加入测试并向我们提交BUG或建议,请下载最新[Releases](https://github.com/xiaoxinpro/SerialPortHelper/releases)版本参与测试!
## 开发状态
串口助手类库项目,目前基于 .NET Framework 3.5 编译,若需要 .NET Framework 4+ 可以直接自行修改框架编译。
> 使用文档:https://github.com/xiaoxinpro/SerialPortHelper/wiki
注意:目前处于开发阶段无法用于生产,有想法或建议请[Issues](https://github.com/xiaoxinpro/SerialPortHelper/issues)。
## 使用实例
* [SerialPortHelperTest](https://github.com/xiaoxinpro/SerialPortHelper/tree/master/SerialPortHelperTest) 串口助手类库测试项目,主要用于演示SerialPortHelper类库的各项功能与测试任务。
* [SerialPostTool](https://github.com/xiaoxinpro/SerialPortHelper/tree/master/SerialPostTool) 串口调试工具,基于SerialPortHelper类库开发的高级串口调试工具,下载后可直接使用。
## 快速上手
这里只列举部分功能,详细操作文档请参考[使用文档](https://github.com/xiaoxinpro/SerialPortHelper/wiki)
### 前期准备
使用前需要引用 ```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``` 示例如下:
///
/// 串口接收数据处理
///
/// 串口助手类对象
/// 接收数据数组
private void SerialPortDataReceivedProcess(object sender, byte[] arrData)
{
this.Invoke(new Action(() =>
{
//串口数据处理
}));
}
> 关于接收数据转换可参考Wiki中的 [SerialData](https://github.com/xiaoxinpro/SerialPortHelper/wiki/SerialData) 部分。
## 开发计划
计划在后续版本中加入的功能与优化,如果有其他功能建议欢迎在 [issues](https://github.com/xiaoxinpro/SerialPortHelper/issues) 中反馈。
* 简化检测串口流程,删除多余的重复功能。
* 增加接收数据同步获取,与现有的异步获取可同时使用。
* 进一步完善[Wiki](https://github.com/xiaoxinpro/SerialPortHelper/wiki)文档。