Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Serielle Schnittschtelle mit VBA ansprechen!

Forumthread: Serielle Schnittschtelle mit VBA ansprechen!

Serielle Schnittschtelle mit VBA ansprechen!
10.02.2005 11:01:12
Serge
Hallo alle zusammen!!!
Bitte helft mir ihr VBA Profis!
Ich habe ein Gerät, das ich mit VBA über Serielle Schnittstelle ansprechen will.
Für diese Zwecke habe ich aus dem Internet eine Bibliothek, so genannte RSAPI.DLL
""" Mit diesen allgemeinen Funktionen sollte es möglich sein, jedes Gerät mit RS 232-Anschluß aus Standard-Software heraus anzusprechen. Wurden früher technisch-wissenschaftliche Geräte mit Analog-Ausgängen für XY-Schreiber ausgestattet, findet man heute an vielen Geräten den seriellen Anschluß. Dabei werden häufig die Daten als Zeichen zum Rechner übertragen. """
Declaration...

Sub Senden()
OPENCOM "COM1:9600,N,8,1"
SENDSTRING "STA,S,2" + Chr$(13)
CLOSECOM
End Sub


Sub StopK()
OPENCOM "COM1:9600,N,8,1"
SENDSTRING "STA,S,4" + Chr$(13)
CLOSECOM
End Sub

bis dahin funzt alles...ich kann bestimmte Befehle an das Gerät (Kommando-Antwort Beziehung)
senden und es emfängt sie und führt die aus . Das Bios von dem Gerät kann
Strings verstehen und intepretieren. Serielle Übertragung geht auch...
In der Anleitung zum Gerät steht nähmlich....dass es Zeichenkette als Antwort zurückgibt
Jetzt will ich die Daten von dem Gerät bekommen und die dann im Excel Tabellenblatt speichern.
Mein Code dazu:
Dim S As String

Sub Test()
OPENCOM ("COM1:9600,N,8,1")
SENDSTRING "CLL,G" + Chr$(13)  ' Daten anfordern
S=SPACE$(32)		’32 Leerzeichen (VBA)
READSTRING S		’Auf 32 Zeichen warten
ThisWorkbook.Sheets("Tabelle1").Range("A1").Value = S    ' in die Tabelle
schreiben
CLOSECOM
End Sub

Erwarte als Antwort vom Gerät ein Zeichen "02"
Das sollte laut Hilfe zur RSAPI.DLL
Zitat:
------------------
Empfangen einer Zeichenkette. Die Länge der übergebenen Zeichenkette legt fest, auf wie viele Zeichen eingelesen werden sollen. Bei einem TimeOut bricht der Empfang ab.
Rückgabe: Zahl der empfangenen Zeichen.
--------------
Wer weiß worum funzt das nicht...wo liegt mein Fehler?

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Serielle Schnittschtelle mit VBA ansprechen!
10.02.2005 13:36:03
Serge
Danke erst mal..
zweite links war schon interessant, aber erstens gehts bei mir nicht..und
zweitens ist zu kompliziert.
Aus dem Drund sind solche Bibliotheken, wie RSAPI.DLL,Port.DLL u.a. , gamacht worden um das Ganze zu erleichtern.
und ich möchte schon beim RSAPI.DLL bleiben , da bei mir zumindest die Datenkommunikation in eine Richtung funktzioniert.(Senden von Kommandos)
Wer kann mir weiter helfen.....so eine Bibliothek soll mit allen möglichen Geräten gehen..steht zumindest in der Beschreibung :)
Anzeige
;
Anzeige

Infobox / Tutorial

Serielle Schnittstelle mit VBA ansprechen


Schritt-für-Schritt-Anleitung

