SerialPortHelper - xiaoxinpro/SerialPortHelper GitHub Wiki
串口助手类,负责串口开关、数据接收、数据发送的任务。
1、使用前的准备工作
在打开端口前需要一些配置工作,主要有获取串口号、设定串口配置,委托接收函数。
其中获取串口号和设定串口配置在DetectCom
和ConfigCom
中有具体说明,最终保存在一个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));
配置信息和委托接收函数也可以在实例化后动态修改添加,具体内容将在后面详细说明。