serielle Schnittstelle mit VB ansprechen

pete_redman

Grünschnabel
Hallo zusammen,

ich möchte mit einer selbst gestalteten Oberfläche in VB ein RFID-Lesegerät über RS232 ansprechen.Dazu sollen HEX-Zeichen an das Lesegerät übertragen und entsprechend empfangen werden.
Mit welchem Code kann auf einfache Weise erst einmal die Schnittstelle angesprochen werden?

Das Interface des Lesegerätes ist folgender Maßen aufgebaut:

Folgende Parameter sind eingestellt:

RS485 Mode: false
Bautrate : 9600
Databits: 8
Paraty: 9
Stopbits: 1
SW Flowoption: Non
DTR: true
RTS: true
Logfile: on
Logfile HEX: on

Der Code mit dem wir versucht haben die Schnittstelle anzusprechen (allerdings ohne Erfolg) lautet:

Option Explicit
Dim x As String 'Deklaration von Variablen
Dim Y As String, Normal As String ', 'line As Long
Dim datenlogger As Boolean

Private Sub Command1_Click() 'System aktivieren
i = 0 'Laufvariable i=0 setzen
Command1.Enabled = False 'Button Aktivieren blockieren
With MSComm1 'With-Anweisung für MSComm1
.CommPort = 1 'ComPort1 ansprechen
.InputLen = 1 'Anzahl der Zeichen auf 1 festlegen
.InBufferSize = 1 'Größe des Empfangspuffer festlegen
.Handshaking = comRTS 'Handshake-Protokoll festlegen
.Settings = "9600,n,8,1" 'Parameter für die Baudrate, Datenbits und Stopbits festlegen
.RThreshold = 14 'Anzahl der zu empfangenen Zeichen festlegen
.PortOpen = True 'ComPort aktivieren
End With

Normal = "ABC"

Text2 = Normal

MSComm1.Output = Normal 'Zeichen normal an die serielle Schnittstelle senden

Open "c:\test.txt" For Output As #8 'Textdatei anlegen
Print #8, "Transponder", Tab, "n" 'Schreiben der Datei
datenlogger = True 'Aktivieren des Datenloggers




MSComm1.PortOpen = False


End Sub

Private Sub Command2_Click() 'System deaktivieren
Unload Form1 'Deaktivieren der Form Funktionsgenerator
frmSplash.Show 1 'Aufrufen des Hauptmenüs
datenlogger = False 'Deaktivieren des Datenloggers
Close 8 'Textdatei schließen
End Sub

'Private Sub Command3_Click() 'x
' line = Chr(1 & 2 & 10 & 50 & 58)
' MSComm1.Output = "line" 'Zeichen a an die serielle Schnittstelle senden
'End Sub


Private Sub mscomm1_oncomm() 'MSComm-Steuerelement
For i = 1 To 12
Select Case MSComm1.CommEvent 'Anweisung bei einem zu letzt aufgetreteten Kommunikationsereignnis
Case comEvReceive 'Case-Anweisung, wenn MSComm Ereignis ausgelöst wird
'x = AscB(MSComm1.Input) 'Daten aus dem Empfangspuffer in AsciiB-Zeichen als Variable x speichern
x = x & MSComm1.Input 'x Werte in das Textfeld schreiben
'If datenlogger = True Then 'If-Anweisung wird aktiviert, wenn Datenlogger aktiviert wurde
' i = i + 1 'Laufvariable um eins erhöhen
' ReDim Preserve ergebnismatrix(2, i) 'Matrix auf 2 Spalten und i abhängige Reihen definieren
' ergebnismatrix(1, i) = i 'Spalte 1 besteht aus der Laufvariable
' ergebnismatrix(2, i) = x 'Spalte 2 besteht aus der Variable x
'End If
'MSComm1.InBufferCount = 0 'Empfangspuffer null setzen
End Select
Next i

Text1 = x
End Sub



Weiß jemand einen Rat?

:confused:

Danke im Voraus!

Besten Gruß
 
Hi brainbyte,
haben hier im Forum schon überall gesucht um unser Problem zu lösen.
Allerdings ohne Erfolg, deshalb auch die Anfrage um Hilfe
Habe den Code auch mitgeschickt den wir nutzen wollen,
doch irgendwo scheint irgendwo ein Problem zu sein um
die serielle Schnittstelle ansprechen zu können!

Wäre sehr dankbar um bessere Ratschläge, den Link von dir hatte ich
mir auch schon vorher durchgelesen.
Trotzdem Danke;)
 
bb hat aber recht, mit Code-Tags könnte man Deinen Code wesentlich besser lesen.

Im übrigen schreibst Du nicht, was nicht geht, ob und welche Fehlermeldung Du bekommst usw.

Dann ist mir nicht klar, warum Du die Inputlen auf 1 setzt, das kann nicht funktionieren. Alle Lesegeräte die mir bekannt sind senden auf einen Schlag einen längeren String, der dann programmgesteuert analysiert werden muss.

Zum Dritten kann eigentlich ohnehin nichts ankommen, da Du im Command1_Click (mit dem das System eigentlich aktiv geschaltet werden soll) zum Schluss der Comport wieder zu gemacht wird. Bei MSComm1.PortOpen = False ist die Schnittstelle wieder zu, demzufolge kann auch nichts kommen.

ronaldh
 
Zurück