Microsoft Excel

Herbers Excel/VBA-Archiv

Frage zur RSAPI.DLL

Betrifft: Frage zur RSAPI.DLL von: Achim Kruckenbaum
Geschrieben am: 25.06.2007 20:29:06

ich habe mir Ihr Buch "Messen, Steuern und Regeln mit Word & Excel" gekauft, und komme mit der RSAPI.DLL
nicht klar.

Folgendes Problem:

Ich möchte eine Siemens LOGO über die RS 232 Schnittstelle steuern und als Datenlogger nutzen.
Mit der Programmiersprache Python ist mir dies problemlos gelungen.

Unter Visual Basic stellt sich fogendes Problem:

Um eine Siemens LOGO in Run zu schalten, muß ich den Steuercode

SENDBYTE (&H55)
SENDBYTE (&H18)
SENDBYTE (&H18)
SENDBYTE (&HAA)

über die RS 232 senden.

Um die LOGO zu stoppen, den Steuercode

SENDBYTE (&H55)
SENDBYTE (&H12)
SENDBYTE (&H12)
SENDBYTE (&HAA)

Ich habe, weil es nicht funktionierte, den ComPort mit einem Portmonitor beobachtet und
festgestellt, das anstelle des Steuercode &H55 das Zeichen "U" gesendet wird, die beiden nächsten Zeichen "&H18 &H18"
stimmen, und das Byte &HAA wird in die Zeichenfolge "ffffffaa" umgewandelt.

Was mache ich falsch ???

Der Programmcode:

Declare Sub OPENCOM Lib "RSAPI.DLL" (ByVal ComParameter$)
Declare Sub CLOSECOM Lib "RSAPI.DLL" ()

Declare Sub SENDBYTE Lib "RSAPI.DLL" (ByVal i%)

Declare Function READBYTE Lib "RSAPI.DLL" (B%) As Integer

Declare Sub TIMEOUT Lib "RSAPI.DLL" (ByVal ms%)
Declare Sub Delay Lib "RSAPI.DLL" (ByVal ms%)

___



Private Sub logo_run_cmd_Click()

OPENCOM "COM1:9600,E,8,1"
SENDBYTE (&H55)
SENDBYTE (&H18)
SENDBYTE (&H18)
SENDBYTE (&HAA)
CLOSECOM

End Sub





Private Sub logostop_cmd_Click()


OPENCOM "COM1:9600,E,8,1"
SENDBYTE (&H55)
SENDBYTE (&H12)
SENDBYTE (&H12)
SENDBYTE (&HAA)
CLOSECOM

End Sub


  

Betrifft: AW: Frage zur RSAPI.DLL von: Hubert
Geschrieben am: 25.06.2007 21:25:28

Hi,

woher kommt denn die DLL, ist ja schließlich kein Windows-Standard.
Für mich sieht das wie ein Typkonflikt aus. Windows-DLL verwenden
üblicher Weise den Datentyp Long.

Der Wert &H55 ist Dezimal 85, was dem Ascii-Code von U entspricht.

mfg Hubert


  

Betrifft: AW: Frage zur RSAPI.DLL von: Achim
Geschrieben am: 26.06.2007 16:31:32

Hallo,

die RSAPI.DLL ist ein Schnittstellentreiber für die RS232 Schnittstelle und gehört zum o.g. Buch.

Leider hat der Buchautor auf meine Frage nicht reagiert, darum probiere ich es hier.


Ich habe 2 Dateien auf diesen Server geladen. Es sind Protokolle von einem Portmonitor Programm.

Hier die Datei mit einer funktionierenden Version in der Programmiersprache Python
geschrieben:
https://www.herber.de/bbs/user/43596.txt

Und hier die nicht funktionierende Version mit der RSAPI.DLL in VBA
https://www.herber.de/bbs/user/43602.txt

Man sieht in der funktionieren Version ganz deutlich, das der Hex Wert 55 nicht in eine
Dezimalzahl (85) umgewandelt worden ist.

Ich verstehe auch nicht, warum das erste Byte von Hex 55 in eine Zeichen umgewandelt worden ist,
die beiden folgenden Bytes Hex18, Hex 18 so geblieben sind, und das letzte Byte Hex AA auch wieder
umgewandelt wurde (ffffffaa)

Danke für jede Hilfe

Achim


  

Betrifft: AW: Frage zur RSAPI.DLL von: Hubert
Geschrieben am: 26.06.2007 18:59:34

Hi,

ich befürchte, da wird dir hier kaum jemand helfen können,
ich jedenfalls nicht.

mfg Hubert


  

Betrifft: AW: Frage zur RSAPI.DLL von: Achim
Geschrieben am: 28.06.2007 21:51:49

Hallo,

es liegt wohl an der dll.

Ich habe auf der Internetseite

http://www.hjberndt.de/soft/rsapitest.zip

eine andere Version der dll geladen, die wenigstens einmal die gewünschte Funktion ausführt hat,
danach aber nicht mehr (ausser nach Neustart des PC).

Ich werde wohl nach einer anderen Lösung für die Programmierung der RS232 suchen
müssen.

Danke Nochmal


MfG

Achim