Arduino Serielle Schnittstelle auslesen

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Arduino Serielle Schnittstelle auslesen

    Hallo Zusammen :)
    ich habe ein kleines Programm geschrieben mit dem ich ein Arduino steuern kann, das funktioniert auch soweit.
    Nun möchte ich Daten die ich vom Arduino bekomme in meinem Visual Basic Programm auswerten.
    Hier komme ich leider nicht so richtig weiter :(
    Ich hoff ihr könnt mir hier weiter helfen.

    Der Plan ist das mein Arduino mir einen String schickt der folgendermaßen aussieht.
    int zahl, int zahl, int zahl, int zahl, int zahl

    Diese Variablen möchte ich dann in Variablen stehen haben die ich verarbeiten kann.

    Bis jetzt habe ich:

    VB.NET-Quellcode

    1. Delegate Sub SetTextCallback(ByVal [text] As String) 'Delegat
    2. Private Sub ReceivedText(ByVal [text] As String)
    3. 'Leitet empfangene Daten mittels des Delegaten von SerialPort1 in RTB1
    4. If Me.RichTextBox1.InvokeRequired Then
    5. Dim x As New SetTextCallback(AddressOf ReceivedText)
    6. Me.Invoke(x, New Object() {(text)})
    7. Else
    8. Me.RichTextBox1.Text &= [text]
    9. End If
    10. End Sub


    Außerdem würde ich noch wissen ob es eine einfach Möglichkeit gibt eine Variable zu setzen die mir sagt ob ich verbunden bin oder nicht.

    Danke euch schon mal
    :)

    Code-Tag eingefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Ich hab nicht ganz genau verstanden was du vor hast, aber das hier sollte dir helfen:
    -Split()

    Um zu überprüfen ob du verbunden bist:
    -SerialPort.IsOpen

    Gruß
    Life doesn't give you a datasheet. Sometimes the docs are wrong and you have to try it.
    @franky89 Willkommen im Forum. :thumbup:
    Du weißt, dass RS232-Daten immer in einem anderen Thread ankommen, das muss man dann nicht abfragen.
    Also machen wir das gleich so:

    VB.NET-Quellcode

    1. Private Sub SerialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) Handles SerialPort1.DataReceived
    2. Me.BeginInvoke(Sub() Me.RichTextBox1.AppendText(SerialPort1.ReadLine)
    3. End Sub
    Ggf. musst Du noch das Encoding anpassen, das kannst Du dem SerialPort als Property direkt zuweisen.
    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!
    Ich haben nun die split funktion im einzelnen ausprobiert das funktioniert auch wunderbar. :)
    Die Übertragung vom Arduino in vb klappt auch soweit.
    Der Übertragene String zahl,zahl,zahl... wird in der Textbox angezeigt.

    Zeile1: zahl, zahl, zahl
    Zeile2: zahl, zahl, zahl
    Zeile3: zahl, zahl, zahl
    usw...

    Leider habe ich keine Idee wie ich immer von der Aktuellen Zeile den String Aufspliten kann.
    Könnt ihr mir hier nochmal weiter helfen?
    Danke
    Hast du dir String.Split() mal angeschaut? Das dürfte das sein, was du brauchst.

    ->msdn.microsoft.com/de-de/libra…ring.split(v=vs.110).aspx
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    franky89 schrieb:

    von der Aktuellen Zeile den String Aufspliten
    Poste mal eine repräsentative Vielfalt solcher Strings und das, was da rauskommen soll.
    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!