Seriellen Port unter Debian simulieren

Zurzeit arbeite ich an einem Schulprojekt zum Auslesen eines Messgerätes über den seriellen Port eines Rechners unter Windows per Java. Da ich selbst aber kein Windows mehr nutze und mein Notebook auch keinen seriellen Anschluss besitzt, muss ich mir unter Debian etwas einfallen lassen, damit ich diesen simulieren kann. Die Anforderung lag nun für mich darin unter Debian/Crunchbang auf /dev/ttyS0 (unter Windows ist das COM1) zuzugreifen und von diesem Gerät aus etwas für das Projekt auszulesen. Hier beschreibe ich kurz wie ich es mittels socat gelöst habe.

socat kann ich eine bidirektionale Verbindung zwischen unterschiedlichen Kanälen herstellen, was Dateien, Geräte oder Pipes sein können. socat erstellt mittels socat -d -d pty,raw,echo=0, pty,raw,echo=0  zwei neue Geräte im Verzeichnis /dev/pts . In meinem Fall zu erkennen an der Verzeichnisstruktur und der Ausgabe von socat.

An dieser Stelle sei gesagt, dass die vorhandenen Gerätedateien /dev/ttyS0  und /dev/ttyS1  gesichert werden sollten. Also umbenennen in /dev/___ttyS0  und /dev/___ttyS1 . Dadurch könnt ihr sie später einfach wieder zurückholen.

Diese erstellten Geräte verlinke ich nun zu den eigentlichen Geräten, also /dev/ttyS0  und /dev/ttyS1.

sudo ln -s /dev/pts/4 /dev/ttyS0 sudo ln -s /dev/pts/5 /dev/ttyS1

Das schöne an dieser Methode ist, dass ihr euch nun über ein Terminal (zum Beispiel minicom -D ) an /dev/ttyS1 verbinden könnt und auf /dev/ttyS0  abhören könnt, was eingegeben wurde. Somit können unter Debian Sprachen wie Java, PHP oder Python auf dem seriellen Port  /dev/ttyS0 lauschen, ohne dass dieser physisch existiert.

Um Fehlermeldungen beim Auslesen des Gerätes zu vermeiden, setzt die Berechtigung der Dateien  /dev/ttyS0 und  /dev/ttyS1 entsprechend hoch.

Wenn ihr fertig seid, beendet ihr socat, löscht die symbolischen Links und benennt eure anfangs umbenannten Gerätedateien wieder zurück.

Leave a Reply

Your email address will not be published. Required fields are marked *