rs2322tcp/CHANGELOG.md
2026-08-10 11:15:46 +02:00

4.8 KiB
Raw Blame History

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.1 fü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.0 aktualisiert
  • go.bug.st/serial wird in Version v1.7.1 verwendet
  • golang.org/x/sys v0.43.0 wird als indirekte Abhängigkeit verwendet
  • Die Serial-Bibliothek go.bug.st/serial wurde zusätzlich auf dem privaten Git-Server des Projektes als Ausfallsicherung gespiegelt: git.lang-dieter.de/third-party/go-serial
  • Der DataListener wurde nebenläufigkeitssicher implementiert
  • Das Schließen eines DataListener kann gleichzeitig mit einem laufenden Accept() erfolgen

Tests

  • go test ./... erfolgreich
  • go test -race ./... erfolgreich
  • Race Condition im DataListener erkannt 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
  • .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

Version 0.0.1 enthält ausschließlich die Projektgrundlage.

Die eigentliche TCP-/RS232-Kommunikation und die virtuelle serielle Schnittstelle sind noch nicht implementiert.