¿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)