USB-Kommunikations-Gerät mit mehreren seriellen ports, funktioniert auf allen Plattformen

Wir haben ein embedded-Gerät, die Verbindung zum PC über USB, und es hat mehrere virtuelle serielle ports (CDC-ACM).

Haben wir diese arbeiten auf Windows. Auf dem embedded-Gerät, wir haben mehrere CDC-ACM-Schnittstellen. Die USB-Deskriptoren deklarieren es als composite-Gerät (Klasse=0xEF, sub-class=2, Protokoll=1), und es hat ein "Interface Association Descriptor" für jede virtuelle serielle Schnittstelle. Unter Windows verwenden wir eine INF-Datei installiert usbser.sys für jeden CDC-ACM-control-interface (MI_00, MI_02, etc).

Aber, wie wir gefunden haben, diese Methode scheint nicht zu funktionieren für Mac. Ich habe festgestellt, dass ich es bekommen kann, um die Arbeit für die Mac und Linux, indem man Sie zu einer "Kommunikation" - Klasse (Klasse=2, sub-class=0, protocol=0), und das entfernen des IADs. (Für Linux, testen mit Ubuntu, ich habe gefunden, dass das funktioniert hat mit der Ubuntu-Linux kernel 2.6.35-28 oder höher. Mit älteren kernels, die nur die erste serielle Schnittstelle funktionierte.) Aber dann, diese Methode funktioniert nicht für Windows.

Welche Methode verwendet werden kann, um ein USB-Gerät mit mehreren virtuellen seriellen Schnittstellen, das funktioniert auf Windows -, Mac -, und Linux? Ich denke, ich würde lieber eine Lösung mit der CDC-ACM-standard so weit wie möglich und vermeidet das schreiben-Ihre-eigenen-Treiber-option, so viel wie möglich.

Schreibe einen Kommentar