Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten über die Serielle-Schnittstelle einlesen

Forumthread: Daten über die Serielle-Schnittstelle einlesen

Daten über die Serielle-Schnittstelle einlesen
11.01.2004 21:27:00
Mike
Hallo,
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
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten über die Serielle-Schnittstelle einlesen
12.01.2004 10:15:31
Andi
Hi Mike,
ich hab' mich selbst kürzlich mit der RS232 rumgeschlagen, kann Dir also vielleicht weiterhelfen. Wo hakt es denn genau?
Schönen Gruß
Andi
AW: Daten über die Serielle-Schnittstelle einlesen
13.01.2004 19:23:54
Mike
Hallo,
ich möchte einen Text der über die Serielle Schnittstelle einlesen und auswerten.
Wenn möglich sollte der CommPort überwacht werden (Eventauswertung).
MfG
Mike
Anzeige
AW: Daten über die Serielle-Schnittstelle einlesen
14.01.2004 11:54:49
Andi
Hi Mike,
nachdem Du XP verwendest, wäre zunächst mal die Hürde des grundsätzlichen Zugriffs auf den Port zu überwinden:
Hierzu brauchst Du einen sog. virtuellen Treiber (Vichw00.sys) samt zugehöriger .dll (Tvichw32.dll), beide können unter http://www.b-kainka.de/portnt.htm runtergeladen werden.
Sodann musst Du noch die Datei port.dll, die es ebenfalls auf genannter Seite gibt, entweder ins Windows-Verzeichnis oder in den Ordner, in sich Deine Excel-Datei befindet, hineinkopieren.
Um den Port öffnen und auslesen zu können, müssen am Anfang Deines Makros, direkt hinter Option Explicit, folgende Zeilen stehen:
private declare sub OPENCOM Lib "port" (ByVal a&)
private declare sub CLOSECOM Lib "port" ()
private declare READBYTE Lib "port" () as Integer
Nun kannst Du mit
OPENCOM"COM1:9600, N, 8, 1" die Schnittstelle öffnen, wobei Du statt 9600 auch eine andere Übertragungsrate angeben kannst, je nach dem mit welcher Geschwindigkeit die Daten halt ankommen.
N steht für "kein Paritätsbit"
8 steht für 8 Datenbit
1 stehtt für 1 Stoppbit
Die ankommenden Daten werden als Dezimalzahlen eingelesen, z.B. so:
dezimal = READBYTE
die Dezimalzahlen lassen sich mittels Chr(dezimal) leicht in Zeichen umwandeln, die dann wiederum zu einem Text verknüpft werden können. Wenn keine Daten ankommen, ergibt READBYTE -1.
Am Ende der Übertragung solltest Du die Schnittstelle der Form halber noch mit
CLOSECOM wieder schliessen.
Ich hoffe, ich konnte Dir ein wenig weiterhelfen, wenn nicht meld' Dich einfach nochmal.
Ich muss allerding gestehen, dass sich mein Wissen über sie Schnittstelle auch in gewissen Grenzen hält, ich hab' mir halt das angeeignet, was ich für mein Makro vor kurzem brauchte.
Schönen Gruß & viel Erfolg
Andi
Anzeige
;
Anzeige

Infobox / Tutorial

Daten über die Serielle Schnittstelle in Excel einlesen


Schritt-für-Schritt-Anleitung

Um Daten über die serielle Schnittstelle (RS232) in Excel einzulesen, befolge diese Schritte:

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

  2. Makro aktivieren: Öffne Excel und aktiviere die Entwicklertools. Gehe zu „Visual Basic“ und erstelle ein neues Modul.

  3. 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
  4. 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.

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

  6. Schnittstelle schließen: Beende die Sitzung mit:

    CLOSECOM

Häufige Fehler und Lösungen

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


Alternative Methoden

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.


Praktische Beispiele

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.


Tipps für Profis

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


FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige