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