使用C#实现多串口管理
时间: 2023-07-16 09:13:55 浏览: 232
在C#中,可以使用SerialPort类来实现对串口的管理。以下是一个简单的多串口管理的示例代码:
```csharp
using System;
using System.IO.Ports;
namespace MultiSerialPort
{
public class SerialPortManager
{
private SerialPort[] _serialPorts;
public SerialPortManager(int portCount)
{
_serialPorts = new SerialPort[portCount];
for (int i = 0; i < portCount; i++)
{
_serialPorts[i] = new SerialPort();
}
}
public void Open(int portIndex, string portName, int baudRate)
{
if (portIndex >= _serialPorts.Length)
{
throw new ArgumentOutOfRangeException(nameof(portIndex));
}
var port = _serialPorts[portIndex];
port.PortName = portName;
port.BaudRate = baudRate;
port.Open();
}
public void Close(int portIndex)
{
if (portIndex >= _serialPorts.Length)
{
throw new ArgumentOutOfRangeException(nameof(portIndex));
}
var port = _serialPorts[portIndex];
if (port.IsOpen)
{
port.Close();
}
}
public void Write(int portIndex, byte[] buffer, int offset, int count)
{
if (portIndex >= _serialPorts.Length)
{
throw new ArgumentOutOfRangeException(nameof(portIndex));
}
var port = _serialPorts[portIndex];
if (port.IsOpen)
{
port.Write(buffer, offset, count);
}
}
public int Read(int portIndex, byte[] buffer, int offset, int count)
{
if (portIndex >= _serialPorts.Length)
{
throw new ArgumentOutOfRangeException(nameof(portIndex));
}
var port = _serialPorts[portIndex];
if (port.IsOpen)
{
return port.Read(buffer, offset, count);
}
return 0;
}
}
}
```
使用示例:
```csharp
var manager = new SerialPortManager(2);
// 打开第一个串口
manager.Open(0, "COM1", 9600);
// 打开第二个串口
manager.Open(1, "COM2", 9600);
// 向第一个串口写入数据
byte[] data = new byte[] { 0x01, 0x02, 0x03 };
manager.Write(0, data, 0, data.Length);
// 从第二个串口读取数据
byte[] buffer = new byte[1024];
int bytesRead = manager.Read(1, buffer, 0, buffer.Length);
```
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)