- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 68

Thema: GUI für nodeMCU

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Webserver auf einem nodeMCU 1.0, bei mir. Ich habe noch mehrere davon.
    Die Webseite ist als Browseranwendung konzipiert und wird vom Webbrowser geladen. Danach ausgeführt, weil die ganze Seite überwiegend aus JavaScript besteht. So wird sie auch im Browser aufgebaut. Dazu habe ich eine Fensterverwaltung in JavaScript gebaut. So wird ein Fenster (eigentlich ein DIV-Container) geöffnet und darin Sachen eingebettet, die zur Laufzeit des JavaScript zusammengesetzt werden. Das Hauptfenster ist 100% breit und 100% hoch, damit füllt es den Webbrowser aus.

    Kommuniziert wird ausschließlich mit dem Webserver. Von dort werden die Daten dann verteilt, auf einen AVR. Z.B. über serielle Schnittstelle.

    "Variablen" ist ein Organisationsobjekt, weiter nichts. Die Unterobjekte ebenfalls. Sie folgen aber einem bestimmten Aufbau. Zuerst steht dort "variable" dann die Nummer, dann ein aussagekräftiger Text.
    Am Ende muss das nicht von der einen Stelle an eine Andere. Es geht nur darum, dass ich das nachher beim Programmieren verwenden kann. Entspricht etwas einem "#define Strecke_1 0" in Arduino-C.

    Mit den Funktionen ist es ähnlich. Es gibt einen Text dafür (kann man lesen und verstehen) und darunter noch mindestens ein Objekt "code", dem ein Wert zugeordnet wird. Die Stapelverarbeitung selbst befindet sich in der Firmware für das Gerät. Dort würde dann auf den Code 20 mit "Motoren aus" reagiert, weil entsprechend eine Funktion dafür hinterlegt ist. Wenn ich aber die Funktionen schon alle aufführe, kann ich sie auch in Menüs übernehmen, aus denen ich sie dann als eine Zeile im "Programmcode" übernehmen kann (anklicken und Button [OK] anklicken). Zum Debuggen später ist es auch gut, wenn das dann irgendwo als Klartext erscheint. Ich muss mir nur gründlich überlegen, wie die Informationen strukturiert sein sollen.

    Die Stapel sind ja nichts weiter als einfache Programmabläufe. Eben wie in Stapelverarbeitungsdateien unter DOS. Ja, dort wird alles, Zeile für Zeile untereinander angeordnet. Das isz ja meistens so. In PHP, Javascript, Basic. Am ehesten würde ich das mit GW-Basic vergleichen oder BAsic auf dem C64. Dort gibt es einzelne, nummerierte Programmzeilen. Wenn es umgewandelt ist, ist es nur noch ein Zahlenblock, der durch die Firmware (z.B. auf einem AVR) abgearbeitet werden kann.
    Um diese Stapel zu "befüllen", gehe ich auf das übergeordnete Objekt und wähle den Menüpunkt "Objekt hinzufügen". Je nach Objekt erhalte ich dann eine unterschiedliche Auswahl, was ich dem Objekt unterordnen kann. Zum Beispiel irgendwelche andern Objekte oder Scriptzeilen, die auch nur Objekte sind.

  2. #2
    HaWe
    Gast
    ok, danke, das klingt dann tatsächlich ähnlich wie Scratch (oder die Lego NXT/EV3-G Blöcke), das sind ja auch Bytecode-Interpreter mit Java o.ä.
    Interessantes Konzept!

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Eine CPU verwendet ebenso Byte-Code im RAM oder ROM (Maschinensprache), um sämtliche Funktionen, die integriert sind, variabel nutzen zu können. Dieser Ansatz ist sehr gebräuchlich. Bei CNC-Maschinen, 3D-Druckern z.B. nennt es sich G-Code. Verfolgt denselben Zweck: Programmierung / Steuerung, ohne die Firmware zu ändern.

    MfG

  4. #4
    HaWe
    Gast
    nein, ich meinte nicht die Maschinensprache, sondern Bytecode, eine Art Zwischencode für virtuelle Maschinen (für Interpreter), wie z.B. von Java verwendet.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Dann weiß ich nicht, worauf Du Dich beziehst.

    So etwas wie einen Zwischencode gibt es hier nicht. Es sind genau betrachtet eher Steuercodes.

    Es gibt da noch so etwas, was man vielleicht als Zwischencode bezeichnen könnte. Damit habe ich mir die gesamte, kompliziertere Programmierung erleichtert. Ich habe dazu mal ein Auszug aus der Debugger-Ausgabe kopiert.
    Code:
    3: goto:100
    100: goto:103:ost=100
    101: xfind:roobject:id1:..zu:.id=id
    102: goto:4
    4: exec:ailib:4
    5: goto:19:containerLength>0
    19: init:ziel=i1:x-find-scope=i2:scope-frame=i3
    20: exec:ailib:0
    Hier wird dann noch mehr gemacht, als einfach nur Codes zu lesen und durch ein switch - case - Gebilde zu schicken. Zum Beispiel heraus finden, aus was Teilausdrücke bestehen (wird eine Variable oder ein String verglichen / zugewiesen, oder doch eine Zahl ...). Da werden die Parameter erst noch aufgearbeitet, bevor sie an Funktionen übergeben werden. Bei der Stapelverarbeitung die in einem AVR stattfinden soll, soll nichts weiter geschehen, außer die möglichst zügige Abarbeitung. Die gesamte Aufbereitung von Parametern, Werten usw. wird über die Benutzeroberfläche erledigt.

    Vielleicht habe ich Dich auch einfach irgendwie missverstanden .. ?

    MfG

  6. #6
    HaWe
    Gast
    naja, "Pinmodus festlegen 0: Output" wird ja nicht Buchstabe für Buchstabe gelesen, einer Syntaxanalyse unterzogen, ausgewertet, und dann übertragen, sondern von deinem Programm per komprimiertem Zwischencode gelesen und dann an die cpu übetragen (IIUC).
    Vielleicht stimmt das mit deinem Steuercode überein oder vlt noch einen Schritt tiefer (reine Bytefolgen), jedenfalls ist dein interpretierter Code weder das, was in deiner Web-IDE steht, noch das, was die cpu tatsächlich als Binärcode ausführt:
    sondern ein Zwischencode oder Bytecode, den dein Interpreter in deinen Stapeln schrittweise verarbeitet, und ähnlich macht es ja auch Scratch oder NXT-G per VM mit seinen Blöcken.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Guten Morgen!

    Sooo... nach vielem Lesen und Überlegen bin ich nun mit neuen Erkenntnissen zurück, bei diesem Thema: Bytecode.
    Ich würde sagen: ja, es entsteht ein Bytecode. Das ist völlig richtig; auch "Bytecode-Interpreter".

    Den Begriff Zwischencode würde ich hier aber ausklammern. Weil nichts mehr umgewandelt wird. Es ist ein endgültiger (Steuer)Code für den Interpreter. Am Ende wird Maschinencode von der CPU ausgeführt, aber der Code wird nicht in solche übersetzt.

    Du beschreibst es mit: "ähnlich macht es ... " schon ganz richtig. Aufsteigend in Abstraktionsebenen werden Verarbeitungsschritte immer ähnlicher. An oberster Stelle können Symbole stehen, die in irgendeiner Weise angeordnet werden. Bei Programmablaufplänen ist es auch so. Interessanter Weise ist damit Inkas Frage nach, bzw. der Hinweis auf die Möglichkeit der Erstellung von PAPs gar nicht so weit weg. Zumindest nicht in der Richtung, was den Bytecode-Interpreter angeht. Ich habe da noch mal in den Quelltext rein geschaut. Die PAP-Geschichte war mal durchaus als Drag and Drop angelegt. Diese Vorgehensweise hat aber nie den Durchbruch gefunden. Statt dessen habe ich mich für eine einfachere Platzierung der Symbole, durch Klicken, entschieden. Ich habe mich damals viel an meinem kleinen Laptop orientiert, der zwar ein Touchpad hat, aber wo ich nie eine Maus verwendet habe, da war es mit Symbolen schieben eher schwierig.

    Gruß

    - - - Aktualisiert - - -

    Ich habe mal einen PAP raus gesucht und eine Bildschirmkopie gemacht, für diese Abbildung hier, der nur klein ist und als Beispiel dient:

    Bild hier  

    Mit den PAPs habe ich damals die Umsetzung der Programmierung, mit Grafiksymbolen, geübt. Um das mal so zu sagen.
    Ich wusste nicht, ob und wie man damit würde umgehen können. Fand aber den Ansatz äußerst interessant. So dass ich mich lange Zeit damit beschäftigt habe, bis es schlussendlich auch gebrauchsfertig war. Ich habe dann praktisch erfahren, dass ein PAP einen Ablauf gut beschreiben kann, aber als Grundlage zum Programmieren (als Eingabevariante, statt einem Texteditor) nur bedingt gut geeignet ist. Ich denke, das Handling mit einem Ablaufplan funktioniert erst ab einer bestimmten Abstraktionsebene gut. Ich habe versucht, das auf die Befehlsebene einer Programmiersprache anzuwenden. Das ist ähnlich, wie mit Objekten in den Baumabbildungen. Nur das Objektbäume kompakter und übersichtlicher sind. Bei den Ablaufplänen habe ich vor allem Probleme, mit dem zur Verfügung stehenden Platz, auf dem Bildschirm. Es sind relativ wenige Informationen unterzubringen. Man muss dann sehr oft zwischen PAPs wechseln, was unübersichtlich werden kann, weil ein sehr komplexer Programmablauf als PAP in seiner Gesamtheit nicht sinnvoll abzubilden ist.

Ähnliche Themen

  1. NodeMCU 1.0 e-ink und si7021
    Von Neuton23 im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 3
    Letzter Beitrag: 29.12.2018, 10:13
  2. Ultraschallsensor am nodeMCU
    Von Moppi im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 41
    Letzter Beitrag: 15.10.2018, 17:31
  3. nodeMCU an Arduino
    Von Moppi im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 16
    Letzter Beitrag: 14.10.2018, 09:30
  4. NodeMCU als WLAN Lautsprecher
    Von littlekenny im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 5
    Letzter Beitrag: 30.03.2018, 20:09
  5. nodeMCU zu nodeMCU: keine Kommunikations-Verbindung mehr nach wenigen Minuten
    Von HaWe im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 0
    Letzter Beitrag: 02.10.2017, 14:01

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen