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
|
||||
|
||||
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.
|
||||
|
|
|
|||
165
README.md
165
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
|
||||
|
|
|
|||
Loading…
Reference in a new issue