serielle Warteschlange zwischen Arduino und Raspberry löschen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ich versuche mich in der Kommunikation zwischen RaspberryPi und Arduino. Ich habe es dank einiger Beiträge im Forum auch geschafft Informationen auszutauschen. Nun möchte ich das ganze in einem sinnvollen Programm benutzen.
    Folgenden Code sende ich an meinen Arduino

    Code
    echo 'Hallo 30' >/dev/ttyACM0
    minicom -b 9600 -o -D /dev/ttyACM0


    und bekomme auch eine entsprechende Antwort (jede Sekunde ein Hallo zurück für 30 Sekunden) über minicom angezeigt.

    Mein Problem ist nun, dass ich die gewollte 30sekündige Antwort vom Arduino unterbrechen möchte wenn ich ein neuen Befehl sende.

    Also wenn ich folgenden Code sende

    Code
    echo 'Hallo 10' >/dev/ttyACM0


    sollen alle Daten in der seriellen Warteschlange gelöscht werden damit ich als Antwort nur noch 10 Hallos bekomme.

    Wenn ich nämlich ausversehen 3 mal hintereinander den selben Befehl versende, dann bekomme ich z.B. 150 Antworten statt der angeforderten 50.

    In einem Beitrag habe ich einen Anhaltspunkt gefunden wie es in Python realisiert werden könnte

    Code
    # Flush input buffer, if there is still some unprocessed data left
    ser.flush() # Try to send old message
    ser.flushInput() # Delete what is still inside the buffer


    Ich würde es aber gerne als Ausdruck für das Terminal haben, da ich es über exec_shell in einem php-Programm nutzen möchte.

    Ich hoffe jemand kann mir helfen. Vielen dank schonmal fürs lesen.

  • serielle Warteschlange zwischen Arduino und Raspberry löschen? Schau mal ob du hier fündig wirst!

  • Hallo dbv danke für die schnelle Antwort mein Arduinocode sieht folgendermaßen aus:

    Vielleicht noch zur Erklärung. Man gibt eine Zahl ein und nutzt ein "T" als Trennzeichen. Eine angeschlossene LED blinkt nun so oft wie die eingegebene Zahl (1-64).

  • :D nicht besonders viel :D:D
    Ich wollte nur verdeutlichen worum es geht. Eine Nachricht vom RPi ruft eine Vielzahl von Antworten ("LED an/LED aus") seitens Arduino hervor. Die Anzahl der Antworten richtet sich nach der eingegebenen Zahl.
    Die Anzahl der Antworten soll sich aber nicht addieren.

    Also wenn ich "40T" eingebe dann blinkt die LED 40 mal und sendet 40x "Led an" und "Led aus". Wenn ich das 4 mal hintereinander mache, dann blinkt die LED 160mal.
    Sie soll aber nach der letzten Eingabe von "40T" maximal 40 mal blinken.

    Das Problem ist auch, dass wenn vorher z.B. eine falsche Eingabe ohne Trennzeichen "T" kam "ahsdka", dann leuchtet nichts. Daher würde ich gerne alle vorher gesendeten Werte bzw. die Warteschleife löschen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!