ich möchte Daten über den COM-Port (RS232) einlesen.
Gesendet wird ein Text-String den ich in diverse Zellen eintragen möchte.
Wichtig ist mir das ein Event ausgelößt wird wenn Daten gesendet werden.
MfG
Mike
Um Daten über die serielle Schnittstelle (RS232) in Excel einzulesen, befolge diese Schritte:
Virtuellen Treiber installieren: Lade den virtuellen Treiber Vichw00.sys
und die zugehörige DLL Tvichw32.dll
von b-kainka.de herunter. Kopiere die Datei port.dll
in das Windows-Verzeichnis oder in den Ordner, in dem sich deine Excel-Datei befindet.
Makro aktivieren: Öffne Excel und aktiviere die Entwicklertools. Gehe zu „Visual Basic“ und erstelle ein neues Modul.
Deklarationen hinzufügen: Füge am Anfang deines Makros die folgenden Zeilen ein:
Private Declare Sub OPENCOM Lib "port" (ByVal a&)
Private Declare Sub CLOSECOM Lib "port" ()
Private Declare Function READBYTE Lib "port" () As Integer
COM-Port öffnen: Verwende den Befehl, um die Schnittstelle zu öffnen. Zum Beispiel:
OPENCOM "COM1:9600, N, 8, 1"
Hierbei steht 9600
für die Übertragungsrate, N
für kein Paritätsbit, 8
für 8 Datenbits und 1
für 1 Stoppbit.
Daten einlesen: Lese die ankommenden Daten mit folgendem Code:
Dim dezimal As Integer
dezimal = READBYTE
Um die Dezimalzahlen in Zeichen umzuwandeln, kannst du Chr(dezimal)
verwenden. Wenn keine Daten ankommen, wird READBYTE
den Wert -1
zurückgeben.
Schnittstelle schließen: Beende die Sitzung mit:
CLOSECOM
Fehler beim Öffnen des COM-Ports: Stelle sicher, dass der COM-Port korrekt angegeben ist und dass kein anderes Programm ihn bereits verwendet.
Keine Daten empfangen: Überprüfe, ob die Verbindung korrekt hergestellt ist und die Übertragungsrate mit dem sendenden Gerät übereinstimmt.
Fehlermeldung bei der DLL: Vergewissere dich, dass die Tvichw32.dll
und port.dll
im richtigen Verzeichnis sind.
Falls die oben beschriebene Methode nicht funktioniert, gibt es alternative Ansätze:
Verwendung von Drittanbieter-Tools: Es gibt Softwarelösungen, die speziell für das Auslesen von RS232-Daten entwickelt wurden. Diese können die Daten in ein Excel-kompatibles Format exportieren.
VBA-Add-Ins: Einige Add-Ins bieten erweiterte Funktionen zur Verarbeitung von seriellen Daten und können die Handhabung erleichtern.
Hier ist ein einfaches Beispiel, wie du Daten von einem Gerät über die serielle Schnittstelle einlesen kannst:
Sub SerialReadExample()
Dim data As String
Dim dezimal As Integer
OPENCOM "COM1:9600, N, 8, 1"
Do
dezimal = READBYTE
If dezimal <> -1 Then
data = data & Chr(dezimal)
End If
Loop Until dezimal = -1 ' Stoppe beim Ende der Daten
CLOSECOM
MsgBox data ' Zeige die empfangenen Daten an
End Sub
Dieses Makro liest kontinuierlich Daten vom COM-Port, bis keine mehr ankommen, und zeigt sie in einer Message Box an.
Debugging verwenden: Nutze das Debugging in VBA, um sicherzustellen, dass dein Code korrekt läuft. Setze Breakpoints und überprüfe Variablenwerte während der Ausführung.
Fehlerprotokollierung: Implementiere eine einfache Fehlerprotokollierung, um Probleme während der Datenübertragung festzuhalten.
Optimierung der Performance: Wenn du große Datenmengen verarbeiten möchtest, solltest du die Verarbeitung in Batches durchführen, um die Performance zu verbessern.
1. Wie kann ich die Baudrate ändern?
Die Baudrate kannst du in der OPENCOM
-Anweisung ändern, z.B. zu OPENCOM "COM1:115200, N, 8, 1"
für 115200 Baud.
2. Funktioniert das auch mit Windows 10?
Ja, die beschriebenen Schritte sind mit Windows 10 und Excel kompatibel, solange die richtigen Treiber installiert sind.
3. Was mache ich, wenn ich einen anderen COM-Port verwenden möchte?
Ändere einfach den COM-Port in der OPENCOM
-Anweisung, z.B. OPENCOM "COM2:9600, N, 8, 1"
für COM2.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen