rs2322tcp/CHANGELOG.md

14 KiB
Raw Permalink Blame History

Changelog

Alle wesentlichen Änderungen am Projekt werden in dieser Datei dokumentiert.

[0.0.11] - 2026-08-25

Hinzugefügt

  • Windows-Client erfolgreich mit Fyne-GUI gestartet.
  • Übertragung der konfigurierten startup_bytes an das zugeordnete Remote-Gerät beim Verbindungsaufbau getestet.

Geändert

  • Windows-spezifische Behandlung virtueller serieller Ports angepasst.
  • Öffnen und Verwaltung virtueller serieller Schnittstellen unter Windows überarbeitet.

Getestet

  • Minimaler Fyne-Test unter Windows erfolgreich gestartet.
  • rs2322tcp-client unter Windows erfolgreich mit Fyne-GUI gestartet.
  • Verbindung des Windows-Clients zum rs2322tcp-server erfolgreich aufgebaut.
  • Rotor-Startcode erfolgreich vom Windows-Client bis zum Server übertragen.

[0.0.10] - 2026-08-21

Behoben

  • Linux-Portverwaltung nach der Windows-Client-Erweiterung korrigiert.
  • Doppelte Linux-Definitionen der virtuellen Portverwaltung entfernt.
  • Plattformübergreifende Trennung der virtuellen Port-Erzeugung korrigiert.
  • Dauerhafte Installations-Symlinks für virtuelle Linux-Ports bleiben beim Schließen eines Ports erhalten.
  • Gesamter Go-Testlauf unter Linux erfolgreich.

[0.0.9] - 2026-08-21

Added

  • Windows-Unterstützung für den rs2322tcp-Client
  • Plattformabhängige Verwaltung virtueller serieller Schnittstellen
  • Windows-COM-Port-Unterstützung über go.bug.st/serial
  • Unterstützung des virtuellen Windows-Portbereichs COM100 bis COM199
  • Windows-spezifische Portvalidierung und Portpfadverwaltung
  • Technischer Windows-Client unter cmd/rs2322tcp-client-test
  • Plattformabhängige Implementierungen für das Öffnen und Verwalten virtueller serieller Schnittstellen
  • Windows-spezifische Implementierung von VirtualSerial

Changed

  • Virtuelle Portverwaltung für Linux und Windows auf eine gemeinsame Schnittstelle umgestellt
  • Clientseitige Portvalidierung für die unterschiedlichen Plattformen erweitert
  • Client-Konfiguration für den Windows-Betrieb angepasst

Tests

  • Windows 11 / amd64 erfolgreich getestet
  • Windows-COM-Port COM100 über com0com erfolgreich geöffnet
  • com0com-Portpaar COM10 ↔ COM100 erfolgreich getestet
  • Verbindung des Windows-Clients über Tailscale zum Raspberry-Pi-Server erfolgreich getestet
  • Bidirektionale Datenübertragung zwischen Windows-Client und Raspberry-Pi-Server erfolgreich getestet
  • Bidirektionale Datenübertragung mit einem realen SPID Rot2Prog erfolgreich getestet
  • Rot2Prog mit P5 = 59 (SPID) und Function Mode A (Auto) erfolgreich betrieben
  • Tatsächliche Antwort des Rot2Prog erfolgreich über den vollständigen Datenweg übertragen:
57 07 01 06 00 01 03 06 02 00 01 20
  • go test ./internal/client erfolgreich

Status

Der Windows-Client kann über einen virtuellen Windows-COM-Port mit dem rs2322tcp-Server auf einem Raspberry Pi kommunizieren.

Der vollständige Datenweg wurde mit einem realen SPID Rot2Prog bidirektional erfolgreich getestet:

COM10
   │
   ▼
com0com
   │
   ▼
COM100
   │
   ▼
rs2322tcp-client (Windows)
   │
   ▼
TCP / Tailscale
   │
   ▼
rs2322tcp-server (Raspberry Pi)
   │
   ▼
RS232 / SPID Rot2Prog

Der technische Windows-Client bleibt als separates Testprogramm erhalten.

Die grafische Fyne-Oberfläche des Windows-Clients ist noch nicht vollständig abgeschlossen.

[0.0.8] - 2026-08-12

Added

  • Prüfung der lokal vorhandenen virtuellen Ports beim Client-Start
  • Abgleich der vorhandenen symbolischen Links mit den in client.json definierten virtuellen Schnittstellen
  • Erkennung von in client.json definierten, aber lokal nicht vorhandenen virtuellen Ports
  • Erkennung von lokal vorhandenen, aber nicht in client.json definierten virtuellen Ports
  • Verständlicher Fehlerdialog bei einer abweichenden virtuellen Portkonfiguration
  • Beenden des Clients nach Bestätigung einer fehlerhaften Portkonfiguration

