购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 SerialPort串口对象

在.NET平台下,串口通信通常使用SerialPort进行程序开发。Visual Studio将SerialPort作为一个可拖放的组件放置在工具箱中,使得开发者可以方便地将其拖放到窗体设计器中使用。然而,这种方法虽然简单,但有一些局限性,主要是需要以窗体作为载体才能使用,不利于在非GUI环境下的应用开发或者在更复杂的应用程序结构中使用。

因此,一般建议开发者将SerialPort视为一个类而不是一个组件,通过编写代码的方式来使用它。这种方式更灵活,可以在不依赖于窗体的情况下实现串口通信,并且更适合在大型或复杂的应用程序中进行串口通信的集成。

我们创建一个新的Windows窗体应用,由于SerialPort来自System.IO.Ports命名空间,因此我们先手动添加命名空间。

然后我们在构造方法中输入SerialPort,选中SerialPort,单击鼠标右键查看相关代码。进入SerialPort中,通过分析,我们可以看到SerialPort的主要组成部分包括构造方法、常用属性、实例方法和相关事件,下面我们分别从这几个部分对其进行分析。

3.1.1 SerialPort构造方法

SerialPort中的构造方法如下所示。

从构造方法来看,SerialPort中包含了6种不同的构造方法重载,目的是初始化串口的常用属性,这些常用属性分别是端口号(portName)、波特率(baudRate)、奇偶校验位(parity)、数据位(dataBits)以及停止位(stopBits)。

我们可以根据需要在实例化的时候直接传入需要初始化的串口参数,也可以先通过无参构造方法实例化一个SerialPort对象,再根据需要给对应的属性赋值。这些属性如果不通过代码手动赋值的话,它们的值为默认值。

3.1.2 SerialPort常用属性

SerialPort的常用属性如下所示。

(1)DtrEnable:获取或设置一个值,该值在串行通信过程中启用数据终端就绪信号,默认为False。

(2)RtsEnable:获取或设置一个值,该值指示在串行通信过程中是否启用请求发送信号,默认为False。

(3)IsOpen:获取或设置一个值,该值指示SerialPort对象的打开或关闭状态。

(4)PortName:获取或设置通信端口,包括但不限于所有可用的COM端口。

(5)BaudRate:获取或设置串行波特率,默认值为9600。

(6)DataBits:获取或设置每个字节的数据位长度,数据位长度的标准值为5、7、8,默认值为8。

(7)Parity:获取或设置奇偶校验检查协议,默认值为无校验。

(8)StopBits:获取或设置每个字节的标准停止位数,默认值为1。

(9)ReadBufferSize:获取或设置SerialPort输入缓冲区的大小,默认值为4096。

(10)ReadTimeout:获取或设置读取操作未完成时发生超时之前的毫秒数,默认值为-1。

(11)ReceivedBytesThreshold:获取或设置DataReceived事件发生前输入缓冲区中的字节数,默认值为1。

(12)WriteBufferSize:获取或设置串行端口输出缓冲区的大小,默认值为4096。

(13)WriteTimeout:获取或设置写入操作未完成时发生超时之前的毫秒数,默认值为-1。

(14)BytesToRead:获取接收缓冲区中数据的字节数。

(15)Encoding:获取或设置传输前后文本转换的字节编码。

3.1.3 SerialPort常用方法

SerialPort中的常用方法如下所示。

(1)GetPortNames:获取当前计算机的串行端口名数组,这是一个静态方法。

(2)Close:关闭端口连接,执行此方法将自动释放内部缓冲区(Stream),并将IsOpen设置为False。

(3)DiscardInBuffer:丢弃来自串行驱动程序接收缓冲区中的数据。

(4)DiscardOutBuffer:丢弃来自串行驱动程序传输缓冲区中的数据。

(5)Open:打开一个新的串行端口连接。

(6)Read:从输入缓冲区读取一些字节/字符,并将其写入字节/字符数组中指定的偏移处。

(7)ReadByte:从输入缓冲区中同步读取一个字节。

(8)ReadChar:从输入缓冲区中同步读取一个字符。

(9)ReadExisting:在编码基础上,读取SerialPort对象的流和输入缓冲区中所有立即可用的字节。

(10)ReadLine:一直读取到输入缓冲区中的NewLine值。

(11)ReadTo:一直读取到输入缓冲区中指定value的字符串。

(12)Write:将指定的数据写入串行端口的输出缓冲区。

(13)WriteLine:将指定的字符串和NewLine值写入输出缓冲区。

3.1.4 SerialPort常用事件

SerialPort中的常用事件如下所示。

(1)DataReceived:表示将处理SerialPort对象的数据接收事件的方法,配合属性ReceivedBytesThreshold使用。若接收数据为固定长度,则可以将ReceivedBytesThreshold设置为接收数据的长度;若接收数据以固定字符结尾,则可以配合ReadTo方法使用。

(2)ErrorReceived:表示处理SerialPort对象的错误事件的方法。

(3)PinChanged:表示将处理SerialPort对象的串行引脚更新事件的方法。 GPG9gtCSscUkx0UTgGjwvGQ/96sq2UELay57vmlzMJvDlBs8soXiLqHFynrtfRlw

点击中间区域
呼出菜单
上一章
目录
下一章
×