zwei virtuelle tty verbinden

Gast #2869748
Lesenswert?
• ▲
▼
Hallo,

ich bin gerade dabei ein kleines PC-Tool zu schreiben, dass mit einem uC 
via RS232 kommunizieren soll.
Um angenehmer herumprobieren zu können würde ich gerne das Host-Tool 
sowie die uC-Gegenstelle am PC entwickeln (soweit dies möglich ist).

Gibt es unter Linux die Möglichkeit, mir eine Software-tty anzulegen, 
die mit einer weiteren Software-tty Daten austauschen kann? Damit könnte 
ich die beiden Programme am PC ohne weitere Hardware miteinander 
kommunizieren lassen um z.B. das Protokoll zu testen.
Umständlicher, aber möglich wäre, zwei USB/RS232-Umsetzter mittels 
Nullmodem zu verbinden.

Unter WinXP hab ich nach langem Suchen und Probieren eine Freeware 
gefunden die genau das macht.
Unter Linux gibt es sowas doch bestimmt auch, kennt da jemand was, oder 
ist das Ganze vielleicht sogar mit Boardmittel möglich?
Verwendet wird Kubuntu 12.04.

Viele Grüße,
Masl
Gast #2869863
Lesenswert?
• ▲
▼
Danke erstmal, wenn man weiß nach was man suchen soll findet man auch 
Infos :)

Nur an einer Stelle happerts grad beim Verständnis:

Anwendung A  den Terminal Multiplexer und bekommt einen File Pointer auf 
den diesen. Gleichzeitig wird ein Slave Device erzeugt.

Anwendung B öffnet ebenfalls den Terminal Multiplexer und bekommt einen 
File Pointer auf diesen. Es wird ein weiteres Slave Device erzeugt.

So, jetzt schreiben und lesen beide mit Hilfe der File Pointer auf eine 
virtuelle tty.
Woher weiß denn nun der Master welche Slave Devices er verknüpfen soll? 
Ein Byte dass Anwendung A in seine virtuelle tty reinschiebt soll ja bei 
Anwendung B wieder herauskommen.

Wie gesagt, da häng ich grad bisl…
Gast #2870370
Lesenswert?
• ▲
▼
Ich würde in deinem Fall die BSD-Variante der Pseudo Terminals 
verwenden, das ist einfacher, weil die Devices schon da sind und passt 
somit besser zur "Emulation" einer seriellen Schnittstelle. Du musst Dir 
nur ein freies ptyXY aussuchen und kannst dann die Gegenseite an das 
dazugehörige ttyXY hängen.

Im einfachsten Fall sieht das dann so aus:

Terminal 1 $ socat STDIO /dev/ptya0

Terminal 2 $ socat STDIO /dev/ttya0

und schon sind die beiden Terminals verbunden.
Gast #2870672
Lesenswert?
• ▲
▼
Nein, verbinden musst die Terminals nicht mehr, die sind schon 
miteinander verbunden. Die "socat" sind hier nur Platzhalter für deine 
Programme zu sehen.
Deine Anwendung A öffnet z.B. /dev/ptya0, dann kann deine Anwendung B 
/dev/ttya0 öffnen und mit der Anwendung A bidirektional Daten 
austauschen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren