Hallo Phil,
die endgültige optimale Lösung habe ich noch nicht gefunden.
Außerdem nutze ich ja auch noch sogenannte "Legacy"-Betriebssysteme. :)
Die folgende Antwort betrifft ein wenig unkonkret die "Metaebene":
Typischerweise werden Treiber für eine virtuelle COM-Schnittstelle
mitgeliefert.
Da von mindestens XP an aufwärts (Linux weiß ich nicht) jedes Windows
über alle notwendigen System-Calls verfügt, hängt die Ansteuerung von
der Verpackung ("Wrapper") dieser Calls in VBA ab. Eventuell findet sich
Wrapper-Unterstützung in Form von bequemen Befehlen auch in aktuellen
Office-Versionen, ich nutze immer noch eine uralte.
Die minimale Lösung besteht darin, Wrapper-Code in ein VBA-Modul zu
kopieren und die dann deklarierten Systemfunktionen zu nutzen.
Lösungen dieser Art findest Du im Netz mehrere, aber nicht alle
funktionieren gleich gut.
Wenn es für Dein Multimeter hunderte Megabyte schwere Labview-Treiber
gibt, braucht es oft nur einen "Verweis" in VBA, um komfortable
Wrapper-Routinen verfügbar zu machen.
Einige einfache, aber installationsspeicherplatzarme Lösungen laufen auf
eine Art "busy waiting" hinaus, bei der man zyklisch die Schnittstelle
abfragt. IN Deinem Code manifestiert sich das in dem Hinweis "reading
loop".
Schlauere, aber von mir noch nicht ausprobierte Lösungen lösen ein
Ereignis aus, wenn sich an der Schnittstelle etwas tut. Das ist eine
schöne, weil lastärmere Verfahrensweise.
Dazu zählt insbesondere das MSCOMM-ActiveX-Control.
Gruß
Peter