.NET 2.0提供了对串口通信功能的支持,在命名空间System.IO.Ports下找到SerialPort类,通过创建一个新的SerialPort对象,我们就可以在.NET程序中控制串口通讯的全过程。
(1).属性介绍
进行串口通讯时,需要设置一些相关参数,可以通过设置SerialPort类的属性来进行。
SerialPort属性主要包括:
.PortName 串口名称,COM1, COM2等。
.BaudRate 波特率,也就是串口通讯的速度,进行串口通讯的双方其波特率需要相同,如果用PC连接其他非PC系统,一般地,波特率由非PC系统决定。
.Parity 奇偶校验。可以选取枚举Parity中的值
.DataBits 数据位
.StopBits 停止位,枚举StopBits中的值
.Handshake 握手方式,也就是数据流控制方式,枚举Handshake中的值
(2).打开与关闭串口
在创建一个SerialPort对象,设置串口属性后,可以通过Open()方法打开串口。数据读写完成后,可以通过Close()方法关闭串口。
根据经验,对于有些系统,在打开串口后,还需要将RtsEnable设置为True,这样才能读写数据,否则不能正常读写数据。
(4).读写字节或字符数据 对于字节或字符数据,用Read()方法来读数据,该方法需要一个字节或字符数组作为参数来保存读取的数据,结果返回实际读取的字节或字符数。 写数据使用Write()方法,该方法可以将字节数组、字符数据或字符串发送给另一方。
(5).事件 SerialPort提供了DataReceived事件。当有数据进入时,该事件被触发。 该事件的触发由操作系统决定,当有数据到达时,该事件在辅助线程中被触发。辅助线程的优先级比较低,因此并不能确保每个字节的数据到达时,该事件都被触发。
========================效果图 ==============================
代码段:
public partial class SerialPortEx : Form
{
private SerialPort sp = new SerialPort();
bool isOpen = false; //
bool isSetProperty = false; //属性设置标志
bool isHex = false; //十六进制显示标志
bool isFileOpen = false;
string RecvDataText = null;
public SerialPortEx()
{
InitializeComponent();
}
private void SerialPort_Load(object sender, EventArgs e) //串口列表
{
for (int i