Um ein Gerät über die serielle Schnittstelle (RS232) mit VBA anzusprechen, kannst du folgende Schritte befolgen:

  1. Bibliothek einbinden: Stelle sicher, dass du die RSAPI.DLL korrekt in deinem Excel VBA-Projekt eingebunden hast. Das kannst du über Extras -> Verweise in der VBA-Entwicklungsumgebung tun.

  2. Serielle Verbindung aufbauen: Verwende die OPENCOM-Funktion, um die Verbindung zur seriellen Schnittstelle herzustellen. Zum Beispiel:

    OPENCOM "COM1:9600,N,8,1"
  3. Daten senden: Sende Daten mit der SENDSTRING-Funktion. Ein Beispiel:

    SENDSTRING "STA,S,2" + Chr$(13)
  4. Daten empfangen: Nutze die READSTRING-Funktion, um die Antwort vom Gerät zu lesen. Hier ein Beispiel:

    Dim S As String
    S = SPACE$(32) ' 32 Leerzeichen
    READSTRING S
  5. Daten in Excel speichern: Schreibe die empfangenen Daten in eine Excel-Zelle:

    ThisWorkbook.Sheets("Tabelle1").Range("A1").Value = S
  6. Verbindung schließen: Vergiss nicht, die Verbindung zu schließen:

    CLOSECOM

Häufige Fehler und Lösungen

  • Fehler bei der Datenübertragung: Wenn du keine Daten empfängst, überprüfe, ob das Gerät korrekt an die serielle Schnittstelle angeschlossen ist und die Baudrate (z.B. 9600) stimmt.

  • Timeout-Fehler: Wenn ein Timeout auftritt, könnte die Länge der erwarteten Zeichen nicht stimmen. Stelle sicher, dass du die korrekte Zeichenlänge in der READSTRING-Funktion angibst.

  • Falsche COM-Port-Einstellungen: Vergewissere dich, dass du den richtigen COM-Port (z.B. COM1, COM2) verwendest und dass die Einstellungen (Baudrate, Parität, Datenbits) mit den Spezifikationen des Geräts übereinstimmen.


Alternative Methoden

Falls die Verwendung der RSAPI.DLL nicht funktioniert, kannst du auch andere Bibliotheken oder Methoden in Betracht ziehen:

  • MSComm-Steuerelement: Integriere das MSComm-Steuerelement in dein Projekt. Dieses Steuerelement bietet eine alternative Möglichkeit, serielle Daten zu senden und zu empfangen.

  • VBA-API-Funktionen: Nutze Windows-API-Funktionen für eine direktere Kontrolle über die serielle Schnittstelle. Dies erfordert jedoch mehr Programmierkenntnisse.


Praktische Beispiele

Hier sind einige Beispiele zur Verwendung der seriellen Schnittstelle mit VBA:

Sub SendCommand()
   OPENCOM "COM1:9600,N,8,1"
   SENDSTRING "GET_DATA" + Chr$(13)
   CLOSECOM
End Sub

Sub ReceiveData()
   Dim S As String
   S = SPACE$(32)
   OPENCOM "COM1:9600,N,8,1"
   READSTRING S
   ThisWorkbook.Sheets("Tabelle1").Range("A1").Value = S
   CLOSECOM
End Sub

Diese Beispiele zeigen, wie du Kommandos senden und Daten empfangen kannst.


Tipps für Profis

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinen VBA-Skripten, um Probleme während der Kommunikation zu erkennen und zu protokollieren.

  • Testumgebung: Teste deine Skripte in einer kontrollierten Umgebung, um sicherzustellen, dass alles ordnungsgemäß funktioniert, bevor du sie in einer Produktionsumgebung einsetzt.

  • Dokumentation: Halte die Dokumentation deines Geräts bereit, um die richtigen Befehle und Antwortformate zu verstehen. Oft sind spezifische Kommandos erforderlich, um Daten korrekt abzurufen.


FAQ: Häufige Fragen

1. Warum kann ich keine Daten empfangen?
Überprüfe, ob die Baudrate und die COM-Port-Einstellungen korrekt sind. Stelle sicher, dass das Gerät ordnungsgemäß angeschlossen ist.

2. Was ist der Unterschied zwischen SENDSTRING und READSTRING?
SENDSTRING wird verwendet, um Daten an das Gerät zu senden, während READSTRING dazu dient, die Antwort vom Gerät zu empfangen.

3. Welche Excel-Version benötige ich für die Verwendung von RSAPI.DLL?
Die RSAPI.DLL sollte mit den meisten modernen Excel-Versionen kompatibel sein, jedoch ist es ratsam, mindestens Excel 2010 oder höher zu verwenden.

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