Falls man mal zum Testen irgendwelcher kruden Programme eine serielle Schnittstelle so nachbilden will, dass das zu testende Programm meint, es spricht mit einer seriellen Schnittstelle, diese aber in Wirklichkeit nur virtuell ist, hilft das unix- tool socat
Mit
socat PTY,link=/tmp/DXM PTY,link=/tmp/OOBD
werden im System die beiden symbolischen Links /tmp/DXM
und /tmp/OOBD
als scheinbare ttyS- Schnittstellen angelegt, solange der socat - Prozess läuft.
Dann trägt man /tmp/DXM
als Name der zu verwendenden seriellen Schnittstelle in das zu testende Programm ein und verbindet z.B. sein Terminalprogramm mit /tmp/OOBD
, und fertig ist die Laube
In den Settings von Virtualbox verbindet man die COM- Schnittstelle mit einer pipe (/tmp/vboxcom1) und läßt Virtualbox diese Pipe erstellen.
Dann kann man socat damit verbinden:
socat UNIX-CONNECT:/tmp/vboxcom1 PTY,link=/tmp/OOBD
Zum Schluß muß man im Windows XP Gast unter „Systemsteuerung/Hardware hinzufügen/Hardware aus Liste hinzufügen“ beim nächsten Start der VM den gerade neu erschaffenen COM- Port Windows noch bekannt machen
Manchmal muß man z.B. von Kommunikationsprogrammen, zwei Programme so miteinander verbinden, dass stdout des einen zum stdin des anderen wird und umgekehrt. Mit Socat geht das z.B. folgermaßen:
Terminal1: socat TCP:127.0.0.1:3333 exec:"java YModem1K README" Terminal2: socat TCP-LISTEN:3333 exec:"rz --ymodem"
So füttert man Programme über stdin mit den vom seriellen Port kommenden Daten:
socat /tmp/DXM,raw,echo=0,crnl - | python ....