4.8 KiB
4.8 KiB
Changelog
Alle wesentlichen Änderungen am Projekt werden in dieser Datei dokumentiert.
[Unreleased]
Added
- Implementierung der seriellen Schnittstellenschicht unter
internal/serial - Verwendung von
go.bug.st/serial v1.7.1für die Ansteuerung der seriellen Schnittstellen - Konfigurationsunterstützung für Baudrate, Datenbits, Parität und Stopbits
- Öffnen und Schließen serieller Schnittstellen über die interne Serial-Abstraktion
- Lesen und Schreiben von RS232-Daten über die Serial-Abstraktion
- Dynamische TCP-Data-Listener für konfigurierte Geräte
- Session-Verwaltung für dynamische Data-Listener
- Session-Verwaltung für aktive DataConnections
- Bidirektionale Datenübertragung zwischen TCP und RS232
- Öffnen der seriellen Schnittstelle erst beim Aufbau einer tatsächlichen Data-Verbindung
- Begrenzung auf eine aktive Data-Verbindung pro konfiguriertem Gerät
- Integrationstest mit virtuellen seriellen Schnittstellen über
socat - Tests für TCP → RS232 und RS232 → TCP
- Tests für Session-Reconnect und Ressourcenverwaltung
- Client-Control-Verbindung unter
internal/client - Clientseitige Verarbeitung von
HELLO - Clientseitige Abfrage der konfigurierten Geräte über
GET_DEVICES - Clientseitige Verarbeitung der vom Server gelieferten Geräteinformationen einschließlich dynamischem Data-Port
- Clientseitiger Aufbau der TCP-Data-Verbindung
- Integrationstest für die vollständige Client-/Server-Kommunikation
- End-to-End-Test der TCP-/RS232-Datenübertragung in beide Richtungen
Changed
- Go-Version des Projektes auf Go
1.25.0aktualisiert go.bug.st/serialwird in Versionv1.7.1verwendetgolang.org/x/sys v0.43.0wird als indirekte Abhängigkeit verwendet- Die Serial-Bibliothek
go.bug.st/serialwurde zusätzlich auf dem privaten Git-Server des Projektes als Ausfallsicherung gespiegelt:git.lang-dieter.de/third-party/go-serial - Der
DataListenerwurde nebenläufigkeitssicher implementiert - Das Schließen eines
DataListenerkann gleichzeitig mit einem laufendenAccept()erfolgen
Tests
go test ./...erfolgreichgo test -race ./...erfolgreich- Race Condition im
DataListenererkannt und behoben - Client-/Server-Integrationstest erfolgreich
- Race-Test des Client-/Server-Integrationstests erfolgreich
Status
Die grundlegende TCP-/RS232-Datenübertragung ist serverseitig implementiert und der Client kann inzwischen die Control-Verbindung sowie die zugehörige Data-Verbindung aufbauen.
Der aktuelle Datenpfad ist:
Client
│
├── TCP-Control-Verbindung
│ │
│ ▼
│ Session
│ │
│ ▼
│ GET_DEVICES
│ │
│ ▼
│ Geräteinformationen
│ │
│ ▼
│ dynamischer Data-Port
│ │
└── TCP-Data-Verbindung
│
▼
DataListener
│
▼
DataConnection
│
▼
internal/serial
│
▼
RS232-Gerät
Die Datenübertragung wurde bereits in beide Richtungen erfolgreich getestet:
TCP → RS232
RS232 → TCP
Die clientseitige Bereitstellung einer virtuellen seriellen Schnittstelle für die vorhandene Hersteller-Software ist noch nicht implementiert.
[0.0.1] - 2026-08-09
Added
- Grundstruktur des Projektes
rs2322tcp - Go-Modul
git.lang-dieter.de/rs2322tcp - 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
.gitignorefü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.
socatkann für Entwicklung und Diagnose eingesetzt werden.- Eine Sniffer-/Logging-Funktion für den übertragenen Datenverkehr ist vorgesehen.
Status
Version 0.0.1 enthält ausschließlich die Projektgrundlage.
Die eigentliche TCP-/RS232-Kommunikation und die virtuelle serielle Schnittstelle sind noch nicht implementiert.