Vom Python-Prototyp zum Go-Geschoss: Wie mein Tischmultimeter fliegen lernte. Owon XDM1041 Teil 2

Im ersten Teil meines Produkttests habe ich es bereits angedeutet: Die Hardware des Owon-Tischmultimeters ist klasse, die mitgelieferte Herstellersoftware lässt einen aber eher schreiend weglaufen. Meine erste Rettung war ein schnell gezimmertes Python-Skript.

Es funktionierte. Es spuckte Daten aus. Aber wie das mit Prototypen so ist: Irgendwann juckt es in den Fingern, und man fragt sich: „Geht das nicht noch eleganter, schneller und ohne Python-Laufzeitumgebung?“

Spoiler: Es geht. Und die Reise von Python zu Go (Golang) war ein wilder Ritt voller KI-Sessions, Visual Studio Code und überraschender Erkenntnisse.

Akt I: Das Python-Drama (Oder: Warum Tkinter mich in den Wahnsinn trieb)

Versteht mich nicht falsch: Python ist großartig für schnelle Skripte. Aber als ich die Software um einen Datenlogger, CSV-Export und eine Live-Tabelle erweitern wollte, ging das Gehustel los:

  • Das GUI-Chaos: Tkinter ist super für simple Fenster. Wenn man aber Threads, serielle Kommunikation und eine Live-Tabelle verheiraten will, ohne dass das Fenster einfriert, fühlt man sich schnell wie ein Jongleur auf einem Einrad.
  • Das -minsize-Trauma: Wenn dir Python wegen einer einzigen falschen Layout-Option mitten im Betrieb um die Ohren fliegt, hinterfragt man kurz seine Lebensentscheidungen.
  • Die Abhängigkeiten: „Ey, probier mal mein Tool aus!“ – „Brauche ich dafür erst Python 3.12, pyserial, tk und fünf virtuelle Umgebungen?“„Äh… ja.“

Ich wollte eine einzige .exe-Datei. Einfach doppelt anklicken, ohne Python-Installation, ohne DLL-Hölle.

Akt II: Warum ausgerechnet Go (Golang)?

Ich wollte eine Sprache, die:

  1. Rauschende Performance bietet (kompiliert direkt in Maschinencode).
  2. Echte Nebenläufigkeit (Concurrency) über Goroutines mitbringt (perfekt für das dauerhafte Abfragen des USB-Ports im Hintergrund).
  3. Plattformübergreifend eine einzelne Binary ausspuckt (keine Dependencies!).

Go schien die perfekte Wahl zu sein. Zusammen mit modernen GUI-Frameworks für Go (wie z. B. Fyne oder Wails) lässt sich damit eine saubere, extrem schnelle Desktop-App bauen.

Akt III: KI als Copilot in VS Code – Debugging auf Steroiden

Egal ob man Go neu lernt oder ein bestehendes Projekt portiert: Man stolpert über Stolpersteine. Mein Go-to-Setup war Visual Studio Code mit KI-Code-Assistenten.

Die Erkenntnisse aus meinem ersten Python-Skript bildeten die perfekte Blaupause. Ich wusste genau, welche SCPI-Befehle das Multimeter braucht (FUNC?\n und MEAS?\n) und wie das Parsing der Strings aussehen muss. Die KI half mir in VS Code blitzschnell dabei, diese Logik in idiomatischen Go-Code zu übersetzen:

// Ein kleiner Einblick: SCPI-Abfrage in Go mit Goroutines
func (m *Multimeter) ReadValue() (string, error) {
    m.mu.Lock()
    defer m.mu.Unlock()

    // Befehl an Owon senden
    _, err := m.port.Write([]byte("MEAS?\n"))
    if err != nil {
        return "", err
    }

    // Antwort einlesen
    buf := make([]byte, 128)
    n, err := m.port.Read(buf)
    if err != nil {
        return "", err
    }

    return strings.TrimSpace(string(buf[:n])), nil
}

Spaß am Debuggen (?)

Während Python gerne erst zur Laufzeit tief im Menü abstürzt, meckert Go dank starker Typisierung schon beim Schreiben – und die KI schlägt direkt die passende Fehlerbehandlung (if err != nil) vor.

Der Vergleich: Python vs. Go

FeaturePython PrototypGo Final Version
Startzeit~1–2 SekundenBlitzschnell (< 0.1s)
VerteilungSkript + Python-Setup nötig1 einzelne .exe / Binary
MultithreadingThreads & Tkinter after()-TricksEleganter Hintergrund-Prozess via Goroutines
Arbeitsspeicher~50–80 MBExtrem leichtfüßig

Das Ergebnis & Release!

Das finale Programm macht genau das, was die Owon-Originalsoftware von Anfang hätte machen sollen:

  • Keine Installation nötig: Herunterladen, doppelklicken, läuft.
  • Auto-Port-Erkennung: Findet den USB-COM-Port auf Knopfdruck.
  • Echtzeit-Anzeige & Verlauf: Tabelle mit automatischer Skalierung der Einheiten (V, A, Ω, Hz…).
  • Rechtsklick-Copy & CSV-Export: Werte direkt in die Zwischenablage werfen oder als sauber formatierte CSV abspeichern.

Kostenloser Download kommt in Kürze!

Weil ich aus eigener Erfahrung nur zu gut weiß, wie frustrierend und nervig der Software-Kram bei Messgeräten aus Fernost manchmal sein kann, werde ich euch die kompilierte Go-App völlig kostenlos zur Verfügung stellen!

Ich organisiere aktuell noch den passenden Webspace für den Host. Sobald alles steht, lade ich die fertige Anwendung hoch und verlinke sie direkt hier im Blog.

Bleibt dran: Speichert euch den Blog am besten als Lesezeichen oder schaut in den nächsten Tagen nochmal vorbei – der Download-Link folgt so schnell wie möglich!

Hat dir dieser Beitrag geholfen?
Ich stecke viel Herzblut und Zeit in diesen Blog. Wenn du mir danke sagen möchtest, kannst du mir hier einen virtuellen Kaffee spendieren: buymeacoffee oder Ko-fi. Vielen Dank für deine Unterstützung!

Von Tobi

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert