Zugriff auf serielle Schnittstelle mit Ecxel/VBA

Guten Tag,

ich möchte auf die serielle Schnittstelle COM 1 mit Ecxel/VBA zugreifen, angeschlossen ist ein Microcontroller CControl. Das mache ich mit folgender VBA-Routine:

Declare Function OPENCOM Lib "RSAPI.DLL" (ByVal Parameter$) As Integer
Declare Function SENDSTRING Lib "RSAPI.DLL" (ByVal Parameter$) As Integer
Declare Function READSTRING Lib "RSAPI.DLL" (ByVal Parameter$) As Integer
Declare Function SENDBYTE Lib "RSAPI.DLL" (ByVal B%) As Integer
Declare Function READBYTE Lib "RSAPI.DLL" () As Integer
Declare Sub TIMEOUT Lib "RSAPI.DLL" (ByVal ms%)
Declare Sub CLOSECOM Lib "RSAPI.DLL" ()
Declare Sub DELAY Lib "RSAPI.DLL" (ByVal ms%)

Sub c\_control()

 Const CC\_BYTE% = 27
 Dim i1%, i2%, zeichen$
 '----------------------------------------------

 If OPENCOM("COM1:9600,N,8,1") 0 Then
 MsgBox "Fehler bei OPENCOM"
 Exit Sub
 '\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>
 End If
 Range("A1").Select
 Cells(1, 1).Value = "COM-Schnittstelle lesen"
 TIMEOUT 2000

 'Eine Zeile lesen
 i1 = SENDBYTE(CC\_BYTE)
 If i1 0 Then
 MsgBox "Fehler bei SENDBYTE: " & i1
 Exit Sub
 '\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>\>
 End If

 zeile = READBYTE
 MsgBox "zeichen = " & zeichen

 CLOSECOM

End Sub

OPENCOM und SENDBYTE liefern jeweils „0“ zurück, d.h. keinen Fehler, aber READBYTE liefert „-1“, d.h. „Fehler“.
CControl fragt RXD sekündlich ab, sollte auf ein gesendetes Byte 27 vernünftig antworten. Aber es reagiert überhaupt nicht.

Was könnte sein? Wo könnte ich weiter versuchen, forschen? Könnte es an Vista liegen?

Danke
Laika

Hallo Laika,

OPENCOM und SENDBYTE liefern jeweils „0“ zurück, d.h.
keinen Fehler, aber READBYTE liefert „-1“, d.h. „Fehler“.
CControl fragt RXD sekündlich ab, sollte auf ein gesendetes
Byte 27 vernünftig antworten. Aber es reagiert überhaupt
nicht.

Was könnte sein? Wo könnte ich weiter versuchen, forschen?
Könnte es an Vista liegen?

Ich kenne die DLL jetzt nicht genau.
Es kann aber sein, dass READBYTE immer -1 liefert, wenn noch kein Zeichen empfangen wurde. Also in eine Schleife stellen, bis was kommt.

MfG Peter(TOO)