c#串口通讯的程序设计
时间: 2024-12-10 09:18:41 浏览: 26
在C#中,串口通讯是一种常见的与外部设备进行数据交换的方式。C#提供了`System.IO.Ports.SerialPort`类来简化串口通讯的实现。以下是一个简单的串口通讯程序设计的步骤和示例代码:
### 步骤:
1. **引入命名空间**:
首先,需要引入`System.IO.Ports`命名空间。
2. **创建串口对象**:
创建一个`SerialPort`对象,并设置其属性,如端口号、波特率等。
3. **打开串口**:
使用`Open()`方法打开串口。
4. **发送数据**:
使用`WriteLine()`或`Write()`方法发送数据。
5. **接收数据**:
可以使用事件处理程序`DataReceived`来接收数据。
6. **关闭串口**:
使用`Close()`方法关闭串口。
### 示例代码:
```csharp
using System;
using System.IO.Ports;
using System.Text;
class SerialPortExample
{
static bool _continue;
static SerialPort _serialPort;
public static void Main()
{
// 创建一个新的SerialPort对象
_serialPort = new SerialPort();
// 设置串口属性
_serialPort.PortName = "COM1"; // 端口号
_serialPort.BaudRate = 9600; // 波特率
_serialPort.Parity = Parity.None; // 奇偶校验
_serialPort.DataBits = 8; // 数据位
_serialPort.StopBits = StopBits.One; // 停止位
_serialPort.Handshake = Handshake.None;
// 设置读取超时
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
// 订阅DataReceived事件
_serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
try
{
// 打开串口
_serialPort.Open();
}
catch (Exception ex)
{
Console.WriteLine("无法打开串口: " + ex.Message);
return;
}
_continue = true;
Console.WriteLine("开始通讯,按任意键退出...");
Console.WriteLine("请输入要发送的数据:");
while (_continue)
{
try
{
string message = Console.ReadLine();
_serialPort.WriteLine(message);
}
catch (Exception ex)
{
Console.WriteLine("发送数据时出错: " + ex.Message);
}
}
// 关闭串口
_serialPort.Close();
}
private static void DataReceivedHandler(
object sender,
SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.WriteLine("接收到的数据: " + indata);
}
}
```
### 说明:
1. **创建`SerialPort`对象**:通过`new SerialPort()`创建一个新的串口对象。
2. **设置串口属性**:设置端口号、波特率、奇偶校验、数据位、停止位等属性。
3. **打开串口**:使用`Open()`方法打开串口。
4. **发送数据**:通过`WriteLine()`方法发送数据。
5. **接收数据**:通过`DataReceived`事件处理程序接收数据。
6. **关闭串口**:使用`Close()`方法关闭串口。
阅读全文