Dokumentation für Version 0.0.1

This commit is contained in:
Dieter Lang 2026-08-09 18:56:01 +02:00
parent 63b6ca42c8
commit 6fa2293c77
2 changed files with 156 additions and 64 deletions

View file

@ -1,30 +1,45 @@
# Changelog # Changelog
Alle wesentlichen Änderungen am Projekt werden in dieser Datei Alle wesentlichen Änderungen am Projekt werden in dieser Datei dokumentiert.
dokumentiert.
## [0.0.1] - Entwicklung ## [0.0.1] - 2026-08-09
### Added ### Added
- Grundstruktur des Projekts `rs2322tcp` - Grundstruktur des Projektes `rs2322tcp`
- Go-Modul `git.lang-dieter.de/rs2322tcp` - Go-Modul `git.lang-dieter.de/rs2322tcp`
- Client-Anwendung als separates Programm vorgesehen - separates Programmgerüst für `rs2322tcp-client`
- Server-Anwendung als separates Programm vorgesehen - separates Programmgerüst für `rs2322tcp-server`
- Gemeinsame interne Pakete für Konfiguration, Transport, serielle - gemeinsame Versionierungsinformationen
Schnittstellen, Client, Server und Versionierung - Git-basierte Build-Informationen
- Unterstützung von Windows und Linux als gleichberechtigte - zentrales Build-Skript `scripts/build.sh`
Client-Plattformen vorgesehen - automatische Quellcode-Formatierung beim Build
- Raspberry Pi 5 als Server-Plattform vorgesehen - automatische Tests beim Build
- TCP als Transport für RS232-Daten festgelegt - SHA256-Prüfsummen der erzeugten Binärdateien
- Tailscale als vertrauenswürdiges Netzwerk vorgesehen - `.gitignore` für Build- und Entwicklungsdateien
- TLS zunächst nicht vorgesehen - erste Projekt- und Architekturdokumentation
- UDP als möglicher zukünftiger Transport für Audio-Daten vorgesehen
- Logging/Sniffer-Funktion für Diagnose vorgesehen ### Build-Ziele
- Einsatz von `socat` als Entwicklungs- und Diagnosewerkzeug vorgesehen
Der erste Build unterstützt:
- Linux amd64 Client und Server
- Linux arm64 Server
- Windows amd64 Client
### Architekturentscheidungen
- TCP wird für die Übertragung der RS232-Daten verwendet.
- Windows und Linux werden als gleichberechtigte Client-Plattformen betrachtet.
- Der Server ist zunächst für den Raspberry Pi 5 vorgesehen.
- Tailscale wird als vertrauenswürdiges Netzwerk verwendet.
- Eine zusätzliche TLS-Schicht ist zunächst nicht vorgesehen.
- Für eine spätere Audioübertragung ist ein separates UDP-basiertes Transportkonzept vorgesehen.
- `socat` kann für Entwicklung und Diagnose eingesetzt werden.
- Eine Sniffer-/Logging-Funktion für den übertragenen Datenverkehr ist vorgesehen.
### Status ### Status
Die Version 0.0.1 enthält zunächst nur die Projektgrundlage. Version `0.0.1` enthält ausschließlich die Projektgrundlage.
Eine funktionierende RS232- oder Netzwerkübertragung ist noch
nicht implementiert. Die eigentliche TCP-/RS232-Kommunikation und die virtuelle serielle Schnittstelle sind noch nicht implementiert.

165
README.md
View file

