# serielle Schnittstelle mit VB ansprechen



## pete_redman (17. Juni 2008)

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?



Danke im Voraus!

Besten Gruß


----------



## Alex F. (17. Juni 2008)

bitte benutze die  CodeTags [code=vb][/code] oder [CODE][/CODE] 
Weiterhin fänd ich es gut wenn du die Suchfunktion erst einmal nutzen würdest. Dein Problem ist mit Sicherheit in ähnlicher Art hier bereits aufgetaucht.
z.b. http://www.tutorials.de/forum/visual-basic/140151-serielle-schnittstelle-mit-vb-ansteuern.html

Grüsse bb


----------



## pete_redman (17. Juni 2008)

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


----------



## ronaldh (17. Juni 2008)

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


----------

