Forum: Mikrocontroller und Digitale Elektronik Nextion Display


von Dieter T. (dieter_t)


Lesenswert?

Ich möchte mit dem Pico ein Nextion Display
 betreiben und habe bereits eine gute Lib gefunden.

https://github.com/michel-cf/micropython-nextion/blob/master/nextion_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.

von Dieter Tepe (Gast)


Lesenswert?

1
import machine
2
import utime
3
import nextion_dieter
4
n = nextion.Nextion(1)
5
6
7
def nextion_callback(command, page, id, touch_event):
8
    print('command: %s page: %s id: %s, touch_event: %s' % (command, page, id, touch_event))
9
    x1= ('command: %s' % (command))
10
    print(x1)
11
12
while True:
13
    utime.sleep(1)
14
    print("Läuft noch")
15
    n.check_data(nextion_callback)

von Dieter Tepe (Gast)


Lesenswert?

Soweit läuft es.
Aber es gibt trotzdem einige Probleme.
1
while True:
2
    utime.sleep(1)
3
    print("Läuft noch")
4
    n.check_data(nextion_callback)
print("Läuft noch") nutze ich um zu sehen ob meine while Schleife noch 
im Sekundentackt abläuft.

Wenn ich den Callback aufrufe steht meine Schleife still.
Wenn ich den Button am Nextion Display etliche male betätige wird der 
Button erkannt und hin und wieder läuft meine schleife weiter aber nicht 
immer.

Irgendwo hat die Lib Probleme vielleicht auch die UART.

von Dieter Tepe (Gast)


Lesenswert?

[c]
    def check_data(self, callback):
        if self.any():
            print(self.any())
            chars = self.readinto(self.read_buffer, 11)#           war 
auf 100
            print(self.read_buffer)
            index = 0
            while index < chars:
[\c]

zum Überprüfen hab ich die Prints eingefügt.
print(self.any())   ergibt immer eins

print(self.read_buffer)

gibt eine Zeichenkette aus wenn
jedoch wenn ich das erste Mal den callback ausführe wird nix ausgegeben,
scheinbar steht hier dann das Programm.
Wenn ich die Baut in der Lib erhöhe läuft es auch beim ersten callback.

jedoch verarbeitet das Display nur 9600 baut zudem wir beim erhöhen nix 
mehr erkannt.

Ich habe bereits überall im Netz nach einer Lib für Miropyhton gesucht 
habe aber nicht gefunden womit ein Anfänger was machen könnte.

Das Daten zum Display schicken klappt jedoch mit dieser Lib 
hervorragend.

Vieleicht ist ja jemand da der auch Erfahrungen mit dem Display hat und 
weiterhelfen kann.

von Dieter Tepe (Gast)


Lesenswert?

3Texte höher
import nextion_dieter

heist natürlich nur nextion

von Dieter Tepe (Gast)


Lesenswert?

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 zuverlässig weiterläuft.
Das heißt für mich das mein Programm steht solange keine gültigen 
Angaben reinkommen.

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.

Dies Ereigniss muss ich dann am Pico erkennen.

Da das Display durch eigenen Code 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......

von Alopecosa (Gast)


Lesenswert?

Dieter Tepe schrieb:
> Zur Steuerung von VOLT und AMPER und LEISTUNG.

Und ich dachte immer das hiessen AMPERE.

Wobei es hier ja auch Zeitgenossen geben soll die versuchen die Amper 
hoch zu skillen...

Schöner Monolog übrigens..

von Dieter T. (dieter_t)


Lesenswert?

Ja hiessen AMPERE ist wohl richtig

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.