Changed

  • Virtuelle Ports werden entsprechend der in client.json festgelegten Portnummern gezielt geöffnet
  • Die Verwaltung virtueller Ports arbeitet weiterhin ohne Root-Rechte
  • Der Fehlerdialog verwendet einen einzelnen OK-Button
  • Allgemeine Schriftgröße der grafischen Benutzeroberfläche auf 22 erhöht
  • Hauptfenster des Clients auf 800 × 600 Pixel vergrößert

Tests

  • Prüfung vorhandener und konfigurierter virtueller Ports erfolgreich getestet
  • Fehlender virtueller Port erfolgreich erkannt und im Fehlerdialog angezeigt
  • Zusätzlicher, nicht konfigurierter virtueller Port erfolgreich erkannt
  • Clientstart nach Korrektur der virtuellen Portkonfiguration erfolgreich getestet
  • Gerätezuordnung nach Neustart des Clients erfolgreich aus client.json geladen
  • go test ./... erfolgreich
  • go test -race ./internal/client erfolgreich
  • go test -race ./internal/gui erfolgreich
  • git diff --check erfolgreich

[0.0.7] - 2026-08-12

Added

  • Pflege der Gerätezuordnung über die grafische Benutzeroberfläche
  • Zuordnung der vom Server angebotenen Geräte zu den konfigurierten virtuellen seriellen Schnittstellen
  • Unterstützung des Zustands „nicht verbunden“
  • Freie virtuelle Schnittstellen werden bei der Gerätezuordnung automatisch neu angeboten
  • Verhinderung der gleichzeitigen Zuordnung einer virtuellen Schnittstelle zu mehreren Geräten
  • Bereits zugeordnete Geräte können nur auf ihre aktuelle Schnittstelle oder „nicht verbunden“ gesetzt werden
  • Ungespeicherte Änderungen werden beim Schließen des Hauptfensters erkannt und dem Anwender angezeigt
  • Änderungen werden beim Schließen des Gerätezuordnungsfensters in der Client-Konfiguration gespeichert
  • Virtuelle Schnittstellen bleiben auch ohne Gerätezuordnung in der Client-Konfiguration erhalten
  • Ein leerer Wert für remote_device kennzeichnet eine freie virtuelle Schnittstelle
  • Application.SaveConfig() zum zentralen Speichern der Client-Konfiguration

Changed

  • Validierung der Client-Konfiguration erlaubt nun virtuelle Schnittstellen ohne aktuelle Gerätezuordnung
  • Die Gerätezuordnung arbeitet auf Basis der vorhandenen virtuellen Schnittstellen und verändert bei einer Trennung nur deren remote_device-Zuordnung

Tests

  • Gerätezuordnung mit mehreren Server-Geräten praktisch getestet
  • Freigabe einer virtuellen Schnittstelle und anschließende erneute Auswahl erfolgreich getestet
  • Speicherung einer Gerätezuordnung über die GUI erfolgreich getestet
  • Speicherung einer getrennten Gerätezuordnung mit leerem remote_device erfolgreich getestet
  • go test ./internal/config erfolgreich
  • go test ./internal/gui erfolgreich
  • go test -race ./internal/gui erfolgreich
  • git diff --check erfolgreich

[0.0.6] - 2026-08-10

Added

  • Clientseitige Runtime zur Verwaltung mehrerer virtueller serieller Ports
  • Verbindung konfigurierter virtueller Ports mit den vom Server bereitgestellten Remote-Geräten
  • Clientseitige TCP-Data-Connections zu den dynamischen Data-Ports des Servers
  • Bidirektionale Datenübertragung über eine Bridge
  • Verwaltung des Lebenszyklus von virtuellen Ports, Bridges und Client-Verbindung
  • Integrationstest für den vollständigen Datenweg zwischen virtuellem seriellen Port und Server
  • Tests für Verbindungsaufbau, Gerätezuordnung und Runtime-Lebenszyklus

Tests

  • go test ./... erfolgreich
  • go test -race ./... erfolgreich
  • Bidirektionale Übertragung über Runtime, Bridge, TCP und PTY erfolgreich
  • Race Conditions in Client-Control-Verbindung, PTY und virtuellen Ports behoben

[0.0.5] - 2026-08-10

Added

  • Konfigurierbarer Bereich für lokale virtuelle serielle Schnittstellen
  • Standardbereich für virtuelle Ports von /dev/ttyUSB100 bis /dev/ttyUSB199
  • Abweichender Portbereich kann über virtual_port_range in der Client-Konfiguration festgelegt werden
  • Rückwärtskompatibilität für bestehende Client-Konfigurationen ohne virtual_port_range
  • Verwaltung virtueller Ports über VirtualPortManager
  • Automatische Auswahl des nächsten freien virtuellen Ports
  • Freigabe reservierter Ports bei deren Schließen
  • Linux-spezifische Verwaltung der virtuellen Port-Symlinks unter ~/.rs2322tcp/virtual/
  • Verknüpfung der virtuellen /dev/ttyUSBxxx-Schnittstellen mit den vom Client erzeugten PTYs
  • Einführung von VirtualPort und ManagedVirtualPort
  • Umfangreiche Tests für Portauswahl, Portfreigabe, Symlink-Verwaltung und Linux-PTY-Integration

