82 lines
2.2 KiB
Markdown
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
|