# SerialPortHelper
**Repository Path**: er_eggs/SerialPortHelper
## Basic Information
- **Project Name**: SerialPortHelper
- **Description**: 基于C#的串口助手类库
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2024-12-10
- **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)文档。