2.2 KiB
rs2322tcp
Zweck
rs2322tcp überträgt Daten zwischen seriellen RS232-Schnittstellen
und einem TCP/IP-Netzwerk.
Das Projekt besteht aus einem Client und einem Server:
- Der Client stellt auf einem lokalen Rechner eine virtuelle serielle Schnittstelle für vorhandene Software bereit.
- Der Server läuft auf einem Raspberry Pi und stellt die dort angeschlossenen echten RS232-Schnittstellen bereit.
- Die serielle Kommunikation wird transparent über TCP übertragen.
Die vorhandene Software auf dem Client sowie die angeschlossenen Geräte auf der Serverseite sollen dabei möglichst keinen Unterschied zu einer direkten seriellen Verbindung feststellen.
Plattformen
Client
Der Client soll gleichberechtigt auf folgenden Plattformen betrieben werden können:
- Windows
- Linux
Die plattformspezifische Bereitstellung der virtuellen seriellen Schnittstelle wird vom gemeinsamen Client-Kern getrennt.
Server
Der Server ist zunächst für den Betrieb auf einem Raspberry Pi 5 vorgesehen.
Mehrere USB-to-RS232-Adapter können angeschlossen und über die Konfiguration einzelnen Geräten zugeordnet werden.
Netzwerk
Für die RS232-Datenübertragung wird TCP verwendet.
Das Projekt geht zunächst davon aus, dass die beteiligten Rechner über ein vertrauenswürdiges Tailscale-Netz miteinander verbunden sind.
Eine zusätzliche TLS-Verschlüsselung ist deshalb zunächst nicht vorgesehen.
Für eine spätere Übertragung von Audio-Daten ist ein separates Transportkonzept vorgesehen. Dafür soll UDP untersucht werden.
Konfiguration
Client und Server erhalten jeweils eine eigene config.json.
Darin werden unter anderem serielle Schnittstellen, Parameter, Gerätebezeichnungen und Netzwerkparameter konfiguriert.
Diagnose und Logging
Für Debugging und Diagnose soll eine Protokollierung des übertragenen Datenverkehrs möglich sein.
Dabei soll insbesondere eine Darstellung der übertragenen Bytes möglich sein.
socat kann während der Entwicklung und für Diagnosezwecke als
zusätzliches Werkzeug eingesetzt werden.
Versionierung
Die Version des Programms wird über Git verwaltet und beim Build in das Programm eingebunden.
Die Entwicklung erfolgt schrittweise über versionierte Entwicklungs- stände.
Lizenz
GPLv3