RFID Reader mit Visual Basic 2010 auslesen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    RFID Reader mit Visual Basic 2010 auslesen

    Hallo,

    Ich möchte mit Visual Basic 2010 die Nummern von 125khz RFID Karten auslesen. Bei dem hierfür benutzten RFID-Reader (amazon.de/gp/product/B00OZJTBT…oh_aui_detailpage_o00_s00) handelt es sich um ein Serial-to-USB-Gerät d.h. der Reader wird per USB mit dem Rechner verbunden, im Gerätemanager wird er jedoch als serielle Schnittstelle (COM3) angezeigt.

    Mein erster Versuch war das Codebeispiel von Microsoft:


    Dim returnStr As String = ""
    Dim com1 As IO.Ports.SerialPort = Nothing
    Try
    com1 = My.Computer.Ports.OpenSerialPort("COM3")
    com1.ReadTimeout = 10000

    Catch ex As TimeoutException
    returnStr = "Error: Serial Port read timed out."
    Finally
    If com1 Is Nothing Then com1.Close()
    End Try

    Do
    Dim Incoming As String = com1.ReadLine()

    If Incoming Is Nothing Then
    Exit Do
    Else
    returnStr &= Incoming & vbCrLf
    End If

    Loop


    In der Do/Loop-Schleife erhalte ich jedoch bei com1.Readline einen Timeout, das Auslesen des RFID-Readers scheint also nicht zu funktionieren.
    Wie lässt sich der Reader also auslesen??

    Leider habe ich über Visual Basic noch nie irgendwelche Hardware ausgelesen, habe also keine Ahnung auf diesem Gebiet. Wie man den "Serielle Schnittstelle"-Baustein in der Toolbox benutzt
    bzw. zu was dieser gut sein soll, hab ich keine Ahnung.
    Auch das hier im Forum verlinkte Codebeispiel (mikrocontroller.net/topic/66465#537034) verstehe ich leider nicht.

    Hoffe ihr könnt mir weiterhelfen!

    Vielen Dank,

    Alex
    Eine einfache, immer funktionierende Antwort lässt sich bei RS232 leider nicht geben.
    Mein Vorschlag:

    Nimm erst ein Terminalprogramm und schaue, ob du damit überhaupt Daten bekommen kannst.
    Falls nein, musst du dich erst mal in die Möglichkeiten und den Sinn der verschiedenen
    Port-Parameter einlesen. Google oder Wikipedia wären da gute Anlaufstellen.
    Terminalprogramm ist schonmal gut.

    Ausserdem vermute ich, dass der Reader nicht pauschal immer liest, sondern
    du ihm mit einem Befehl sagen musst "lese jetzt" oder "lese dauerhaft".

    RTFM ;)

    Bei mir schauts (ganz grob) so aus :

    VB.NET-Quellcode

    1. Private m_RS232 As New IO.Ports.SerialPort ' RS232 Schnittstelle
    2. Private Sub MalWasSenden()
    3. m_RS232 = My.Computer.Ports.OpenSerialPort("COM" & m_Com, m_BaudrateInitial, m_Parity, m_DataBits, m_StopBits)
    4. If connected Then
    5. m_RS232.Encoding = System.Text.Encoding.Default
    6. m_RS232.DiscardOutBuffer
    7. m_RS232.DiscardInBuffer
    8. AddHandler m_RS232.DataReceived, AddressOf event_DataRecieved
    9. Else
    10. Throw New Exception("Verbindung (COM" & m_Com & ") misslungen")
    11. End If
    12. m_RS232.Write("sag mal was")
    13. End Sub
    14. Private Sub event_DataRecieved(ByVal Sender As Object, ByVal Args As System.IO.Ports.SerialDataReceivedEventArgs)
    15. Dim Soviel As Int32 = m_RS232.BytesToRead
    16. Dim Bla As String = m_RS232.ReadLine()
    17. ....
    18. End Sub




    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Duke“ ()

    56k schrieb:

    serielle Schnittstelle (COM3)
    Zieh Dir zunächst im Designer ein SerialPort auf Deine GUI und setz die Parameter im Designer.
    Das DataRecieved-Event organisiertst Du ebenfalls im Designer.
    Und dann suchst Du mal im Forum nach SerialPort, da findest Du gefühglte 1000 Threads, wo beschrieben ist, wier Daten empfangen werden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!