{"id":226,"date":"2019-04-14T20:32:13","date_gmt":"2019-04-14T18:32:13","guid":{"rendered":"http:\/\/technical-publishing.de\/?page_id=226"},"modified":"2025-06-13T21:07:39","modified_gmt":"2025-06-13T19:07:39","slug":"kommandos-zum-nextion-senden","status":"publish","type":"page","link":"https:\/\/technical-publishing.de\/?page_id=226","title":{"rendered":"Kommandos zum Nextion senden"},"content":{"rendered":"<p>Wir wollen&nbsp; uns in diesem Tutorial anschauen, wie die Kommunikation tats\u00e4chlich abl\u00e4uft. Um das Ganze m\u00f6glichst deutlich zu machen, werde ich zun\u00e4chst ein Terminalprogramm verwenden und das Nextion-Display \u00fcber einen USB-UART-Adapter ansprechen.<\/p>\n<h3>Beispiel: Host ver\u00e4ndert Balkenanzeige<\/h3>\n<p>Nehmen wir an, Ihr Hostcontroller ermittelt \u00fcber einen Sensor eine Temperatur und soll sie dann auf einer Pegelanzeige im Nextion-Display darstellen. Im Nextion-Editor haben Sie dazu ein Objekt vom Typ &#8222;Progress bar&#8220; auf der Anzeige platziert, die dann wie folgt aussieht:<\/p>\n<p>&nbsp;<\/p>\n<div class=\"imgDiv\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/www.boecker-systemelektronik.de\/WebRoot\/Store13\/Shops\/63381271\/MediaGallery\/Tutorials_V2\/Nextion_Tutorials\/images\/progress_bar.png\" alt=\"\" width=\"408\" height=\"248\"><\/div>\n<div>&nbsp;<\/div>\n<div>\n<p>Der Nextion-Editor vergibt standardm\u00e4\u00dfig als Objektnamen f\u00fcr den ersten Progress Bar den Wert &#8222;j0&#8220;. Sie k\u00f6nnen ihn aber im Editor beliebig \u00e4ndern, damit Sie sp\u00e4ter sofort wissen, was auch gemeint ist. Wir \u00e4ndern den Wert auf &#8222;temp&#8220;. Der Name ist nicht unwichtig, denn die sp\u00e4teren Kommandos beziehen sich auf diese Angabe.<\/p>\n<p>Wenn wir diese Minianwendung auf die Nextion-Anzeige \u00fcbertragen, erscheint das gleiche Bild wie im Editor. Der Balken ist zur H\u00e4lfte gr\u00fcn ausgef\u00fcllt. Das kommt daher, weil gr\u00fcn die F\u00fcllfarbe (pco) und grau der Hintergrund (bco) ist, als F\u00fcllmodus &#8222;solid color&#8220; gew\u00e4hlt wurde und der angezeigte Wert (val) standardm\u00e4\u00dfig auf 50 steht.<\/p>\n<div class=\"hinweis\">Die Bezeichnungen in den Klammern entsprechen den Feldnamen im Nextion-Editor.<\/div>\n<p>Um die Balkenanzeige zu ver\u00e4ndern, m\u00fcssen wir f\u00fcr &#8222;val&#8220; einen anderen Wert eintragen. \u00dcber die Punktnotation beziehen wir uns auf die Eigenschaft eines Objekts: objektname.eigenschaft. W\u00fcrden wir den Wert auf 20 \u00e4ndern, w\u00e4re das korrekte Kommando: <code>temp.val=20<\/code><\/p>\n<p>Falls unser Upload problemlos funktioniert hat k\u00f6nnen wir davon ausgehen, dass die serielle Schnittstelle auch korrekt angeschlossen ist. Um zu pr\u00fcfen, ob die Syntax unseres Befehls richtig ist, k\u00f6nnen Sie im Nextion-Editor in den Debug-Modus wechseln und bei &#8222;send command to:&#8220; zun\u00e4chst den Simulator w\u00e4hlen:<\/p>\n<p>&nbsp;<\/p>\n<div class=\"imgDiv\"><img decoding=\"async\" src=\"https:\/\/www.boecker-systemelektronik.de\/WebRoot\/Store13\/Shops\/63381271\/MediaGallery\/Tutorials_V2\/Nextion_Tutorials\/images\/simulator_1.png\"><\/div>\n<p>Reagiert der Simulator auf Ihre Eingaben, ist der Name und die Kommandosyntax korrekt und Sie k\u00f6nnen nun pr\u00fcfen, ob auch das Display in der gleichen Art und Weise reagliert. Dazu w\u00e4hlen Sie bei &#8222;send command to:&#8220; jetzt den Eintrag: &#8222;Nextion Device&#8220;, stellen den korrekten Port ein und dr\u00fccken auf &#8222;Connect&#8220;:<\/p>\n<p>&nbsp;<\/p>\n<div class=\"imgDiv\"><img decoding=\"async\" src=\"https:\/\/www.boecker-systemelektronik.de\/WebRoot\/Store13\/Shops\/63381271\/MediaGallery\/Tutorials_V2\/Nextion_Tutorials\/images\/simulator_2.png\"><\/div>\n<p>&nbsp;Senden Sie jetzt das Kommando noch einmal und auch die reale Anzeige sollte sich ver\u00e4ndern.<\/p>\n<p>Im Grunde k\u00f6nnten wir die weiteren Befehle anhand des Nextion Editors ausprobieren. Doch wir wollen sehen, wie die Kommunikation tats\u00e4chlich abl\u00e4uft und der Editor verschweigt uns einen ganz wichtigen Part davon.<\/p>\n<h3>Der Aufbau eines Nextion-Kommandos<\/h3>\n<p>Ein Nextion-Befehl besteht immer aus einer Klartext-Anweisung (z. B. temp.val=20) und der Stopp-Sequenz &#8222;0xff 0xff 0xff&#8220; (dezimal: 255 255 255). Diese Sequenz ist notwendig, weil die Klartext-Anweisung unterschiedlich lang sein kann und der Nextion aber auch der Host-Controller im umgekehrten Fall wissen m\u00fcssen, wann der Befehl oder die Daten zu Ende sind.<\/p>\n<p>Woher wei\u00df der Nextion aber, dass er die 255 nicht als Zeichen interpretieren muss? Ganz einfach, weil die 255 nicht mehr im Definitionsbereich des einfachen Zeichensatzes liegt. Die 255 w\u00fcrde zwar im erweiterten Zeichensatz dem &#8222;\u00ff&#8220; entsprechen, aber solche Sonderzeichen kennt der Nextion nicht.<\/p>\n<p>Ein einfaches Terminalprogramm erlaubt uns aber nicht die Eingabe von bin\u00e4ren Daten (ausgenommen einiger Steuerzeichen). Zwar kann man in einigen Programmen mittels ALT+255 bzw. ALT+0255 das \u00ff-Zeichen darstellen, aber nicht immer klappt dann auch die \u00dcbertragung. Aus diesem Grund nutze ich das kostenlose Programm &#8222;HTerm&#8220; von Tobias Hammer. Es ist zwar offensichtlich in der Beta-Version 0.81 von 2008 stehen geblieben, aber es ist ausgesprochen m\u00e4chtig und Sie k\u00f6nnen wir sehen, was auf Ihrer seriellen Schnittstelle passiert. Sie k\u00f6nnen das Programm <a href=\"http:\/\/www.der-hammer.info\/terminal\/\">hier<\/a> herunterladen, es ist nach dem Entpacken sofort ohne Installation einsatzf\u00e4hig.<\/p>\n<p>Nachdem Sie ganz oben die korrekten Parameter f\u00fcr die Schnittstelle eingestellt und auf &#8222;Connect&#8220; geklickt haben, besteht die Verbindung zwischen PC und Nextion-Display.<\/p>\n<p>&nbsp;<\/p>\n<div class=\"imgDiv\"><img decoding=\"async\" src=\"https:\/\/www.boecker-systemelektronik.de\/WebRoot\/Store13\/Shops\/63381271\/MediaGallery\/Tutorials_V2\/Nextion_Tutorials\/images\/hterm_1.png\"><\/div>\n<p>F\u00fcr uns ist zun\u00e4chst einmal das Eingabefenster ganz unten &#8222;Input Control&#8220; wichtig. Dort k\u00f6nnen wir per Haken ausw\u00e4hlen, in welchem Format die eingegebenen Daten im Fenster &#8222;Transmitted Data&#8220; angezeigt werden. Sinnvoll f\u00fcr uns ist hier &#8222;Ascii&#8220; und &#8222;Hex&#8220;.<\/p>\n<p>Direkt darunter befindet sich das Eingabefeld und davor l\u00e4sst sich f\u00fcr jedes Zeichen das gew\u00fcnschte Format (hinter Type) w\u00e4hlen. Wir beginnen mit &#8222;ASC&#8220; f\u00fcr die Texteingabe, geben dann unseren Befehl &#8222;temp.val=80&#8220; ein, wechseln &#8211; ohne ein Leerzeichen einzugeben! &#8211; zu &#8222;HEX&#8220; und geben dann &#8222;FFFFFF&#8220; ein. Die Abst\u00e4nde erzeugt das Programm von allein, Sie brauchen also keine Leerzeichen einzugeben.<\/p>\n<p>Nach der korrekten Eingabe sollte das Programm so aussehen:<\/p>\n<p>&nbsp;<\/p>\n<div class=\"imgDiv\"><img decoding=\"async\" src=\"https:\/\/www.boecker-systemelektronik.de\/WebRoot\/Store13\/Shops\/63381271\/MediaGallery\/Tutorials_V2\/Nextion_Tutorials\/images\/hterm_2.png\"><\/div>\n<p>Dr\u00fccken Sie dann die Enter-Taste und das Kommando wird an das Nextion-Display gesendet.<\/p>\n<p>Im unteren Fenster (Transmitted Data) k\u00f6nnen Sie jetzt sehen, wie die Daten tats\u00e4chlich \u00fcbertragen wurden. Jedem ASCII-Zeichen ist der entsprechende Code zugeordnet:<\/p>\n<p>&nbsp;<\/p>\n<div class=\"imgDiv\"><img decoding=\"async\" src=\"https:\/\/www.boecker-systemelektronik.de\/WebRoot\/Store13\/Shops\/63381271\/MediaGallery\/Tutorials_V2\/Nextion_Tutorials\/images\/hterm_3.png\"><\/div>\n<p>Falls Sie alle R\u00fcckmeldungen aktiviert haben (wie dazu kommen wir noch) erhalten Sie nach Eingabe Ihres Kommandos im Fenster &#8222;Received Data&#8220; folgende Anzeige:<\/p>\n<p>&nbsp;<\/p>\n<div class=\"imgDiv\"><img decoding=\"async\" src=\"https:\/\/www.boecker-systemelektronik.de\/WebRoot\/Store13\/Shops\/63381271\/MediaGallery\/Tutorials_V2\/Nextion_Tutorials\/images\/hterm_4.png\"><\/div>\n<p>Mit dieser Konfiguration k\u00f6nnen wir jetzt in die Tiefen der Nextion-Programmierung einsteigen. Falls Sie zum Ausprobieren kein Terminalprogramm nutzen wollen, sondern die Befehle direkt z. B. vom Arduino senden m\u00f6chten, gilt folgendes:<\/p>\n<p>Die Klartextbefehle \u00fcbertragen Sie mit der print-Methode von Serial, z. B.:<\/p>\n<p><code>Serial.print(\"temp.val=20\");<\/code>Im direkten Anschluss f\u00fcgen Sie dann die 3 Befehle zum Senden der bin\u00e4ren Daten an:<\/p>\n<p><code>Serial.write(0xff);<br \/>\nSerial.write(0xff);<br \/>\nSerial.write(0xff);<\/code><br \/>\n&nbsp;<\/p>\n<div class=\"hinweis\">\n<p>Es ist immer wieder im Netz zu lesen, das die Nextion-Displays nicht mit dem einen oder anderen Embeddedboard oder Mikrocontroller zusammen arbeiten. Fakt ist: Wenn Ihr Controller eine serielle Schnittstelle hat, k\u00f6nnen Sie auch an diesem System ein Nextion-Display betreiben.&nbsp;<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Wir wollen&nbsp; uns in diesem Tutorial anschauen, wie die Kommunikation tats\u00e4chlich abl\u00e4uft. Um das Ganze m\u00f6glichst deutlich zu machen, werde ich zun\u00e4chst ein Terminalprogramm verwenden und das Nextion-Display \u00fcber einen USB-UART-Adapter ansprechen. Beispiel: Host ver\u00e4ndert Balkenanzeige Nehmen wir an, Ihr Hostcontroller ermittelt \u00fcber einen Sensor eine Temperatur und soll sie dann auf einer Pegelanzeige im&hellip;&nbsp;<a href=\"https:\/\/technical-publishing.de\/?page_id=226\" rel=\"bookmark\">Weiterlesen &raquo;<span class=\"screen-reader-text\">Kommandos zum Nextion senden<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":113,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":70,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-226","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/technical-publishing.de\/index.php?rest_route=\/wp\/v2\/pages\/226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/technical-publishing.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/technical-publishing.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/technical-publishing.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/technical-publishing.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=226"}],"version-history":[{"count":2,"href":"https:\/\/technical-publishing.de\/index.php?rest_route=\/wp\/v2\/pages\/226\/revisions"}],"predecessor-version":[{"id":228,"href":"https:\/\/technical-publishing.de\/index.php?rest_route=\/wp\/v2\/pages\/226\/revisions\/228"}],"up":[{"embeddable":true,"href":"https:\/\/technical-publishing.de\/index.php?rest_route=\/wp\/v2\/pages\/113"}],"wp:attachment":[{"href":"https:\/\/technical-publishing.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}