On Tuesday 06 December 2005 13:30, Alexander Tomisch wrote:
Wenn der Stream erst mal auf einem Device ist (a la /dev/ttyS0) kommt nur noch der Kernel an Daten ran. Speziell auf der ttyS* laufen Versuche mit cat / tee / dd .. daneben, weil sie zum Teil die Schnittstelle beeinflussen.
Wie sieht die Beeinflussung aus / könnte sie aussehen?
Bei einem (cat) kommt beispielsweise das an TxD gesendete auf RxD parallel zurück.
Momentan hab ich noch nicht ganz aufgegeben und experiementiere damit:
cat /dev/ttyS0 | tr -dc "\012 -~"
cat am "normalen" ttyS* scheint bloß bestimmte Zeichen (aus dem 8-Bit-Zeichensatz) mitzubekommen, außerdem kenne ich keine Möglichkeit, so etwas wie ein Puffer-leeren zu organisieren.
Sende ich jetzt von einem zweiten Rechner aus einen im raw-Modus des ttys mitgeschnittenen Datensatz (~500B), funktioniert es und alles nicht lesbare fliegt raus - auch wenn ich das zwanzig mal wiederhole.
Tip: vergleiche die Dateien mal. (s.o.)
Der Weg, erst in ein FiFo zu senden, dieses zu Filtern usw. scheitert meistens daran, das die ausgebenden Programme zur Ausgabe auf ttyS* "voreingestellt" sind.
Inwiefern "voreingestellt"? - wobei ich an einen FiFo noch nicht gedacht habe.
Ausgabe ist auf beliebiges /dev/ttyS* einstellbar, auf /dev/fifo nicht (erfundenener Name, muß mit mknod angelegt werden, erst wenn Empfänger wartet kann Senden erfolgen, Rechte beachten). Probieren!
Außerdem werden Steuersignale an die Schnittstelle gesendet, die im FiFo nicht übertragen werden.
Wie gesagt - es geht nur um den Text, der über die Schnittstelle kommt.
Was aber wenn dein Programm z.B, die Baudrate ändern wollte, und das FiFo würde mit keine Ahnung / Fehler reagieren?
(Keine Alternative: 3 Schnittstellen: out1 ->in2 ->(modify)->out3)
Wie meinen "Keine Alternative" bzw. was würde es bringen?
Drei physische Schnittstellen mit einer Aufgabe beschäftigen.
(Bei Bedarf mehr Informationen. Ich habe mal einen Vortrag über serielle Schnittstelle und deren Programmierung unter Linux gemacht.)
Sehr gern :)
(private Mail folgt)
Alex
Bernhard