Dokumentation für Version 0.0.1
This commit is contained in:
parent
63b6ca42c8
commit
6fa2293c77
2 changed files with 156 additions and 64 deletions
55
CHANGELOG.md
55
CHANGELOG.md
|
|
@ -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
165
README.md
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue