C#串口通信
在.NET下编写串口通信程序有3中方法:
- 第一种方法:通过采用MSComm控件,这是最简单的,最方便的方法。
- 第二种方法:采用.NET中推出的一个串口控件SerialPort,可以方便实现所需要串口通信的多种功能。
- 第三种方法:用API函数进行串口通信,难度高。
1、SerialPort类
表示串行端口资源。
命名空间: System.IO.Ports
(1)常用属性
BaudRate:获取或设置串行波特率
DataBits:获取或设置每个字节的标准数据位长度。
IsOpen:获取一个值,该值指示 SerialPort 对象的打开或关闭状态。
PortName:获取或设置通信端口,包括但不限于所有可用的 COM 端口。
Parity:获取或设置奇偶校验检查协议。
StopBits:获取或设置每个字节的标准停止位数。
(2)方法
Close:关闭端口连接,将IsOpen 属性设置为false,并释放内部 Stream 对象。
Open:打开一个新的串行端口连接。
Write(Byte[], Int32, Int32):使用缓冲区中的数据将指定数量的字节写入串行端口。
Write(Char[], Int32, Int32):使用缓冲区中的数据将指定数量的字符写入串行端口。
Write(String):将指定的字符串写入串行端口。
WriteLine(String):将指定的字符串和 NewLine 值写入输出缓冲区。
Read(Byte[], Int32, Int32):从 SerialPort 输入缓冲区读取一些字节并将那些字节写入字节数组中指定的偏移量处。
Read(Char[], Int32, Int32):从 SerialPort 输入缓冲区中读取一些字符,然后将这些字符写入字符数组中指定的偏移量处。
ReadByte():从 SerialPort 输入缓冲区中同步读取一个字节。
ReadChar():从 SerialPort 输入缓冲区中同步读取一个字符。
ReadExisting():在编码的基础上,读取 SerialPort 对象的流和输入缓冲区中所有立即可用的字节。
ReadLine():一直读取到输入缓冲区中的 NewLine 值。
ReadTo(String):一直读取到输入缓冲区中的指定 value 的字符串。
(3)事件
DataReceived:指示已通过由 SerialPort 对象表示的端口接收了数据。
Disposed:通过调用释放组件时发生 Dispose 方法。(继承自 Component。)
ErrorReceived:指示由 SerialPort 对象表示的端口上发生了错误。
PinChanged:指示由 SerialPort 对象表示的端口上发生了非数据信号事件。
2、SerialPort控件使用流程
流程是设置通信端口号及波特率、数据位、停止位和校验位,再打开端口连接、发送数据、接收数据,最后关闭端口连接步骤。