rs2322tcp/README.md
2026-08-09 18:50:25 +02:00

82 lines
2.2 KiB
Markdown

# 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