Serielle Schnittstelle
28.11.2012 23:47:02
Thomas
ich möchte aus Excel auf die serielle Schnittstelle zugreifen. Hierzu folgender Sachverhalt:
- habe mir aus dem Internet einen Code heruntergeladen, der die kernel32-Funktionen nutzt. Quelle: http://dev.emcelettronica.com/serial-port-communication-excel-vba
- folgende Konstante habe ich von 4 auf 20 hochgesetzt:
Private Const MAX_PORTS = 20
- dann habe ich noch die eigentliche Routine ergänzt:
Private Sub CommandButton1_Click()
Dim intPortID As Integer ' Ex. 1, 2, 3, 4 for COM1 - COM4
Dim lngStatus As Long
Dim strData As String
Dim msg As String
intPortID = 10
' Open COM port
If CommOpen(intPortID, "COM" & CStr(intPortID), "baud=38400 parity=N data=8 stop=1") 0 _
_
_
_
Then
lngStatus = CommGetError(msg)
MsgBox "Fehler beim Öffnen: " & msg
Else
strData = "z"
lngStatus = CommWrite(intPortID, strData)
If lngStatus = 0 Then
lngStatus = CommGetError(msg)
MsgBox "Schreibfehler: " & msg
Else
AppSleep 100
If CommRead(intPortID, strData, 13) = -1 Then
lngStatus = CommGetError(msg)
MsgBox "Lesefehler: " & msg
Else
MsgBox strData
End If
End If
If CommClose(intPortID) 0 Then
lngStatus = CommGetError(msg)
MsgBox msg
End If
End If
End Sub
- läuft auf meinem Desktop (XP, Excel 2002) auf COM1 wunderbar :o)
- läuft auf meinem Laptop (W7, Excel 2003) aber leider nicht. :o( Hier habe ich allerdings keinen RS232-Port, sondern nur USB. Geht aber auch, da ich für den 9-poligen D-SUB-Stecker meines Gerätes einen RS232->USB-Umsetzer benutze. Dieser Umsetzer meldet sich auf dem Laptop als COM10 an! Selbstverständlich habe ich die Zeile "intPortID = 1" abgeändert auf "intPortID = 10".
- beim Öffnen des Ports kommt aber immer die Meldung
"Das System kann die angegebene Datei nicht finden."
Irgendwie findet Excel offenbar den COM10 nicht?- er ist aber da! Mit Hyperterminal kann ich mit derselben HW (Laptop, RS232-Umsetzer) über COM10 auf das Gerät zugreifen, es antwortet auch richtig.
Weiß hier jemand Rat? Versteht die kernel32 evtl. nicht COM10? Geht die überhaupt so weit? Ich hatte ja die Konstante MAX_PORTS von 4 auf 20 hochgesetzt. Könnte hier der Hase begraben liegen?
Vielen Dank schon einmal!
Viele Grüße,
Thomas :o)