为了实现串口通信,首先需要掌握C#中的串口通信相关类和方法。常用的类有SerialPort和SerialDataReceivedEventArgs,常用的方法有Open和Write等。下面分步骤讲解实现串口通信的完整攻略。
1. 新建C#控制台应用程序
首先,打开Visual Studio,新建一个C#控制台应用程序。选择“新建项目”-->“Visual C#”-->“控制台应用程序”,然后填写应用程序名称和保存路径,点击“创建”按钮。
2. 添加串口通讯类
在项目中添加一个类,用于串口通讯。右键单击项目工程文件,选择“添加”-->“新建项”,在弹出的添加新项对话框中,选择“类”,命名为“SerialCommunication.cs”。
3. 编写串口通讯类
在SerialCommunication.cs文件中,首先需要引用System.IO.Ports命名空间,并添加一个SerialPort对象,在类的构造函数中初始化串口通讯相关的参数,比如波特率(BaudRate)、数据位(DataBits)、停止位(StopBits)等等。然后,需要编写串口开启(Open)和关闭(Close)方法,以及数据发送(Write)和数据接收(DataReceived)方法。
using System;
using System.IO.Ports;
class SerialCommunication
{
private SerialPort serialPort = new SerialPort();
public SerialCommunication(string portName)
{
serialPort.PortName = portName;
serialPort.BaudRate = 9600;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
serialPort.Parity = Parity.None;
serialPort.ReadTimeout = 500;
serialPort.WriteTimeout = 500;
serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
}
public void Open()
{
try
{
serialPort.Open();
Console.WriteLine("串口已开启");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public void Close()
{
try
{
serialPort.Close();
Console.WriteLine("串口已关闭");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public void Write(string data)
{
if (serialPort.IsOpen)
{
try
{
serialPort.WriteLine(data);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
else
{
Console.WriteLine("串口未连接");
}
}
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string data = sp.ReadExisting();
Console.WriteLine("收到数据:" + data);
}
}
在以上代码中,当串口接收到数据时,会触发DataReceived事件,并调用DataReceivedHandler方法来处理接收到的数据。
4. 使用串口通讯类
在控制台应用程序的Main函数中,实例化SerialCommunication类,然后调用Open方法打开串口,调用Write方法发送数据,最后调用Close方法关闭串口。示例代码如下:
static void Main(string[] args)
{
SerialCommunication serialCommunication = new SerialCommunication("COM1");
serialCommunication.Open();
serialCommunication.Write("Hello World");
serialCommunication.Close();
Console.ReadLine();
}
5. 示例说明
下面给出两个示例,演示如何在C#中实现串口通信。
示例一:单片机发送数据到电脑
在单片机代码中,使用UART向电脑端口发送数据。C#代码打开串口,接收单片机发送的数据,然后在控制台上输出。
// 单片机代码
void main()
{
while(1)
{
UART_Write_String("Hello World\n");
delay_ms(1000);
}
}
// C#代码
static void Main(string[] args)
{
SerialCommunication serialCommunication = new SerialCommunication("COM1");
serialCommunication.Open();
Console.ReadLine();
serialCommunication.Close();
Console.ReadLine();
}
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string data = sp.ReadExisting();
Console.WriteLine("Received data: " + data);
}
示例二:电脑发送数据到单片机
在C#代码中,打开串口,向电脑端口发送数据。单片机代码使用UART接收数据,并打印到串口调试器上。
// 单片机代码
void main()
{
while(1)
{
char buf[128];
int len = UART_Read(buf, sizeof(buf));
if(len > 0)
{
UART_Write(buf, len);
}
delay_ms(100);
}
}
// C#代码
static void Main(string[] args)
{
SerialCommunication serialCommunication = new SerialCommunication("COM1");
serialCommunication.Open();
serialCommunication.Write("Hello World");
serialCommunication.Close();
Console.ReadLine();
}
以上就是使用C#实现简单串口通讯的完整攻略,通过以上步骤,你就可以实现基础的串口通讯功能了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现简单串口通信 - Python技术站