SerialPort DataReceived

  • VB.NET

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

    SerialPort DataReceived

    Hallo,

    ich bin VB-Anfänger und wüßte gern, ob an meinem seriellen Port Daten eingegangen sind.
    Verrät mir jemand, wie man das programmiert ?

    Ich hätte gedacht: if SerialPort1.DataReceived=true then ... aber der Compiler findet das doof.

    Die nächste Frage wäre dann, wenn ein Flag für eingegangene Daten gesetzt wird, wie das wieder zurückgesetzt wird, ob das von selbst geht, oder man es machen muß.

    Viele Grüße
    Tilmann
    DataReceived ist ein Ereignis, das eintritt, sobald Daten anliegen.
    Sobald du ein SerialPort-Control auf deiner Form hast, kannst
    du diese Ereignisroutine halbautomatisch in deinen Code
    einfügen lassen.
    Im Sourcecodefenster der Form kanns du Links Oben dein
    Control auswählen und Rechts Oben dann das Ereignis, für das
    du Code eingefügt haben willst.

    Der Code sieht dann so aus:

    VB.NET-Quellcode

    1. Private Sub SerialPort1_DataReceived(sender As Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
    2. End Sub


    Sobald Daten (vorausgesetzt alle anderen Parameter sind richtig eingestellt und der Port ist
    von deinem Programm geöffnet) angekommen sind, verzweigt dein Programm in diese
    Routine. Dort kannst du dann anfangen deine Daten zu verarbeiten.
    Die vom Port empfangenen Daten kommen in einem anderen als dem GUI-Thread an. Um dieese Daten zur Anzeige zu bringen, musst Du sie invoken, das sieht dann ungefähr so aus:

    VB.NET-Quellcode

    1. Private Sub SerialPort1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
    2. ' hier die Daten auslesen
    3. Dim txt As String = SerialPort1.ReadExisting
    4. Me.Invoke(Sub()
    5. TextBox1.Text &= txt
    6. End Sub)
    7. End Sub
    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!