Moin Moin!
Hi leute, hi Alex,
So viel ge-googled hab ich noch nie - ich hab’s mit PHP hinbekommen.
Der Fehler war, dass ich nicht ALLE Einstellmöglichkeiten konsequent ein- bzw ausgeschalten habe.Dh.
Tja, die kleinen Feinheiten ...
root@raspberry:~# stty -F /dev/ttyACM0 -hupcl
root@raspberry:~# stty -F /dev/ttyACM0 ignpar
root@raspberry:~# stty -F /dev/ttyACM0 -opost
root@raspberry:~# stty -F /dev/ttyACM0 -onlcr
root@raspberry:~# stty -F /dev/ttyACM0 -isig
root@raspberry:~# stty -F /dev/ttyACM0 -icanon
root@raspberry:~# stty -F /dev/ttyACM0 -iexten
root@raspberry:~# stty -F /dev/ttyACM0 -echo
root@raspberry:~# stty -F /dev/ttyACM0 -echoe
root@raspberry:~# stty -F /dev/ttyACM0 -echok
root@raspberry:~# stty -F /dev/ttyACM0 –echoctl
Das geht auch mit EINEM Aufruf von stty, einfach alle Parameter hintereinander nach -F /dev/ttyWhatever angeben.
Als praktisches Modul hab ich die
php_serial.class.php gefunden. Ohne dem, dass extra so was geschrieben wurde, hätte ich auch nicht mehr geglaubt, das es unter php geht.
Unter Linux macht das Modul auch nichts anderes als massenhaft Aufrufe von stty zu produzieren. Unter Windows werden entsprechende mode-Aufrufe generiert. Und auf allen anderen Unix-artigen Systemen funktioniert gar nichts, auch wenn stty vorhanden ist.
Alex – ich konnte mich mal wieder davor drücken, was neues zu lernen ;-).
Ich hab gerade bei PHP-Code oft den Eindruck, dass das das generelle Motto der PHP-Coder ist. Leider.
Ich Danke Dir für das Aufzeigen der Alternativen – hätte es doch nicht mit php geklappt.
PS die dio Befehle funktionieren nur unter Windows – Lustig, dass es mal andersrum ist.
Es gibt vieles, was nur unter Windoof funktioniert.
Zum Beispiel ein automatischer und absolut zuverlässiger Crash des Betriebssystems, sobald die Uptime versehentlich mal 49,7 Tage erreicht. ;-)
Im Ernst, alles was über File-I/O hinausgeht, ist selten über alle Betriebssystemgrenzen hinweg portabel. Innerhalb der Unix-Familie kommt man mit POSIX oft weiter, selbst unter NT und Nachfolgern gibt es eine kleine POSIX-API. Das hilft überhaupt nicht, wenn man sich mit GUIs oder Netzwerken rumschlagen muß.
Normalerweise erschlagen Hochsprachen oberhalb von C (Java, Ruby, Perl) die kleinen und größeren Unterschiede zwischen den Betriebssystemen durch einen Layer oberhalb von C/libc. Oft nutzt mal auch Libraries für Dinge, die zwar auf den meisten Systemen vorhanden, aber sehr unterschiedlich implementiert sind. So hat man ein gemeinsames Interface für die verschiedenen Betriebssysteme.
Das PHP da "mal wieder" hinterher hinkt, wundert mich nicht (1, 2, 3, 4).
Und weil wir schon weit vom Thema weg sind: Ja, auch andere Sprachen haben ihre häßlichen Ecken. Java muß alles mindestens drei mal neu erfinden. Perl schleppt Altlasten aus einem Vierteljahrhunder mit sich rum und braucht erstmal 10 Zeilen Code, um überhaupt benutzbar zu sein. Ruby ist ein Perl-Clone mit PHP-Ansprüchen und reichlich Sicherheitslücken. MUMPS - significant white space, Lochkarten-Look, und nicht mehr dezenter Pathologie-Duft. Python hat significant white space zur Kunstform erhoben.
Aber außer PHP hat kaum eine andere Sprache dermaßen viele Macken. Inkonsequent bis zum bitteren Ende, kein Plan, kein Konzept, kein Ansatz, den alten Mist mal aufzuräumen. Stattdessen immer mehr Gefrickel. Das kenne ich in der Form nur noch von Nischenprodukten, deren Nutzerbasis locker an zehn Fingern abgezählt werden kann (notfalls binär).
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".