C#串口连接的读取和发送详解
概述
C#串口连接是一种常见的数据通信方式,利用串口可以使用C#程序与外部硬件设备进行通信,接收外设传送的数据,也可以向外设发送控制指令。本文将详细讲解C#串口连接的读取和发送。
连接串口
在C#程序中连接串口需要进行以下步骤:
-
引入System.IO.Ports命名空间
csharp
using System.IO.Ports; -
创建串口对象
csharp
SerialPort sp = new SerialPort(); -
配置串口参数
csharp
sp.PortName = "COM1"; // 串口号
sp.BaudRate = 9600; // 波特率
sp.DataBits = 8; // 数据位
sp.StopBits = StopBits.One; // 停止位
sp.Parity = Parity.None; // 校验位 -
打开串口
csharp
sp.Open(); -
关闭串口
csharp
sp.Close();
读取串口数据
进行串口连接后,可以通过如下代码进行串口数据的读取:
if (sp.IsOpen)
{
string receivedData = sp.ReadLine();
}
其中,sp.ReadLine()
方法会一直阻塞直到串口接收到回车符为止。
发送串口数据
进行串口连接后,可以通过如下代码进行串口数据的发送:
if (sp.IsOpen)
{
sp.WriteLine("Hello World!");
}
其中,sp.WriteLine()
方法会自动加上回车符和换行符,可在接收端通过sp.ReadLine()
方法读取。
示例说明1
下面是一个简单的示例程序,演示如何进行串口数据读取和发送:
using System;
using System.IO.Ports;
namespace SerialPortDemo
{
class Program
{
static void Main(string[] args)
{
SerialPort sp = new SerialPort();
sp.PortName = "COM1";
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.StopBits = StopBits.One;
sp.Parity = Parity.None;
try
{
sp.Open();
Console.WriteLine("串口已打开");
while (true)
{
if (sp.IsOpen)
{
string receivedData = sp.ReadLine();
Console.WriteLine($"接收到数据:{receivedData}");
}
Console.Write("请输入要发送的数据:");
string sendData = Console.ReadLine().Trim();
sp.WriteLine(sendData);
}
}
catch (Exception ex)
{
Console.WriteLine($"打开串口时发生错误:{ex.Message}");
}
finally
{
sp.Close();
Console.WriteLine("串口已关闭");
}
}
}
}
该程序会不断读取串口接收到的数据,并将读取到的数据输出到控制台。同时,通过控制台输入要发送的数据,并通过串口发送出去。
示例说明2
下面是一个简单的示例程序,演示如何通过按键对外设进行控制:
using System;
using System.IO.Ports;
namespace SerialPortDemo
{
class Program
{
static void Main(string[] args)
{
SerialPort sp = new SerialPort();
sp.PortName = "COM1";
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.StopBits = StopBits.One;
sp.Parity = Parity.None;
try
{
sp.Open();
Console.WriteLine("串口已打开");
while (true)
{
if (sp.IsOpen)
{
// 接收数据
string receivedData = sp.ReadLine();
Console.WriteLine($"接收到数据:{receivedData}");
}
// 检测按键状态
if (Console.KeyAvailable)
{
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
if (keyInfo.Key == ConsoleKey.A)
{
sp.WriteLine("A");
Console.WriteLine("已发送 A");
}
else if (keyInfo.Key == ConsoleKey.B)
{
sp.WriteLine("B");
Console.WriteLine("已发送 B");
}
else if (keyInfo.Key == ConsoleKey.C)
{
sp.WriteLine("C");
Console.WriteLine("已发送 C");
}
}
}
}
catch (Exception ex)
{
Console.WriteLine($"打开串口时发生错误:{ex.Message}");
}
finally
{
sp.Close();
Console.WriteLine("串口已关闭");
}
}
}
}
该程序会不断读取串口接收到的数据,并将读取到的数据输出到控制台。同时,通过按下A
、B
、C
键控制向串口发送数据,实现对外设的控制。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#串口连接的读取和发送详解 - Python技术站