Ich verwende ein serielles Gerät für ein Projekt, und was ich versuche, PC-Seite zu erreichen, ist das Abhören eines vom seriellen Gerät gesendeten Befehls, das Interpretieren der Abfrage, Ausführen von Code abhängig von der Abfrage und Übertragen zurück das Ergebnis.
Um ehrlich zu sein habe ich versucht, PHP als Listener zu verwenden, und es funktioniert, leider lädt die Endlosschleife, die benötigt wird, um das Skript als Empfänger zu verwenden, die CPU auf 25%. Es ist also nicht die beste Option.
Ich benutze gerade Cygwin, ich möchte ein Bash-Skript mit Linux-nativen Befehlen erstellen.
Ich kann Daten empfangen mit:
%Vor%Und senden Sie eine Antwort mit:
%Vor%Meine Frage ist, wie kann ich einen automatisierten Listener einrichten, um Daten empfangen und senden zu können? Das Hauptproblem, das ich habe, ist eigentlich, wie höre ich den cat / dev / ttyS2 Befehl auf, sobald Informationen empfangen wurden, lege ihn in eine Variable, die ich dann mit einem Schalter oder einer Reihe von if vergleichen könnte sonst blockt es dann. Danach eine Antwort zurücksenden und den Zyklus von vorne beginnen?
Danke
Um ziemlich systemunabhängig zu bleiben, verwenden Sie eine plattformübergreifende Programmiersprache: Verwenden Sie wie Python eine plattformübergreifende serielle Bibliothek wie: pySerial und führen Sie die Verarbeitung in einem Skript aus. Ich habe pySerial verwendet und ich konnte das Skript Cross-Plattform mit fast keine Änderungen im Quellcode ausführen. Mit BASH beschränkst du dich ein wenig.
Wenn Sie die richtigen Werkzeuge verwenden, ist es möglich, dass Ihre CPU-Auslastung genau 0 ist, wenn Ihr Gerät keine Ausgabe hat.
Um dies zu erreichen, sollten Sie eine höhere Programmiersprache verwenden (Perl, Python, C / C ++, aber nicht bash) und select loop über dem Dateihandle Ihres seriellen Geräts verwenden. Dies ist ein Beispiel für Perl Ссылка , aber Sie können jede andere Sprache verwenden, solange sie Unterstützung für select ( ) syscall.
Ich würde empfehlen, C / C ++ mit Qt 5.1.1 zu verwenden, es ist wirklich einfach und wenn Sie mit dem Framework vertraut sind, wird es ein Stück Kuchen sein !!! Hier finden Sie weitere Informationen und hier weitere hilfreiche Beispiele, probieren Sie es aus, Es ist wirklich schmerzfrei !! Sie können auch auf Win entwickeln und dann Ihren Code nach Linux ... einfach weiterleiten.
Deklarieren Sie ein Objekt wie folgt:
%Vor%Fügen Sie dann diesen Code hinzu:
%Vor%Tags und Links linux bash cygwin serial-port