C#串口通讯概念及简单的实现方法
什么是串口通讯?
串口通讯是一种通过串行线(即一根数据线)来传输数据的通讯方式。在计算机领域,串口通讯常用于连接计算机和外部设备,如嵌入式设备,传感器等。在C#语言中,可以使用SerialPort类实现串口通讯功能。
SerialPort类的使用方法
在使用SerialPort类之前,需要引用System.IO.Ports命名空间。下面是一个简单的SerialPort类使用的示例:
// 创建SerialPort对象
SerialPort sp = new SerialPort();
// 设置串口号、波特率、校验位、数据长度、停止位等参数
sp.PortName = "COM1";
sp.BaudRate = 9600;
sp.Parity = Parity.None;
sp.DataBits = 8;
sp.StopBits = StopBits.One;
// 打开串口
sp.Open();
// 写入数据
sp.Write("Hello World!");
// 关闭串口
sp.Close();
上述代码中,我们首先创建了SerialPort对象,然后设置了串口号、波特率、校验位、数据长度、停止位等参数。接下来,我们打开了串口,写入了数据,最后关闭了串口。需要注意的是,串口通讯需要在使用完毕后关闭串口,否则会有资源占用等问题。
简单的实现方法
下面是一个基于SerialPort的简单串口读写示例:
using System;
using System.IO.Ports;
class Program {
static void Main() {
// 创建SerialPort对象
SerialPort mySerialPort = new SerialPort("COM1");
// 设置参数
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
// 打开串口
mySerialPort.Open();
// 读取数据
string message;
do {
message = mySerialPort.ReadLine();
Console.WriteLine(message);
} while (message.Trim() != "exit");
// 关闭串口
mySerialPort.Close();
}
}
上述代码中,我们创建了SerialPort对象,并设置了参数。接下来,我们打开了串口,并使用ReadLine方法读取串口中的数据,并将其打印在控制台上。当读取到"exit"时,程序退出,并关闭了串口。
示例说明
这里给出两个简单的示例说明:
示例一:LED控制
假设我们有一个开关控制的LED灯,需要使用串口通讯控制其开关,下面是一个简单的代码示例:
using System;
using System.IO.Ports;
class Program {
static void Main() {
// 创建SerialPort对象
SerialPort mySerialPort = new SerialPort("COM1");
// 设置参数
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
// 打开串口
mySerialPort.Open();
// 控制LED灯
while (true) {
Console.Write("请输入指令(on、off):");
string cmd = Console.ReadLine();
if (cmd == "on") {
mySerialPort.Write("1");
} else if (cmd == "off") {
mySerialPort.Write("0");
}
}
// 关闭串口
mySerialPort.Close();
}
}
上述代码中,我们通过从控制台输入指令(on、off)来控制LED灯的开关。程序将指令通过串口发送给外部设备,从而实现了对LED灯的控制。
示例二:温度传感器
现在有一个温度传感器,需要定时从传感器读取温度,并将温度数据打印到控制台上,下面是一个简单的代码示例:
using System;
using System.IO.Ports;
class Program {
static void Main() {
// 创建SerialPort对象
SerialPort mySerialPort = new SerialPort("COM1");
// 设置参数
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
// 打开串口
mySerialPort.Open();
// 读取温度数据
while (true) {
string message = mySerialPort.ReadLine();
double temperature = Convert.ToDouble(message);
Console.WriteLine("当前温度为:{0}℃", temperature);
}
// 关闭串口
mySerialPort.Close();
}
}
上述代码中,我们通过ReadLine方法读取串口中的温度数据,并将其转换为浮点数。然后将转换后的温度数据打印到控制台上,实现了对温度传感器的读取。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#串口通讯概念及简单的实现方法 - Python技术站