RS232-Verbindungen (serielle Schnittstelle) mittels Software-Konverter auf TCP (Internet) übertragen
Find a file
2026-08-09 18:56:01 +02:00
cmd Version 0.0.1 - Projektgrundlage und Buildsystem 2026-08-09 18:50:25 +02:00
internal/version Version 0.0.1 - Projektgrundlage und Buildsystem 2026-08-09 18:50:25 +02:00
scripts Version 0.0.1 - Projektgrundlage und Buildsystem 2026-08-09 18:50:25 +02:00
.gitignore Version 0.0.1 - Projektgrundlage und Buildsystem 2026-08-09 18:50:25 +02:00
CHANGELOG.md Dokumentation für Version 0.0.1 2026-08-09 18:56:01 +02:00
go.mod Version 0.0.1 - Projektgrundlage und Buildsystem 2026-08-09 18:50:25 +02:00
LICENSE Initial commit 2026-08-09 17:55:34 +02:00
README.md Dokumentation für Version 0.0.1 2026-08-09 18:56:01 +02:00

rs2322tcp

rs2322tcp ermöglicht die transparente Übertragung von RS232-Daten über TCP/IP.

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.

Ziel

Auf der Client-Seite soll vorhandene Hersteller-Software eine normale serielle Schnittstelle vorfinden.

Die Daten werden vom rs2322tcp-client über TCP an einen entfernten rs2322tcp-server übertragen. Der Server verbindet die Netzwerkverbindung mit einer realen seriellen Schnittstelle.

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.

Typische Anwendungen sind beispielsweise:

  • Funkgeräte mit CAT-Steuerung
  • Antennenrotoren mit herstellerspezifischen seriellen Protokollen
  • andere Geräte, die über RS232 gesteuert werden

Architektur

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.

Server

Der Server ist zunächst für den Betrieb auf einem Raspberry Pi 5 vorgesehen.

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 Übertragung der RS232-Daten wird TCP verwendet.

Die beteiligten Systeme werden zunächst über ein vertrauenswürdiges Tailscale-Netz verbunden.

Eine zusätzliche TLS-Verschlüsselung ist deshalb derzeit nicht vorgesehen.

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 JSON-Konfiguration.

Ü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.

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.

Während der Entwicklung kann socat als zusätzliches Werkzeug für Tests und Diagnose eingesetzt werden.

Projektstruktur

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:

./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 Versionierung erfolgt über Git.

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

GPL-3.0-or-later