‚Was stimmt an dem Code nicht?‘
Hallo Liebe Wissende!
Hier mal ein fragment meines Codes, welchen ich für die Schnittstellenprogrammierung verwenden will.
Was stimmt daran nicht?
Beim Klick auf den „LiesCode“-Button soll der Barcodescanner (am Com1) ausgelesen werden.
Ich krieg aber immer nur die „-1“ (=Fehler)
Hoffe meine Kommentare machen den Code verständlicher - für die schlechte Formatierung kann ich nix - liegt an der Forums-Form. 
Private Sub LiesCode_Click()
TIMEOUT 9000 'Bei READBYTE wird 9000ms gewartet ob Daten gesendet werden, danach wird die -1 gesendet
'Da bei mir sofort ohne die 9s Verzögerung das -1 kommt liegt der Verdacht nahe,
'dass nicht nichts gesendet wird, sondern ein anderer Fehler zur -1 führt
'TIMEOUT ist eine Funktion der Port.dll
OPENCOM („Com1:115200,N,8,1“) 'Der COM1, also die serielle RS232-Schnittstelle wird geöffnet
'OPENCOM ist eine Funktion der Port.dll
If OPENCOM(„Com1:115200,N,8,1“) = 0 Then MsgBox „Zugriff auf Port verweigert evtl. wird bereits anderweitig auf Port zugegriffen“, vbCritical
'diese Box kommt, wenn der Port nicht geöffnet werden kann (der Fehler kommt z.B., wenn der Port
'anderweitig beansprucht wird (z.B. das VisiSet-Tool drauf zugreift)
'MsgBox "Opencom bei Baudrate 9600(Bei Fehler 0): " & OPENCOM(„Com1:9600,N,8,1“)
MsgBox "Opencom bei Baudrate 115200: " & OPENCOM(„Com1:115200,N,8,1“)
'resultX = -1 'Erzwungenes „Rein in die While-Schleife“
schicken = Chr(63) & Chr(13) 'Fragezeichen 63, Enter 13 ASCII
fragezeich = Chr(63) ’
enterzeich = Chr(13) ’
'SENDBYTE fragezeich ’
'SENDBYTE enterzeich 'Das ganze sollte ein Versuch sein, ob man mit dem Senden der Zeichen-
'folge „?“ + „Enter“ den Scanner zum Lesen bringen kann
'Scheiterte aber daran, dass SENDBYTE nur 0…255 senden kann
resultX = READBYTE 'Lesen eines Bytes von der seriellen Schnittstelle. Diese muß zuvor
'geöffnet worden sein.
'Parameter: keine
'Rückgabe: -1 bei Fehler, sonst das empfangene Byte
'READBYTE Funktion der Port.dll
If resultX = -1 Then MsgBox „Fehler beim Byte-Auslesen des Ports“, vbCritical
MsgBox "Readbyte: " & READBYTE
iki = CInt(0)
a = CInt(0)
MsgBox „Der folgende Vorgang kostet Dich eine Minute Deines Lebens … zumindest wartezeitmäßig…“
TIMEINIT 'Setzt den Millisekunden-Zeitzähler auf Null
Do While a -1 _
Then txtSerienNummer.Text = „Ungleich -1“ _
Else
If resultX = -1 _
Then txtSerienNummer.Text = „Fehler beim Lesen“
Loop
Zeiteisen = TIMEREAD
MsgBox "Zeit für gesamten Schleifendurchlauf: " & Zeiteisen
MsgBox "Anzahl der Schleifendurchläufe: " & a
CLOSECOM 'Geöffneten COM-Port wieder schließen
'CLOSECOM Funktion der Port.dll
End Sub