2024年5月11日发(作者:)

开发C#相关的项目有很多年了,一直没有接触串口的开发,近期由于工作的需要,需要了解熟悉对硬件串口的开发,通过对串口的深

入了解,串口也不再是什么神秘的东西,利用SerailPort组件,对串口的各种操作也非常的方便,由于本人总是喜欢把一些常用的东

西封装成可供重复利用的类库,因此,阅百家代码,提炼总结优化,把对串口的操作封装成一个公用的类库,应付日常的串口编程开

发,也算是工作的一个阶段性总结吧。

先上图,了解串口的一些基本的东西,并逐步介绍相关的知识。

微软在 .NET FrameWork2.0中对串口通讯进行了封装,我们可以在.net2.0及以上版本开发时直接使用SerialPort类对串口进行读写

操作。

SerialPort类的属性主要包括:

1)串口名称(PortName)

2)波特率(BaudRate)

3)数据位 DataBits

4)停止位 StopBits

5)奇偶校验 Parity

SerialPort类的事件主要包括:

DataReceived:用于异步接收串口数据事件

ErrorReceived:错误处理事件

SerialPort类的方法主要包括:

Open();Close();Read();Write()、DiscardInBuffer()、DiscardOutBuffer()等

从上面的测试例子图中,我们可以看到,一般对串口的操作,需要提供串口号、波特率、数据位、停止位、奇偶校验的参数,用来构

造一个串口操作类,以便实现具体的串口操作,而这些参数有的是系统内置的枚举参数,我们可以通过遍历枚举对象来绑定下来列表

(如停止位、奇偶校验);但有些参数却不是系统内置的枚举类型,例如波特率、数据位等,而且对这些参数操作也是串口开发经常

用到的,因此,第一步,我对这些参数的绑定做了一个简单的封装。

1、先构造波特率、数据位这两个枚举对象,方便实际操作。

///

/// 串口数据位列表(5,6,7,8)

///

public enum SerialPortDatabits : int

{

FiveBits = 5,

SixBits = 6,

SeventBits = 7,

EightBits = 8

}

///

/// 串口波特率列表。

/// 75,110,150,300,600,1200,2400,4800,9600,14400,19200,28800,38400,56000,57600,

/// 115200,128000,230400,256000

///

public enum SerialPortBaudRates : int

{

BaudRate_75 = 75,