C#上位机系列教程零基础入门-串口收发
欢迎来到C#上位机教程的零基础入门!本教程将帮助你从零开始学习C#编程,并使用C#构建上位机应用程序,本教程将以经典的串口工具开发为Demo,讲述一个项目如何去实现,本节内容将讲述串口的收发
1、首先介绍在SerialPort 类中,串口数据发送的几个方法
public void Write(byte[] buffer,int offset,int count);
public void Write(string text);
public void Write(char[] buffer, int offset,int count);
public void WriteLine(string text);
2、串口数据的接收方法
public int Read(byte[] buffer, int offset, int count);
public int Read(char[] buffer, int offset, int count);
public int ReadByte();
public string ReadExisting();
public string ReadLine();
public string ReadTo(string value);
public event SerialDataReceivedEventHandler DataReceived;
以上方法可以在SerialPort 类中找到,并可以尝试使用,并加强理解
3、本节主要实现的目标是实现串口工具数据的发送和接收件,具体功能下图:
配置好虚拟串口后分别打开两个串口工具实例,并各自打开COM2,和COM3,当在实例1的发送区中填入内容后点击手动发送,实例2的接收区能够接收到实例1发送的内容,当在实例2的发送区中填入内容点击手动发送,实例1的接收区能够接收实例2发送的内容。具体实现代码如下:
当实例1发送区的"手动发送"按钮产生一个"Click"事件时将调用以下代码:
private void send_btn_Click(object sender, EventArgs e)
{
// 如果发送的数据不为空且串口已经打开,则发送
if (this.send_rtb.Text != "" && serialPort1.IsOpen)
{
//this.recive_rtb.AppendText(this.send_rtb.Text);
serialPort1.Write(send_rtb.Text);
}
else
{
MessageBox.Show("请先输入发送数据!");
}
}
如果发送区的内容不为空且串口已经打开,则调用实例serialPort1的Write方法将指定的字符串写入串行端口。
串口数据的接收我们需要先定义一个serialPort1对象的DataReceived事件
具体操作如下:
单击seralPort1对象DataReceived事件中定serialPort1_DataReceived方法,代码如下:
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string dataRecive = serialPort1.ReadExisting();
recive_rtb.AppendText(dataRecive);
}
SerialPort.ReadExisting 方法会读取 SerialPort 对象的流和输入缓冲区中所有立即可用的字节,并返回string类型的数据。接收区对象通过AppendText方法添加返回的String并在接收区的文本框显示。当 SerialPort 对象表示的端口接收了数据后会触发DataReceived事件,同时会调用serialPort1_DataReceived方法。