Auf serielles Terminal zugreifen, ohne Initialisierung

17/11/2012 - 23:13 von Ralph Aichinger | Report spam
Ich habe an einem seriellen Port, der eigentlich ein USB-Port ist,
der einen seriellen emuliert (/dev/ttyACM0), einen Arduino-Microcontroller
mit einem Display hàngen. Auf dem möcht ich die Ausgaben diverser Programme
darstellen können.

Wenn ich ein Terminalprogramm aufmache, dann kann ich wunderbar über
den Arduino aufs Display tippen.

Mein Problem: Wenn ich in einzelnen Befehlen

cat /tmp/foo > /dev/ttyACM0
cat /tmp/bar > /dev/ttyACM0

mache, dann wird offenbar irgendeine Leitung beim Aufmachen
des Devices jedesmal gesetzt, und der Arduino initialisiert immer
wieder das Display. Woher weiß mein Arduino, daß das Device
geöffnet worden ist? Vermutlich wird eine Modemleitung gesetzt,
kann ich das mit stty irgendwie abdrehen, damit der Arduino
die Ausgabe der Programme als einen einzigen kontinuierlichen
seriellen Datenstrom wahrnimmt?

TIA
/ralph
 

Lesen sie die antworten

#1 Sieghard Schicktanz
18/11/2012 - 00:48 | Warnen spam
Hallo Ralph,

Du schriebst am 17 Nov 2012 22:13:32 GMT:

Mein Problem: Wenn ich in einzelnen Befehlen


...
mache, dann wird offenbar irgendeine Leitung beim Aufmachen
des Devices jedesmal gesetzt, und der Arduino initialisiert immer
wieder das Display. Woher weiß mein Arduino, daß das Device
geöffnet worden ist? Vermutlich wird eine Modemleitung gesetzt,



Wahrscheinlich wertet der ein CD (Carrier Detect) aus. Andererseits sollte
das bei einer einfachen Direktverbindung garnicht bedient werden, aber
evtl. reagiert er auch einfach auf die normalen Handshakes, RTS/CTS, oder
sogar auf DSR/DTR. Oder er bekommt beim Schließen einen Break und wertet
den aus.

kann ich das mit stty irgendwie abdrehen, damit der Arduino



Mit stty lassen sich alle diese Einstellungen sehr schön beeinflussen, und
es gibt davon eine ganze Menge - Tip: stty --help gibt eine _sehr_
ausführliche Beschreibung seiner Möglichkeiten (deshalb am besten in ein
File umleiten und das in Ruhe durcharbeiten). Die seriellen Schnittstellen
unter Unix - und damit auch Linux - sind für alle möglichen Verwendungen
vorbereitet, es gibt sogar Treiber für sehr spezielle Protokolle, wenn das
gebraucht würde (z.B. sogar auch das alte Siemens-SPS-Protokoll
RirgendwasKrummes).

die Ausgabe der Programme als einen einzigen kontinuierlichen
seriellen Datenstrom wahrnimmt?



Sollte machbar sein. Aber vielleicht ist es auch möglich, daß Du Deinem
Arduino beibringst, nicht so mimosenhaft zu reagieren? Schließlich ist der
doch auch programmierbar...

(Weitergabe von Adressdaten, Telefonnummern u.à. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder àhnlichem)
Mit freundlichen Grüßen, S. Schicktanz

Ähnliche fragen