From 6fa2293c77be746e47bab683d99122d6881b1e8d Mon Sep 17 00:00:00 2001 From: Dieter Lang Date: Sun, 9 Aug 2026 18:56:01 +0200 Subject: [PATCH] =?UTF-8?q?Dokumentation=20f=C3=BCr=20Version=200.0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 55 ++++++++++------- README.md | 165 +++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 156 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52cc599..fb8d92b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,30 +1,45 @@ # Changelog -Alle wesentlichen Änderungen am Projekt werden in dieser Datei -dokumentiert. +Alle wesentlichen Änderungen am Projekt werden in dieser Datei dokumentiert. -## [0.0.1] - Entwicklung +## [0.0.1] - 2026-08-09 ### Added -- Grundstruktur des Projekts `rs2322tcp` +- Grundstruktur des Projektes `rs2322tcp` - Go-Modul `git.lang-dieter.de/rs2322tcp` -- Client-Anwendung als separates Programm vorgesehen -- Server-Anwendung als separates Programm vorgesehen -- Gemeinsame interne Pakete für Konfiguration, Transport, serielle - Schnittstellen, Client, Server und Versionierung -- Unterstützung von Windows und Linux als gleichberechtigte - Client-Plattformen vorgesehen -- Raspberry Pi 5 als Server-Plattform vorgesehen -- TCP als Transport für RS232-Daten festgelegt -- Tailscale als vertrauenswürdiges Netzwerk vorgesehen -- TLS zunächst nicht vorgesehen -- UDP als möglicher zukünftiger Transport für Audio-Daten vorgesehen -- Logging/Sniffer-Funktion für Diagnose vorgesehen -- Einsatz von `socat` als Entwicklungs- und Diagnosewerkzeug vorgesehen +- separates Programmgerüst für `rs2322tcp-client` +- separates Programmgerüst für `rs2322tcp-server` +- gemeinsame Versionierungsinformationen +- Git-basierte Build-Informationen +- zentrales Build-Skript `scripts/build.sh` +- automatische Quellcode-Formatierung beim Build +- automatische Tests beim Build +- SHA256-Prüfsummen der erzeugten Binärdateien +- `.gitignore` für Build- und Entwicklungsdateien +- erste Projekt- und Architekturdokumentation + +### Build-Ziele + +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 -Die Version 0.0.1 enthält zunächst nur die Projektgrundlage. -Eine funktionierende RS232- oder Netzwerkübertragung ist noch -nicht implementiert. +Version `0.0.1` enthält ausschließlich die Projektgrundlage. + +Die eigentliche TCP-/RS232-Kommunikation und die virtuelle serielle Schnittstelle sind noch nicht implementiert. diff --git a/README.md b/README.md index 9d8f5c3..8a3fcd3 100644 --- a/README.md +++ b/README.md @@ -1,82 +1,159 @@ # rs2322tcp -## Zweck +`rs2322tcp` ermöglicht die transparente Übertragung von RS232-Daten über TCP/IP. -`rs2322tcp` überträgt Daten zwischen seriellen RS232-Schnittstellen -und einem TCP/IP-Netzwerk. +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. -Das Projekt besteht aus einem Client und einem Server: +## Ziel -- 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. +Auf der Client-Seite soll vorhandene Hersteller-Software eine normale serielle Schnittstelle vorfinden. -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. +Die Daten werden vom `rs2322tcp-client` über TCP an einen entfernten `rs2322tcp-server` übertragen. Der Server verbindet die Netzwerkverbindung mit einer realen seriellen Schnittstelle. -## 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 -werden können: +- Funkgeräte mit CAT-Steuerung +- 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 - Linux -Die plattformspezifische Bereitstellung der virtuellen seriellen -Schnittstelle wird vom gemeinsamen Client-Kern getrennt. +Die plattformspezifische Bereitstellung der virtuellen seriellen Schnittstelle wird vom gemeinsamen Client-Kern getrennt. -### Server +## Server -Der Server ist zunächst für den Betrieb auf einem Raspberry Pi 5 -vorgesehen. +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. +Mehrere USB-to-RS232-Adapter können angeschlossen werden. Anzahl, Bezeichnung und serielle Parameter der Anschlüsse werden über eine Konfigurationsdatei festgelegt. ## 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 -über ein vertrauenswürdiges Tailscale-Netz miteinander verbunden sind. +Die beteiligten Systeme werden zunächst über ein vertrauenswürdiges Tailscale-Netz verbunden. -Eine zusätzliche TLS-Verschlüsselung ist deshalb zunächst nicht -vorgesehen. +Eine zusätzliche TLS-Verschlüsselung ist deshalb derzeit nicht vorgesehen. -Für eine spätere Übertragung von Audio-Daten ist ein separates -Transportkonzept vorgesehen. Dafür soll UDP untersucht werden. +Für eine spätere Übertragung von Audio-Daten ist ein separates Netzwerk-/Transportkonzept vorgesehen. Hierfür soll UDP verwendet bzw. untersucht werden. ## 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, -Gerätebezeichnungen und Netzwerkparameter konfiguriert. +Über die Konfiguration sollen unter anderem festgelegt werden können: + +- 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 -Für Debugging und Diagnose soll eine Protokollierung des übertragenen -Datenverkehrs möglich sein. +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. +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. -`socat` kann während der Entwicklung und für Diagnosezwecke als -zusätzliches Werkzeug eingesetzt werden. +Während der Entwicklung kann `socat` als zusätzliches Werkzeug für Tests und Diagnose 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 -Die Version des Programms wird über Git verwaltet und beim Build in -das Programm eingebunden. +Die Versionierung erfolgt über Git. -Die Entwicklung erfolgt schrittweise über versionierte Entwicklungs- -stände. +Die Git-Informationen werden beim Build in die Binärdateien eingebettet. Neben der Version werden unter anderem Build-Nummer, Commit und Build-Datum erfasst. + +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 -GPLv3 +GPL-3.0-or-later