Forum: PC-Programmierung zwei virtuelle tty verbinden


von Masl (Gast)


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

von Thorsten (Gast)


Lesenswert?

man pty

von Masl (Gast)


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…

von Thorsten (Gast)


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.

von Karlo (Gast)


Lesenswert?

Danke dir nochmal.

D.h. ich verbinde die virtuellen Terminals zuerst auf der Konsole.
Danach können meine Anwendungen die Terminals öffnen und Daten 
austauschen?

von Thorsten (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.