SerialPortHelper - xiaoxinpro/SerialPortHelper GitHub Wiki

串口助手类,负责串口开关、数据接收、数据发送的任务。

1、使用前的准备工作

在打开端口前需要一些配置工作,主要有获取串口号、设定串口配置,委托接收函数。

其中获取串口号和设定串口配置在DetectComConfigCom中有具体说明,最终保存在一个ConfigComType结构体中即可,本章节不再赘述。

委托接收函数为无返回带有BYTE数组参数的方法,原型如下:

public delegate void DelegateSerialPortDataReceivedProcessEvent(byte[] arrDataReceived);

其中arrDataReceived为接收到的数据。

    //委托接收函数实例
    private void SerialPortDataReceivedProcess(byte[] arrData)
    {
        if (SerialData.IsBytesToString(arrData))
        {
            Console.WriteLine("接收数据:" + SerialData.ToString(arrData));
        }
        else
        {
            Console.WriteLine("接收数据:" + SerialData.ToHexString(arrData));
        }
    }

2、实例化串口助手类

2.1、简单实例化(无参)

串口助手类实例化可不带参数,后续参数在逐步添加,例如SerialPortHelper spb = new SerialPortHelper();

2.2、带配置信息的实例化

配置信息在ConfigCom类中已有保存,直接获取或手动填充都可以。

    //从ConfigCom对象中获取配置
    ConfigComType ConfigSerialPort = new ConfigCom(cbSerial).GetConfigComData();
    SerialPortHelper spb = new SerialPortHelper(ConfigSerialPort);

手动设定串口配置(不推荐)

    ConfigComType cct;
    cct.PortName = "COM1";
    cct.BaudRate = 9600;
    cct.DataBits = 8;
    cct.StopBits = StopBits.One;
    cct.Parity = Parity.None;
    SerialPortHelper spb = new SerialPortHelper(cct);

需要注意,使用ConfigCom类中的GetConfigComData方法可以只指定几个配置,其他默认填充;但使用ConfigComType必须将所有内容赋值,否则将出现异常。

2.3、带配置信息和委托接收函数的实例化

委托函数在第1节中已经介绍,这里直接使用其函数名作为参数实例化即可。

    ConfigComType ConfigSerialPort = new ConfigCom(cbSerial).GetConfigComData();
    SerialPortHelper spb = new SerialPortHelper(ConfigSerialPort, new SerialPortHelper.DelegateSerialPortDataReceivedProcessEvent(SerialPortDataReceivedProcess));

配置信息和委托接收函数也可以在实例化后动态修改添加,具体内容将在后面详细说明。