Nextion Display ansprechen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich möchte mit dem Pico ein Nextion Display betreiben und habe bereits eine gute Lib gefunden.

    https://github.com/michel-cf/micr…lite/nextion.py

    Das Senden von Befehlen zum Nextion klappt auch super. Was ich aber überhaupt nicht hinbekomme ist die Rückrufmethode aufzurufen. In der Lib wird ein Fallback zur Verfügung gestellt. Ich komme hier aber nicht weiter dazu fehlen mir einfach noch die Kenntnisse. Gerne möchte ich von meinem Programm einen Button abfragen. Und eine Textdatei auslesen. Nutzen b1 und Textfeld T1 Ich wäre sehr Dankbar über ein kleines Beispiel wo ich die Vorgehensweise nachvollziehen kann. Ich bin noch ein sehr unerfahrener Pyhtonanfänger und auch nicht so gut mit der Formatierung.

  • Hallo,

    zeig uns doch bitte deinen Code. Dann können wir gemeinsam schauen wo es Probleme gibt und wie man ihn erweitern kann.

    Ich verstehe gerade auch das Problem noch nicht, du sendest Befehle an das Display und das Display reagiert wie gewünscht? Und was klappt dann genau nicht? Am besten an deinem Code erklären.

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • import machine
    import utime
    import nextion_dieter


    n = nextion_dieter.Nextion_Dieter(1)# oder UART0 (RX Nextion) auf GP0 (TX Nextion) auf GP1

    Volt = 200
    Amper = 10000
    egal='egal'

    n.send('page','Daten')# wechselt zur Seite Daten

    n.send('Daten.t0.txt="'+str(Volt)+'"')# im Textfeld als Text einfügen

    n.send('Daten.x0.val='+str(Amper)+'')# im FloatFeld als formatierte Zahl einfügen

    n.send('Daten.vis', 'b0', 1)# im Button b0 sichtbar 1 unsichtbar 2
    n.send('b0.txt="Button1"')# Button beschriften

    def nextion_callback(command, page, id, touch_event):
    print('command: %s page: %s id: %s, touch_event: %s' % (command, page, id, touch_event))
    x1= ('command: %s' % (command))
    print(x1)

    while True:

    utime.sleep(1)
    print("Läuft noch")
    n.check_data(nextion_callback)


    Habe Die Lib umbenannt aber sonst ist sie noch gleich.

    Also das Emfangen geht so.

    Ergebniss:

    bytearray(b'page Daten\xff\xff\xff')

    bytearray(b'Daten.t0.txt="200"\xff\xff\xff')

    bytearray(b'Daten.x0.val=10000\xff\xff\xff')

    bytearray(b'Daten.vis b0,1\xff\xff\xff')

    bytearray(b'b0.txt="Button1"\xff\xff\xff')

    Läuft noch

    command: 26 page: None id: None, touch_event: None

    command: 26

    command: 101 page: 1 id: 4, touch_event: 1

    command: 101

    invalid command

    Läuft noch

    am Läuft noch erkenne ich wie meine while True: ab gearbeitet wird


    bin ein wenig verdutzt hab oben den Quellcode als Quellcode eingefügt und es ist alles zusammengepascht.


    Das Problem was ich jetzt habe ist das wenn ich

    n.check_data(nextion_callback)

    ausführe es eine Ewigkeit dauert bis das Ergebniss angezeigt wird, wärend ich beständig vom Display den Butten drücke.

    Es kann bis zu eine Minute dauern bis eine Reaktion kommt.

    Zudem ist meinProgramm blockiert.

    ich habe in der Lib dem Modul "check_data" den read_buffer auf 15 runtergesetzt

    was die Anzeigegeschwindigkeit schon sehr verbessert.

    Aber ich glaube die read_buffergröße sollte wohl 100 sein.

    Warum letztendlich aber meine while True: Schleife zum stehen kommt,

    weiß ich noch nicht.

    Es wird nichts mehr abgearbeitet.

    Eigendlich sollte jede sek "es läuft noch ausgegeben werden.


    Wenn ich den Button am Nextion display drücke kommt die Meldung

    command: 1 page: 1 id: 4, touch_event: 0

    command: 1

    command: 101 page: 1 id: 4, touch_event: 1

    command: 101

    invalid command

    Läuft noch

    Dann wird meine schleife um ein Läuft noch weitergefürt und dann steht meine Schleife wieder still.

    Auch ist mir augefallen, das der erste erkannte command: meist das falsche Ergebniss liefert 101 ist richtig.


    Ich hoffe das ich mich soweit verständlich ausgedrückt habe.

    Ich würde diese Lib gerne verwenden da sie klein ist beim senden zum Display tadellos funktioniert,

    und noch relativ für mich übersichtlich ist.

    ansonsten bin ich ziemlich neu in Python unterwegs.


    Oh bin ein Stückchen weiter gekommen, immer wenn der Nextion_Befehl richtig angekommen ist

    tackert auch meine Loop im Sekundentackt.

    Aber wenn er in der Lib da ankommt:

    else:

    print('invalid command')

    return

    dann stockt alles.

    Kann man den : chars = self.readinto(self.read_buffer, 100)

    leeren, so das er mit neuen Daten anfängt?

    Wie geht das am besten unter Pyhton

    Das würde ich dann vor return setzten.

    3 Mal editiert, zuletzt von Turael (30. März 2021 um 15:56) aus folgendem Grund: 6 Beiträge von DerDieterTepe mit diesem Beitrag zusammengefügt.

  • Hallo,

    n = nextion_dieter.Nextion_Dieter(1)

    Du hast in der Datei 'nextion_dieter.py' die Klasse 'Nextion' als auch umbenannt? Über denn Sinn möchte ich hier nicht diskutieren aber grundsätzlich sind sinnvolle und sprechende Namen zu wählen. Die Klasse und das Modul an sich hat weder was mit dir, noch was mit dem Herrn Bohlen oder sonst einem Dieter zu tun. Wenn du dabei bleiben willst, Klassen schreibt man in CamelCase, also 'NextionDiester'.

    Deine drei Konstanten von denen nur 'Volt' und 'Amper' benutzt wird, schreib man GANZ_GROSS, also zum Beispiel: 'AMPERE = 10000'

    Kommentare sollen erklären wieso der Code etwas macht, was er macht steht schon dir der Codezeile.

    Ich weis nicht was du mit 'Volt' noch im weiteren vor hast, aber du könntest es am Anfang gleich als String definieren, wenn es eh so gebraucht wird.

    An sich sollte auf der Ebene, auf der du die Konstanten definierst nur Konstanten, Funktionen oder Klassen stehen. Kein ausführbarer Code.

    Der Programm Ablauf wird in einer Funktion namens 'main' definiert.

    Was erwartest du, was deine Dauerschleife macht? Du rufst 'check_data' auf und übergibst deine Funktion 'nextion_callback'. Deine Funktion erwartet aber 4 Argumente. Wie bekommt sie die?

    Wieso beschäftigst du dein Programm ununterbrochen mit so einer Schleife?

    Im Großen und Ganzen bin ich aus deinen letzten Posts nicht schlauer geworden. Ich weis nicht was das Ziel deines Programms sein soll. Vielleicht steigt hier ein anderer besser durch.

    Ich muss ehrlich sagen, ich mag deine ausgesuchte 'nextion.py' auch nicht, die finde ich unübersichtlich und schlecht dokumentiert. Aber das ist nur mein persönlicher Geschmack.

    Weiterhin noch viel Erfolg.

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Hallo Dennis, du hast mit allen was du schreibst Recht.

    Aber zur Info:

    Ich habe die Lib umbenannt um sie zu editieren, das ist mein Standart in einer Testfase, später bekommt sie einen aussagekräftigen Namen.

    Auch mein Code heißt Testcode und ich arbeite den callback in einem Unterprogramm ab da ich ihn später auch so Aufrufe.

    Diese Test.py hat nichts aber auch gar nichts mit meinen späteren Programm zu tun.

    Es ist lediglich dazu gedacht die Lib zu testen.

    Meine Schleife ruft den callback auf und gibt mir mom. den Hinweis das wenn ich den callback Aufrufe und keine Daten vom Display sende, meine Schleife steht. Also nicht weiterläuft. Und diese Situation möchte ich bearbeiten, den Fehler finden.

    Wenn mein Nextion Display Daten sendet und die Daten richtig sind läuft meine Schleife.


    ja die Lib ist schlecht bis gar nicht dokumentiert und das macht es für mich als Anfänger auch schwierig. Aber das Daten senden im Modul "send" klappt sehr gut.

    Das Modul Daten empfangen soll für meine Bedürfnisse angepasst werden. Da bin ich ja bei.


    Aber auch zur Info was überhaupt ich machen will.

    Ich baue ein Labornetzteil.

    Das Nextion Display gibt mir später sämtliche Daten aus.

    Das geht soweit ja auch super mit der Lib.

    Zur Steuerung von VOLT und AMPER und LEISTUNG.

    Gibt das Display auch Daten vor.

    Diese sollen mit dem callback der Lib verwirklicht werden.

    Wie genau ich den callback später verarbeite weiß ich noch nicht genau, vielleicht rufe ich ihn über einen Interrupt auf.

    Aber das momentane Problem ist erstmal das nach einen Aufruf zum callback meine schleife nicht weiterläuft.

    Das heißt für mich das mein Programm steht solange keine gültigen Angaben reinkommen.

    Bisher habe ich rausgefunden, das wenn ich die bautrate in der Lib erhöhe die Unterbrechung noch da ist.

    Also deutet das auf ein UART Problem hin.

    Aber ich weiß es auch noch nicht hier bin ich am testen.

    Wenn der callback richtig verarbeitet wird und die Daten in der Lib richtig erkannt werde läuft alles mit der Rückgabe.


    def nextion_callback(command, page, id, touch_event):

    print('command: %s page: %s id: %s, touch_event: %s' % (command, page, id, touch_event))


    mit dem Unterprogramm vor meiner schleife bekommt ich die Rückantwort.

    Entschuldige die momtane Formatierung, schreibe gerade vom Handy aus


    while True:

    utime.sleep(1)

    print("Läuft noch")

    n.check_data(nextion_callback)

    Ruft das unterprogamm auf und mit dem Print Befehl Stelle ich fest ob noch jede Sekunde weitergearbeitet wird .


    Sinn und Zweck ist nur den callback zu testen und hier stelle ich fest das meine schleife unterbrochen wird und die lib irgendwo hakt.


    Eigendlich sollte meine schleife im Sekundentakt weiter laufen selbst wenn keine oder falsche Befehle vom nextion display kommen


    Und genau da ist mein Probleme

    Bei richtig erkannte Eingabe läuft meine schleife weiter. Dies erfordert meist eine mehrmalige tusch Eingabe am display

    Einmal editiert, zuletzt von Turael (30. März 2021 um 15:56) aus folgendem Grund: 8 Beiträge von DerDieterTepe mit diesem Beitrag zusammengefügt.

  • Ich vermute stark, das Modul taugt nix, denn ich sehe nicht wo da beim Empfang sichergestellt ist, dass komplette Nachrichten gelesen werden. Wenn das einmal aus dem ”Takt” kommt, also das lesen innerhalb einer Nachricht abbricht, dann wird da nichts für den nächsten Aufruf gepuffert sondern beim nächsten Aufruf einfach mitten in einer Nachricht weitergelesen.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Ja Blackjack genau so sehe ich das ja auch und als Neuling stehe ich da ziemlich ratlos vor und benötige Hilfe. Es gibt auch momtan keine vernünftige Lib für den Pico, leider.

    Somit bin ich gezwungen diese zu ändern.

    Die Dateneingabe zum Display jedoch klappt jedoch super.


    if self.any():
    chars = self.readinto(self.read_buffer, 100)
    print (self.read_buffer,100)

    index = 0

    Wenn nix vom Display kommt:

    Ist any()

    =1

    print (self.read_buffer,100)

    gibt schon nix mehr aus.

    Wenn ich mehr Mal auf dem Display Dateneingabe mache dann geht es

    Hier scheint schon der erste Fehler in der Lib zu sein


    Das zurück setzen vom Buffet könnte man hier einsetzen:

    else:

    print('invalid command')

    return


    Deswegen hatte ich oben bereits gefragt wie man am besten den Buffer leert mit welchen Befehl:

    chars = self.readinto(self.read_buffer, 100)

    den Index würde ich dann auch dort auf 0 setzen.

    index = 0


    b'\xff\xff\xff' schließt immer ein Nextion Befehl ab

    Das erkennt schon ein Befehlende


    Dennis89 ich hoffe das ich dir mit meine Erklärungen mit zu sehr abgeschreckt habe

    Einmal editiert, zuletzt von Turael (30. März 2021 um 15:57) aus folgendem Grund: 5 Beiträge von DerDieterTepe mit diesem Beitrag zusammengefügt.

  • Hallo,

    abgeschreckt ist das falsche Wort. Ich bin selbst kein Programmierer, sondern habe das bisschen was ich weis, auch hier im Forum gelernt. Ich habe nach ein paar mal lesen jetzt verstanden, dass die 'check_data' Funktion nicht das macht, was du dir vorstellst. Dein Ansatz wäre 'chars' zu leeren. Wenn die Funktion aufgerufen wird, dann existiert 'chars' noch gar nicht, es wird erst in der Zeile chars = self.readinto(self.read_buffer, 100) erstellt und wenn die Funktion abgearbeitet ist, also wenn index > chars ist, dann wird 'chars' auch nicht gespeichert, sondern wieder vergessen. Wenn in einer Klasse etwas gespeichert werden soll, dann muss man es an "etwas" binden, dazu verwendet man meist 'self'. Das Gleiche gillt für den Index.

    Ich vermute ich kann dir bei deinem Problem nicht weiter helfen, da es mir momentan sehr schwer fällt aus deinen Infos und aus der ausgewählten Bibliothek das Problem vollständig zu begreifen. Ich habe leider kein Nextion-Display hier, sonst würde ich das Problem gerne nachstellen.

    Du hast aber dennoch Glück, das __blackjack__ (schleim, schleim ^^ ) sich schon eingeschaltet hat. Das ist auf jeden Fall einer der das auch noch Nachts um 3 blickt, was hier Sache ist 8o


    Gutes gelingen und Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Ja vielleicht kommt da dann eine vernünftige Lib raus die andere dann auch nutzen können.

    Denn wie gesagt unter micophyton gibst noch nix, soweit ich gesucht habe. Jedenfalls nicht was ich als Anfänger nutzen könnte

  • Print(self.read_buffer, 100) kann ich in der Lib mit eine Ausgabe prüfen.

    Was ich dann feststellen ist das (self.read_buffer, 100) nur dann ausgeführt wird, wenn gültige Zeichen kommen, ansonsten wird einfach nur angehalten und alles stoppt.

    Das ist zB. dann der Fall, wenn ich nichts am Display bewege.

    Auch wenn ich das erste Mal den callback Aufrufe starte und noch nix vom Display gekommen ist.

    Eigendlich muss hier vorher schon ein Absprung kommen der den Aufruf beendet.

    Ich habe jedoch auch festgestellt, das wenn ich die bautrate hoch setze es wiederum scheinbar klappt.

    Das Nextion Display arbeitet aber nur mit 9600.

    Print(if self.any()) scheint immer 1 zu sein.

    Hier weiß ich aber auch nicht was das aussagt

    Ich glaube das Problem wohl auch das nicht jeder ein Nextion Display nutzt.

    Aber vielleicht hab ich ja Glück und jemand kann gute Hinweise geben.

    Für mein Projekt ist dies Display ideal ich kann die vielen Ereignisse super schön darstellen und das was ich vom Display zurück haben möchte ist nicht viel nur Ereignisse wenn das Display neue Volt und Amper vorgibt.

    Vom Prinzip 2 Textfelder oder Nummfelder oder Variablen.

    Steuern könnte ich die Ereignisse mit einen Aufruf der vom Display zum Beispiel über einen gedrückten Button oder ähnliches besteht.

    Dies Ereigniss muss ich dann am Pico erkennen.

    Da das Display durch eigenen Cod gesteuern werden kann, will ich hier die Übergabe auch gar nicht so groß gestalten.

    Das hat den großen Vorteil daß ich jederzeit auch auf ein anderes System wechseln kann. zB. Adruino oder den Pico in C und nicht in Python......

  • Print(if self.any()) scheint immer 1 zu sein.

    Hier weiß ich aber auch nicht was das aussagt

    Das ist in der MicroPython Dokumentation erklärt. Siehe hier.

    Da findest du auch 'readinto' etc.

    Was ich dann feststellen ist das (self.read_buffer, 100) nur dann ausgeführt wird, wenn gültige Zeichen kommen, ansonsten wird einfach nur angehalten und

    Das wird an der 'if self.any()'-Abfrage liegen. Wenn die keine verfügbaren/ungültige Zeichen bekommt, gibt 'any' 0 zurück und dem entsprechend wird der eingerückte Block nicht ausgeführt.

    Eventuell kannst du mit der Doku den Code besser verstehen und dann auch besser nachvoll ziehen.


    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Danke Dennis das hab ich jetzt verstanden :)


    Nee die self.any()'-Abfrage gibt immer 1 aus auch wenn ich das erste Mal den callback anwende und am Display noch nichts passiert ist


    was ich wohl ausprobiert habe ist ich habe

    self.read_buffer, 100) auf 11 reduziert damit läuft es besser und fast jedesmal wenn ich den Button drücke wird es erkannt. Aber das kann keine Endlösung sein da ich dann ja nix an längeren Texten einlesen kann.


    __blackjack__ hat schon Recht

    Wenn das einmal aus dem ”Takt” kommt,.....


    Wenn ich morgen am PC bin poste ich Mal den Inhalt vom Buffer da steht auch ne Menge falsches drin aber auch was man für eine Abbruchroutine nutzen könnte

    Einmal editiert, zuletzt von hyle (31. März 2021 um 20:54) aus folgendem Grund: 4 Beiträge von DerDieterTepe mit diesem Beitrag zusammengefügt.

  • 1
    bytearray(b'\x1a\xff\xff\xffe\x01\x04\x01\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
    command: 26 page: None id: None, touch_event: None
    command: 26
    command: 101 page: 1 id: 4, touch_event: 1
    command: 101
    Läuft noch
    Läuft noch #hier läuft meine Programm dann auch weiter

    Aber wenn ich vorher am Display nichts eingegeben habe steht alles

    >>> %Run -c $EDITOR_CONTENT

    Läuft noch

    1

    Auch gibts ein Stillstand:

    bytearray(b'e\x01\x04\x01\xff\xff\xffe\x01\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')

    command: 101 page: 1 id: 4, touch_event: 1

    command: 101

    invalid command #wenn ein falscher Befehl erkannt wird

    Läuft noch

    1


    Vom Nextion wird # 65010401FFFFFF gesendet

  • Hallo DerDieterTepe,

    das ist hier kein Chat, sondern ein Forum! Du kannst Deine Beiträge bearbeiten und ergänzen statt immer neue zu posten, solange kein andererr User darauf geantwortet hat. Das wird sonst extrem unübersichtlich.

    Ich gehe mal davon aus das die meisten kein Nextion Display haben, wie soll ich Hilfe bekommen wenn ich das Problem nicht so beschreiben soll?

  • Schau mal Beitrag #7 an.

    Zitat

    Einmal editiert, zuletzt von Turael (Vor 21 Stunden) aus folgendem Grund: 5 Beiträge von DerDieterTepe mit diesem Beitrag zusammengefügt.

    Beiträge 12-16 sind auch wieder von dir. Wenn in der Zwischenzeit keiner etwas schreibt, kannst du deinen Beitrag bearbeiten und ergänzen, anstatt neue Beiträge zu verfassen.

  • Hallo Dieter,

    du sollst/darfst/musst dein Problem beschreiben. Das ist vollkommen richtig. Du hast hyle eventuell falsch verstanden. Du sollst nur nicht alle 10 Minuten einen neuen Beitrag erstellen, wenn dazwischen kein andere geantwortet hat, sondern deinen aktuellen "bearbeiten" und damit erweitern.

    Ich glaube du bekommst so wie du die Ausgaben postest keine richtige Hilfe. Das ist in meinen Augen etwas zusammenhanglos. Erstelle jetzt bitte einen Beitrag, darin befindet sich dein aktueller Code, mit den von dir eingebauten 'print'-Befehlen. Dann folgt deine geänderte Nextion_Dieter.py, auch mit den von dir eingefügten 'print'-Befehlen. Dann folgen die entsprechenden 'print'-Ausgaben mit Beschreibung der Rahmenbedingungen. Bitte ganz strukturiert, so das es jeder nachvollziehen was du gerade gemacht hast. Denk bitte daran, dass unsere Informationen nur so gut sind, wie du sie uns übermittelst.

    Die letzte Bitte: Poste deine Codes und deine Ausgaben jeweils in separaten Code-Tags. Dafür drückst du den </> - Button.

    Nehm mir den Beitrag nicht übel, es wäre nur schön wenn man dein Problem übersichtlich darstellen könnte und die Gefahr verringert, dass andere User nach den ersten zwei Beiträgen wieder auf "zurück" klicken.

    Grüße

    Dennis

    Edit:

    Beispiel:

    Hier mein Code:

    Code
    import machine
    import utime
    import nextion_dieter
    
    n = nextion_dieter.Nextion_Dieter(1)
    .
    .
    .

    Die verwendete Bibliothek ist unter folgendem Link zu finden. Ich habe sie folgendermaßen abgeändert:

    Wenn ich jetzt im Display "xyz" eingebe, dann sieht die Ausgabe so aus:

    Code
    1
    bytearray(b'\x1a....

    und so weiter.

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Nextion---------- Display Neustart----------- Als erstes die Lib-------------------


    Mein Code:

    Wenn ich auf meinen Nextion Display einen Butten drücke wird das vom Display gesendet:

    65010401FFFFFF

    Code
        def check_data(self, callback):
            if self.any():
                chars = self.readinto(self.read_buffer, 100)
                index = 0

    Wenn ich den Inhalt chars abfrage ist das das Ergebnis:

    bytearray(b'e\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xffe\x01\x04\x01\xff\xff\xff')

    An meiner Console wird das richtige Ergebnis ausgegeben:

    command: 101 page: 1 id: 4, touch_event: 1 # dies wird richtig erkannt

    (65010401FFFFFF) = Länge 7 # Dies ist, was die Nextion-Anzeige sendet---------------aber mein Code wird nicht weiter ausgeführt

    Wenn ich den (self.read_buffer, 7) setze läuft alles fehlerfrei durch.

    Bytearray (b'e \ x01 \ x04 \ x01 \ xff \ xff \ xff \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 ')

    Befehl: 101 Seite: 1 ID: 4, touch_event: 1 # ------------------- Wird jetzt richtig ausgegeben ----------------
    ------------------------------------------------------------------------Jetzt läuft mein code jedesmal fehlerfrei weiter

    Das einzige Problem ist, dass sich die Länge je nach Situation später ändern kann.-------------------------

    Gibt es einen Befehl, wie ich die an FFFFFF gesendete Länge abfragen kann? Ohne die UART-Schnittstelle zu unterbrechen.
    Ich würde dann die Länge hier einfügen (self.read_buffer, 7).

    Ich habe verschiedene Sachen ausprobiert komme aber nicht wirklich weiter.

    4 Mal editiert, zuletzt von DerDieterTepe (2. April 2021 um 00:17)

Jetzt mitmachen!

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