Communiquer avec un périphérique USB via “serial port virtuel USB” en utilisant C #?

J’ai récemment branché un périphérique USB (mbed lpc1768) à l’aide d’un câble USB normal sur un bureau Windows 7. Selon les documents fournis avec le programme en cours d’exécution sur l’appareil, il communique avec l’hôte (bureau) via un port série virtuel USB.

Où dois-je commencer si je dois lire / écrire des données en utilisant c #? Puis-je utiliser la classe SerialPort .NET ou dois-je utiliser la bibliothèque LibUsbDotNet ou peut-être quelque chose d’autre?

C’est une excellente nouvelle lorsque je découvre qu’un périphérique USB communique au format VCP plutôt que USB-HID, car les connexions série sont faciles à comprendre.

Si le périphérique fonctionne dans VCP (Virtual Com Port), il est aussi simple que d’utiliser le type System.IO.Ports.SerialPort . Vous aurez besoin de connaître certaines informations de base sur le périphérique, dont la plupart peuvent être extraites de Windows Management (Gestionnaire de périphériques). Après avoir construit comme ça:

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

Vous pouvez ou non avoir besoin de définir des indicateurs supplémentaires, tels que RTS ( Request to send ) et DTR ( Data Terminal Ready )

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

Ensuite, ouvrez le port.

port.Open();

Pour écouter, vous pouvez attacher un gestionnaire d’événement à port.DataReceived , puis utiliser 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 }; 

Pour envoyer, vous pouvez utiliser port.Write(byte[] buffer, int offset, int count)