@ -1,82 +1,159 @@
# rs2322tcp # rs2322tcp
## Zweck `rs2322tcp` ermöglicht die transparente Übertragung von RS232-Daten über TCP/IP.
`rs2322tcp` überträgt Daten zwischen seriellen RS232-Schnittstellen Das Projekt ist für den Einsatz geeignet, bei dem eine vorhandene Software eine serielle Schnittstelle erwartet, das zugehörige Gerät sich jedoch an einem entfernten Standort befindet.
und einem TCP/IP-Netzwerk.
Das Projekt besteht aus einem Client und einem Server: ## Ziel
- Der Client stellt auf einem lokalen Rechner eine virtuelle serielle Auf der Client-Seite soll vorhandene Hersteller-Software eine normale serielle Schnittstelle vorfinden.
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 Die Daten werden vom `rs2322tcp-client` über TCP an einen entfernten `rs2322tcp-server` übertragen. Der Server verbindet die Netzwerkverbindung mit einer realen seriellen Schnittstelle.
Geräte auf der Serverseite sollen dabei möglichst keinen Unterschied
zu einer direkten seriellen Verbindung feststellen.
## Plattformen Damit sollen weder die vorhandene Software auf dem Client noch die angeschlossenen Geräte auf der Remote-Seite erkennen müssen, dass die Verbindung über ein Netzwerk erfolgt.
### Client Typische Anwendungen sind beispielsweise:
Der Client soll gleichberechtigt auf folgenden Plattformen betrieben - Funkgeräte mit CAT-Steuerung
werden können: - Antennenrotoren mit herstellerspezifischen seriellen Protokollen
- andere Geräte, die über RS232 gesteuert werden
## Architektur
```text
Client-PC Raspberry Pi 5
───────────────── ─────────────────
Hersteller-Software rs2322tcp-server
│ │
│ virtuelle │
│ serielle Schnittstelle │
▼ │
rs2322tcp-client │
│ │
└──────────── TCP/IP ──────────────────┘
┌──────────┴──────────┐
│ │
USB-to-RS232 USB-to-RS232
│ │
Funkgerät Rotor
```
## Client
Der Client soll gleichberechtigt unter folgenden Betriebssystemen eingesetzt werden können:
- Windows - Windows
- Linux - Linux
Die plattformspezifische Bereitstellung der virtuellen seriellen Die plattformspezifische Bereitstellung der virtuellen seriellen Schnittstelle wird vom gemeinsamen Client-Kern getrennt.
Schnittstelle wird vom gemeinsamen Client-Kern getrennt.
### Server ## Server
Der Server ist zunächst für den Betrieb auf einem Raspberry Pi 5 Der Server ist zunächst für den Betrieb auf einem Raspberry Pi 5 vorgesehen.
vorgesehen.
Mehrere USB-to-RS232-Adapter können angeschlossen und über die Mehrere USB-to-RS232-Adapter können angeschlossen werden. Anzahl, Bezeichnung und serielle Parameter der Anschlüsse werden über eine Konfigurationsdatei festgelegt.
Konfiguration einzelnen Geräten zugeordnet werden.
## Netzwerk ## Netzwerk
Für die RS232-Datenübertragung wird TCP verwendet. Für die Übertragung der RS232-Daten wird TCP verwendet.
Das Projekt geht zunächst davon aus, dass die beteiligten Rechner Die beteiligten Systeme werden zunächst über ein vertrauenswürdiges Tailscale-Netz verbunden.
über ein vertrauenswürdiges Tailscale-Netz miteinander verbunden sind.
Eine zusätzliche TLS-Verschlüsselung ist deshalb zunächst nicht Eine zusätzliche TLS-Verschlüsselung ist deshalb derzeit nicht vorgesehen.
vorgesehen.
Für eine spätere Übertragung von Audio-Daten ist ein separates Für eine spätere Übertragung von Audio-Daten ist ein separates Netzwerk-/Transportkonzept vorgesehen. Hierfür soll UDP verwendet bzw. untersucht werden.
Transportkonzept vorgesehen. Dafür soll UDP untersucht werden.
## Konfiguration ## Konfiguration
Client und Server erhalten jeweils eine eigene `config.json`. Client und Server erhalten jeweils eine eigene JSON-Konfiguration.
Darin werden unter anderem serielle Schnittstellen, Parameter, Über die Konfiguration sollen unter anderem festgelegt werden können:
Gerätebezeichnungen und Netzwerkparameter konfiguriert.
- Netzwerkparameter
- serielle Schnittstelle
- Baudrate
- Datenbits
- Parität
- Stopbits
- Bezeichnung des Gerätes
- weitere für die jeweilige Schnittstelle erforderliche Parameter
Die konkrete Konfigurationsstruktur wird im weiteren Projektverlauf festgelegt.
## Diagnose und Logging ## Diagnose und Logging
Für Debugging und Diagnose soll eine Protokollierung des übertragenen Für Debugging und Diagnose soll eine Protokollierung des übertragenen Datenverkehrs möglich sein.
Datenverkehrs möglich sein.
Dabei soll insbesondere eine Darstellung der übertragenen Bytes Insbesondere soll eine Darstellung der übertragenen Bytes möglich sein, um Probleme bei der Kommunikation zwischen Hersteller-Software und Gerät analysieren zu können.
möglich sein.
`socat` kann während der Entwicklung und für Diagnosezwecke als Während der Entwicklung kann `socat` als zusätzliches Werkzeug für Tests und Diagnose eingesetzt werden.
zusätzliches Werkzeug eingesetzt werden.
## Projektstruktur
```text
rs2322tcp/
├── cmd/
│ ├── rs2322tcp-client/
│ └── rs2322tcp-server/
├── configs/
├── docs/
├── internal/
│ ├── client/
│ ├── config/
│ ├── serial/
│ ├── server/
│ ├── transport/
│ └── version/
├── scripts/
│ └── build.sh
├── CHANGELOG.md
├── LICENSE
├── README.md
└── go.mod
```
## Build
Der Build erfolgt über das zentrale Build-Skript:
```bash
./scripts/build.sh
```
Das Skript führt unter anderem folgende Schritte aus:
- Formatierung des Go-Quellcodes
- Ausführung der Tests
- Bereinigung der Go-Module
- Ermittlung der Git-Versionsinformationen
- Build der vorgesehenen Zielplattformen
- Einbettung der Versionsinformationen über den Go-Linker
- Erzeugung von SHA256-Prüfsummen
Aktuell werden folgende Builds erzeugt:
- Linux amd64 Client und Server
- Linux arm64 Server
- Windows amd64 Client
## Versionierung ## Versionierung
Die Version des Programms wird über Git verwaltet und beim Build in Die Versionierung erfolgt über Git.
das Programm eingebunden.
Die Entwicklung erfolgt schrittweise über versionierte Entwicklungs- Die Git-Informationen werden beim Build in die Binärdateien eingebettet. Neben der Version werden unter anderem Build-Nummer, Commit und Build-Datum erfasst.
stände.
Release-Versionen werden über Git-Tags gekennzeichnet.
## Entwicklungsstand
Das Projekt befindet sich derzeit in der frühen Entwicklungsphase.
Version `0.0.1` enthält zunächst die Projektgrundlage, die beiden Programmgerüste sowie das Buildsystem.
Eine funktionierende RS232- oder TCP-Übertragung ist in dieser Version noch nicht implementiert.
## Lizenz ## Lizenz
GPLv3 GPL-3.0-or-later