2012-07-13 2 views
9

Ich bin auf der Suche nach einer C++ - Bibliothek, die mit seriellen Geräten verbinden und kommunizieren kann. Ich brauche eine, die unter Windows und Linux verwendet werden kann. Ich habe "serialib" bereits gefunden, aber dies hat keine Funktion zum Aufzählen der verfügbaren Ports.Gibt es eine plattformübergreifende C++ - Bibliothek für serielle Ports, die Ports aufzählen kann?

Also brauche ich entweder eine plattformübergreifende "Port Enumerator" -Bibliothek oder eine komplett neue Cross-Plattform-Bibliothek für serielle Ports.

Kennt jemand von einem guten?

Danke, Dan.

+0

Sie versuchen, das falsche Problem zu lösen. Die Tage, an denen Sie ein serielles Kabel in einen klar beschrifteten Stecker auf der Rückseite der Maschine einstecken könnten, sind lange vorbei. Sie können eine Liste der verfügbaren Ports mit einem systemeigenen Anruf abrufen, die Ihnen jedoch immer noch nicht mitteilt, welcher dieser Ports tatsächlich mit dem Gerät verbunden ist. Der Benutzer muss das herausfinden. Geben Sie ihm eine Konfigurationsdatei, die es ihm ermöglicht, den Portnamen einzugeben. Jetzt ist es egal, welches spezifische Format für den Portnamen verwendet wird. –

+3

Einen Portnamen in eine Konfigurationsdatei schreiben zu müssen, ist eine Unannehmlichkeit. Ich habe Cross-Plattform-Anwendungen gesehen, die nutzbare/verbundene Ports auflisten und eine Liste für den Benutzer bereitstellen. Das ist was ich will. (Ein gutes Beispiel ist die Arduino IDE, diese ist jedoch in Java geschrieben.) – DanJAB

+0

Sie haben eine plattformübergreifende Bibliothek für Arduino gefunden? Natürlich ist es für den Benutzer eine Unannehmlichkeit. Serielle Ports stammen aus den Siebzigern, vierzig Jahre alte Hardware, die Plug-and-Bet nicht unterstützt. Der Fehler besteht darin, sich auf einen vierzig Jahre alten Hardware-Standard zu verlassen. Und ja, wahrscheinlich nicht Ihre Schuld, ein Hardware-Anbieter wählte die einfache Route. Suchen Sie einen anderen Anbieter. –

Antwort

2

Bei dem Projekt QextSerialPort handelt es sich um eine plattformübergreifende Bibliothek für serielle Ports, die eine Port-Enumeration enthält. Here ist ihr Beispiel für eine einfache Aufzählung aller seriellen Ports.

+1

Danke für den Vorschlag, ich bin mir nicht sicher, ob ich das wirklich suche, da ich Qt nicht benutze. – DanJAB

+1

Fair genug, aber bedenken Sie, dass Sie die GUI-Funktionen von Qt nicht verwenden müssen. Die QtCore-Bibliothek (alles, was zur Verwendung von QextSerialPort benötigt wird) hängt nur von Glib und PCRE ab. – wjl

+0

Ich hatte Fehler über Fehler beim Versuch, QextSerialPort in z. Eclipse anstelle von QtCreator – user3085931

7

http://wjwwood.io/serial/

https://github.com/wjwwood/serial

Dies ist eine plattformübergreifende serielle Schnittstelle Bibliothek, die MIT-Lizenz und hat keine externen Abhängigkeiten für Laufzeit.

+1

Danke dafür, sieht genau so aus, wie ich es wollte. Ich habe bereits begonnen, das hier zu verwenden: http://www.teuniz.net/RS-232/ und das funktioniert gut für mich. – DanJAB

+0

Über [http://www.teuniz.net/RS-232](http://www.teuniz.net/RS-232):
_ "Es verwendet Abruf, um Zeichen von der seriellen Schnittstelle zu empfangen. Interrupt/ereignisbasiert wird nicht unterstützt. "_
Andere Optionen ohne die oben genannten Einschränkungen? –

+0

Leider ist die Bibliothek ziemlich sorglos in Bezug auf Speicherzuweisungen, Lecks, Auslösen von Ausnahmen, Sperren und soweit ich sehen kann, unterstützt async IO nicht. – Trass3r