c# windows serial-port usb mbed

¿Comunicándose con un dispositivo USB a través de "Puerto serie virtual USB" usando C#?



windows serial-port (1)

Recientemente conecté un dispositivo USB incorporado (mbed lpc1768) usando un cable USB normal a un escritorio con Windows 7. De acuerdo con los documentos que vienen con el programa que se ejecuta en el dispositivo, se comunica con el host (escritorio) a través de un puerto serie virtual USB.

¿Por dónde empiezo si necesito leer / escribir datos usando c #? ¿Puedo usar la clase SerialPort .NET o necesito usar la biblioteca LibUsbDotNet o tal vez alguna otra cosa?


Es una excelente noticia cuando descubro que un dispositivo USB se comunica en VCP en lugar de USB-HID, porque las conexiones en serie son fáciles de entender.

Si el dispositivo está funcionando en VCP (Virtual Com Port), entonces es tan fácil como usar el tipo System.IO.Ports.SerialPort . Necesitará conocer información básica sobre el dispositivo, la mayoría de los cuales puede obtenerse de la Administración de Windows (Administrador de dispositivos). Después de construir de esta manera:

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

Puede o no necesitar establecer algunos indicadores adicionales, como Solicitud para enviar (RTS) y Data Terminal Ready (DTR)

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

Luego, abre el puerto.

port.Open();

Para escuchar, puede adjuntar un controlador de eventos a port.DataReceived y luego usar 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 };

Para enviar, puede usar port.Write(byte[] buffer, int offset, int count)