使用 C# 通过“USB 虚拟串行端口”与 USB 设备通信

本文关键字:USB 通信 虚拟 通过 使用 串行端口 | 更新日期: 2023-09-27 18:36:34

我最近使用普通的USB电缆将USB嵌入式设备(mbed lpc1768)插入Windows 7桌面。 根据在设备上运行的程序附带的文档,它通过USB虚拟串行端口与主机(桌面)通信。

如果我需要使用 c# 读取/写入数据,从哪里开始? 我可以使用SerialPort .NET类还是需要使用LibUsbDotNet库或其他东西?

使用 C# 通过“USB 虚拟串行端口”与 USB 设备通信

当我发现USB设备在VCP而不是USB-HID中进行通信时,这是一个好消息,因为串行连接很容易理解。

如果设备在VCP(虚拟 COM 端口)中运行,则与使用 System.IO.Ports.SerialPort 类型一样简单。您需要了解有关设备的一些基本信息,其中大部分可以从Windows管理(设备管理器)收集。像这样构造后:

SerialPort port = new SerialPort(portNo, baudRate, parity, dataBits, stopBits);

您可能需要也可能不需要设置一些其他标志,例如发送请求 (RTS) 和数据终端就绪 (DTR)

port.RtsEnable = true;
port.DtrEnable = true;

然后,打开端口。

port.Open();

若要侦听,可以将事件处理程序附加到port.DataReceived,然后使用port.Read(byte[] buffer, int offset, int count)

port.DataReceived += (sender, e) => 
{ 
    byte[] buffer = new byte[port.BytesToRead];
    port.Read(buffer,0,port.BytesToRead);
    // Do something with buffer
};

要发送,您可以使用port.Write(byte[] buffer, int offset, int count)