Tests

  • go test ./... erfolgreich
  • go test -race ./... erfolgreich
  • Bidirektionale Kommunikation über /dev/ttyUSB100 erfolgreich getestet
  • Externe Software kann ausschließlich /dev/ttyUSB100 verwenden
  • Übertragung vom virtuellen /dev/ttyUSB100 zum Client erfolgreich getestet
  • Übertragung vom Client zum virtuellen /dev/ttyUSB100 erfolgreich getestet
  • Zweistufige Symlink-Kette von /dev/ttyUSB100 über ~/.rs2322tcp/virtual/ttyUSB100 bis zum PTY erfolgreich getestet

[0.0.4] - 2026-08-10

Added

  • Interaktiver Geräte-Simulator rs2322tcp-device-sim
  • Senden beliebiger Bytefolgen über eine interaktive Hex-Eingabe
  • Ausgabe empfangener Daten als Hex-Dump
  • Unterstützung von Hex-Eingaben mit und ohne Leerzeichen
  • Fehlerbehandlung für ungültige Hex-Eingaben
  • Automatisierte Tests für die Hex-Konvertierung
  • Erweiterte Dokumentation des Geräte-Simulators und des PTY-Testaufbaus
  • Möglichkeit, den Simulator als virtuelle serielle Gegenstelle für externe Software zu verwenden

Tests

  • Byte-orientierte Übertragung mit beliebigen Binärdaten getestet
  • Übertragung aller Bytewerte 00 bis FF getestet
  • Übertragung vom PTY-Slave zum PTY-Master getestet
  • Übertragung vom PTY-Master zum PTY-Slave getestet
  • go test ./... erfolgreich
  • go test -race ./... erfolgreich

[0.0.3] - 2026-08-10

Added

  • Linux-PTY-Unterstützung für die clientseitige virtuelle serielle Schnittstelle
  • Abstraktion der virtuellen seriellen Schnittstelle über VirtualSerial
  • Automatisierter bidirektionaler PTY-Test mit allen 256 möglichen Bytewerten
  • Eigenständiges Programm rs2322tcp-device-sim als Simulator für ein angeschlossenes serielles Gerät
  • Hexadezimale Darstellung der vom Geräte-Simulator empfangenen Rohdaten

Tests

  • PTY-Slave und PTY-Master erfolgreich miteinander getestet
  • Bidirektionale Übertragung von Binärdaten getestet
  • Bytefolgen mit Werten von 00 bis FF erfolgreich übertragen
  • Empfang beliebiger Datenblöcke über den PTY-Master getestet

[0.0.2] - 2026-08-09

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
  • Serielle Geräte können über Konfiguration definiert werden
  • Server-Control-Verbindung
  • Session-Verwaltung
  • Dynamische Data-Ports pro Gerät
  • Serverseitiger Aufbau der TCP-Data-Verbindung
  • DataConnection für die bidirektionale Datenübertragung
  • DataListener zur Annahme von Data-Verbindungen
  • TCP → RS232 Datenübertragung
  • RS232 → TCP Datenübertragung
  • 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

  • Serial-Kommunikation vollständig über go.bug.st/serial
  • Server öffnet serielle Schnittstellen erst bei aktiver Data-Verbindung
  • Pro Gerät wird nur eine aktive Data-Verbindung zugelassen
  • Session- und Ressourcenverwaltung überarbeitet
  • Race Condition im DataListener behoben

Tests

  • Unit-Tests für Serial
  • Unit-Tests für Session
  • Unit-Tests für DataConnection
  • Unit-Tests für DataListener
  • Integrationstest mit virtuellen seriellen Schnittstellen über socat
  • Tests für TCP → RS232 und RS232 → TCP
  • Tests für Session-Reconnect und Ressourcenverwaltung
  • 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 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 Linux-PTY-Grundlage für eine virtuelle serielle Schnittstelle ist implementiert und durch automatisierte Tests abgesichert.

Der Geräte-Simulator ist als eigenständiges Testprogramm vorhanden und kann eine serielle Schnittstelle öffnen und empfangene Rohdaten hexadezimal anzeigen.

Die interaktive TX-Funktion des Geräte-Simulators sowie die vollständige Integration der virtuellen seriellen Schnittstelle in den produktiven Client-Datenpfad sind noch nicht abgeschlossen.


[0.0.1] - 2026-08-09

Added

  • Initiale Projektstruktur
  • Go-Modul und Build-Grundlagen
  • Basis für Server und Client
  • Konfigurationsgrundlagen
  • Versionsverwaltung und Build-Metadaten
  • Erste Dokumentation