- SF800 Solar Speicher Tutorial         
Seite 1 von 3 123 LetzteLetzte
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 Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hallo,

    also es ist schon alles sehr theoretisch, was du da schreibst...
    Am anfang hast du ein bild veröffentlicht:

    https://www.roboternetz.de/community...8&d=1572611067

    ist es dann - wenn's denn fertig ist - sowas wie eine komplexere, umfangreichere "programmieroberfläche" wie z. b. die arduino IDE? Oder sowas wie platformio für atom?
    gruß inka

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Zitat Zitat von inka Beitrag anzeigen
    hallo,

    also es ist schon alles sehr theoretisch, was du da schreibst...
    Ja, ich weiß. ist auch nicht einfach, etwas zu beschreiben, was zurzeit als diffuser Nebel in meinem Hirn herumspukt.

    Am Anfang stand eine Idee, eine bestehende Anwendung umzufriemeln.
    Habe ich nun gemacht. Wobei ich mir das, was ich jetzt für das Projekt brauche, aus der Anwendung herauspicke, bzw. alle anderen Funktionen entferne.
    Was ich belassen will, habe ich oben aufgeführt.

    Du hast das alte Bild aus dem ersten Beitrag angeführt. Im Blog habe ich ein aktuelleres Bild gepostet.
    Da es auf dem Server vorhanden ist, kann ich es einfach hier nochmal tun:
    Bild hier  

    Hier kann man schon mehr erahnen und bekommt ein wenig einen Überblick.
    "Platformio" kenne ich nicht. Habe ich mal am Rande gelesen, mehr Kontakt dazu hatte ich nicht.

    Die Arduino-IDE ist eine Programmierumgebung für C-Quellcode, inkl. Compiler und Tools zum Hochladen auf einen µC.
    Das will ich nicht nachbauen, das leistet auch die Benutzeroberfläche bisher nicht. Bisher deshalb, weil selbst das
    aber auch möglich wäre - weit entfernt theoretisch machbar. Das ist aber nicht Sinn der Sache.

    Bei dem, was ich baue, möchte ich mir etwas Komfort schaffen. So könnte ich Quelltextfragmente (Funktionen)
    aus der Arduino-IDE, die ich dort ausprobiert habe, archivieren und mit Attributen versehen. Dazu ein Werkzeug in
    Scriptsprache, das aus allen Fragmenten einen kompletten Quelltext erzeugen kann, den ich dann einfach kopieren könnte,
    um ihn in der Arduino-IDE einzufügen und dort zu kompilieren. Das ist aber jetzt nicht Hauptaugenmerk. Zuerst möchte
    ich komfortabel auf Funktionen, z.B. für das Prototype Car II, zugreifen können. Werte aus dem Gerät sichtbar machen,
    wo man sonst zu LEDs oder Displays greifen würde. Ich möchte gerne Zugriff auf die Funktionen des Prototyps haben,
    möglichst auf jede Einzelne. Wie programmiert man beispielsweise, dass so ein Gerät geradeaus fährt? - Man schreibt Code,
    der die Encoderwerte auswertet, wo Bedingungen im Code programmiert sind, um bestimmte Reaktionen der Software auf
    äußere Einflüsse zu erhalten. Dann kompiliert man den Code, lädt ihn auf den µC und probiert alles aus. Diese Hürden kann
    ich umgehen, wenn ich über eine Oberfläche direkten Zugriff, auch programmtechnisch habe. Dazu habe ich mir schon
    eine Ablaufsteuerung eingebaut, mit der es möglich ist, Funktionen des Gerätes einzeln anzusprechen - ich nenne es
    Stapelverarbeitung. Diese Verarbeitungsstapel kann ich in den µC laden, wenn das Gerät in Betrieb ist. Wenn das Gerät
    am Anfang einfach nur stillsteht, könnte ich über die Oberfläche schauen, welche Variablen (Werte) und Funktionen,
    das Gerät anbietet (Ultraschallmessung Sensor 1 .. Sensor 2... , Motor 1 .. Motor 2 usw.). Dann kann ich über
    die Benutzeroberfläche programmieren, den Code in das Gerät laden und ausführen lassen. Sofern es irgendwelche
    Mitteilungen über Werte (oder andere Rückmeldungen) geben soll, kann ich die vom Gerät in die Benutzeroberfläche
    übertragen und dort darstellen, sowie weiter verarbeiten. Möglich wäre sicher auch, Prorammabläufe nur über
    die Oberfläche zu erstellen und dort auszuführen, so dass das Protoype Car II (jetzt als Beispiel) nur ferngesteuert wird,
    damit nicht autonom wäre (Benutzeroberfläche geschlossen: Gerät tot).
    Die Möglichkeiten, was ginge sind leider sehr vielfältig und zahlreich, so dass man kaum alles beschreiben kann.

    Weil Du schriebst: "wenn's denn fertig ist" ...
    Die Einzelteile sind im Grunde alle schon fertig, muss nur noch alles sinnvoll miteinander verbinden.
    Alles, was ich oben aufführte (7 Punkte) ist fertig, funktioniert also bereits jetzt. Also das Werkzeug ist schon fertig.
    Nun muss ich damit die passende Programmierung vornehmen, um das zu umzusetzen, was ich mir (oder andere sich)
    vorstelle(n). Und dafür habe ich noch keinen richtigen Plan, was ich alles genau brauchen werde (programmieren muss),
    weil ich keine Vorlage dafür habe. Deshalb ist vieles noch theoretisch. Aber noch ein Zeitpunkt, um das was noch folgt,
    zu beinflussen, Ideen einzubringen oder Bedenken zu äußern.

    Ich habe den Eindruck es wird nicht mehr so lange dauern, dass es "fertig" wird. Dann ist es das allerdings für dieses
    Forum "Ideen zu geplanten eigenen Projekten" auch. Später würde ich das woanders fort führen.



    MfG

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    ist sehr schwer zu lesen, wenn's so umbrochen ist, wie es jetzt ist. Wie machst du das? Auch bei deinem blog, da vergeht einem die lust das zu lesen...
    gruß inka

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Sind die Zeilen jetzt zu kurz?
    Vor einiger Zeit hatte jemand dieses Problem, der Lesbarkeit, mit nicht umgebrochenen Zeilen. Ich meine Rabenauge war es. Irgendwann ist mir das auch mal aufgefallen, dass die Zeilen teils sehr lang sind und es dann nicht so gut zu lesen ist. Deshalb breche ich die Zeilen früher um.

    Aber das mit der Lesbarkeit ist mit der Groß-/Kleinschreibung auch nicht besser, wenn die weg gelassen wird und alles überwiegend klein geschrieben wird.

    Gruß

  5. #5
    HaWe
    Gast
    was ist dann daran anders als bei C++ Libs, die ebenfalls Wrapper nutzen für solche komplexe Funktionen wie drehen oder Encoder auslesen etc?

    Außerdem ist "GUI" dann auch noch missverständlich - GUI heißt doch nur "Graphical User Interface":

    meinst du eine GUI-IDE, mit der man "graphisch programmieren" kann, indem man Widgets auf eine Form zieht (wie bei qt Creator oder Borland Delphi oder C++ Builder)
    oder
    soll deine GUI eine graphische Schnittstelle für ein fertiges Programm sein, die Messwerte anzeigt (Monitor, Dashboard) und Buttons, mit denen man zusätzlich durch Mausklick Funktionen steuern kann (Remote Control für diverse Aktoren: an, aus, vorwärts, rückwärts, Stopp, Drehen...) ?

    Was genau ist bei dir eigentlich "Graphisch"?

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    GUI ist GUI. Mehr gibt es dazu nicht zu sagen.

    was ist dann daran anders als bei C++ Libs
    Beides ist nicht miteinander zu vergleichen. Das hier soll eine hardwarenahe Programmiersprache nicht ersetzen. Man kann es aber am ehesten mit irgendeinem Basic vergleichen.
    Bei dieser Oberfläche bzw. dem darunter liegenden Programm, geht es vor allem um Abstraktion, ohne auszuschließen, dass man damit aber auch Code ausführen kann.
    Die Interface-Funktion (Interface in dem Fall meint den Teil, wo die Baumstruktur abgebildet wird) ist gesamt in einer Art programmiert, die auch verwendet wird, wenn das Interface benutzt wird.
    Über das Interface kann man eigentlich auch dessen Funktion ändern. Das Programm kann sich selbst ändern. So, wie das unter DOS möglich war, wo man mit COM-Dateien bspw. den Code der Datei überschreiben konnte.

    Die Abstraktion bekommt man auch mit JavaScript hin, C++ oder anderem. Auch mit Assembler oder Maschinencode ist das möglich. Nur gerade bei Letzterem offenbart sich dann, wo die Nachteile liegen. Auch in der Arduino-IDE ist das möglich. Es ist aber unheimlich umständlich, bei größeren Projekten u.U. unübersichtlich und nicht systemunabhängig. Dies hier funktioniert in jedem Webbrowser auf jedem Computer (ob unter Linux, Windows, Mac oder was anderem), der ECMA Script in Version 5 unterstützt (JavaScript). Als ich das grafische Interface noch nicht hatte, habe ich alles in ellenlangen Scripten, per Texteditor, verfasst, was dann irgendwann auch wieder unübersichtlich wurde. Die zugrundeliegende Struktur ist. u.U. nicht ganz einfach zu verstehen und nach längerer Zeit habe auch ich dann immer wieder mal Sachen vergessen (wie Befehle zusammen arbeiteten z.B.). Auch wenn ich eine fast 50-seitige Dokumentation darüber habe. Deswegen habe ich dann diese nächste Ebene eingeführt, die die Handhabung und das Erstellen von Code, den ich eben sonst in Scripten verfasse, vereinfacht und unanfälliger für Fehler macht. Außerdem habe ich direkten Zugang zum ausgeführten, abstrakteren Code, falls irgend etwas nicht funktioniert. Die Arbeit der Programme ist im Detail, Zeile für Zeile und Variable für Variable zu beobachten (auch wenn es dann nat. langsamer ausgeführt wird). Falls mal was nicht funktioniert, kann ich so Fehler in sehr kurzer Zeit finden. Damit steigt die Produktivität.

    Ich weiß noch nicht, ob ich die Möglichkeit für dieses Projekt noch zugänglich mache, aber implementiert ist sie: die Programmausführung kann zu jeder Zeit pausiert werden. Stell Dir vergleichsweise vor, MS-Windows hätte einen Pause-Button, den Du betätigen kannst. Man kann hier die gesamte Anwendung im Browser anhalten / einfrieren und später einfach fortsetzen. Bis jetzt sehe ich noch nicht, dass man das hier brauchen könnte.

    MfG

    PS: ich kann das auch auf einem BueRay-Disk-Player ausführen, auf der Playstation oder dem Fernsehgerät. Also ich kann den nodeMCU - Webserver auch über diese Geräte erreichen und die Benutzeroberfläche dort verwenden.

    Hier habe ich die Benutzeroberfläche, vom nodeMCU, auf dem Fernseher im Wohnzimmer, geladen:

    Bild hier  
    Geändert von Moppi (21.10.2020 um 11:56 Uhr)

  7. #7
    HaWe
    Gast
    sorry, ich verstehe immer noch nicht, was jetzt hier "graphisch" ist...
    Es hört sich eher danach an, dass es um eine schriftbasierte Interpreter-Anwendung geht, die in einem Browserfenster läuft.
    Worin bzw. wofür (für welche graphischen Funktionen) besteht bei dir das "G" für "Graphic" in "GUI"?

    Eine GUI-IDE, in der GUI-Anwendungen programmiert werden können, wäre so etwas (qt creator):
    https://github.com/dsyleixa/Raspberr...enshot_qt.jpeg

    und eine Programm-GUI, für das fertige laufende Programm, so etwas:
    https://github.com/dsyleixa/Raspberr...creenshot.jpeg

    Auch Visual Studio z.B. wäre eine GUI-IDE, oder Borland C++ Builder.


    PS, dein Bild war hier gerade noch unsichtbar:

    Oder meinst du damit, dass deine IDE eine Schrift-Programmierung per Java bietet, die aber grafische Design-Elemente (wie den Papierkorb oder die Ordnersymbole) hat?
    Wie genau aber schreibt man damit ein Programm?
    Geändert von HaWe (21.10.2020 um 13:57 Uhr) Grund: PS

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Dann ist es bei Windows genau so und Deiner Definition von GUI-IDE, die eine Schriftprogrammierung per C/C++ bieten, die aber grafische Design-Elemente (wie den Papierkorb oder die Ordnersymbole) haben.

    Grafische Benutzerschnittstelle ist grafische Benutzerschnittstelle. Selbst die Texte, die auf dem Bildschirm erscheinen, sind keine Texte, sondern in einem Grafikmodus der Hardware aus Pixeln zusammengesetzt. Deswegen kann man das auch mit Bildern mischen, Fotos oder Grafiken. In einem reinen Textmodus der Grafikhardware wäre dies nicht möglich. Wenngleich man einfach Scripte verwendet, um die Anordnung aller grafischen Elemente zu beschreiben.

    Daher kann ich Dir nicht folgen.

  9. #9
    HaWe
    Gast
    also, wenn ich dich jetzt richtig verstehe, dann kannst du auch grafische Zeiger-Instrumente und und bewegte Grafiken und Mausbuttons zur Steuerung einfügen ins Programm, so wie bei einer Website mit html- oder php oder Javascript?

    Und wie wird das ganze programmiert?

    - - - Aktualisiert - - -

    PS,
    wenn die IDE nur zum Aufhübschen grafische Elemente enthält, wie bei der Arduino-IDE oder der Arduino-Web-IDE, und ansonsten lediglich in einem Fenster (MS Windows, XWindows) angezeigt wird, man andererseits aber nur mit Text-Eintippen und nicht mit Grafiken bzw. Widgets und d+d programmieren kann, dann wäre es IMO in der Tat keine GUI-IDE oder ein GUI-Builder, sondern "nur" eine Text-IDE als Fenster-Anwendung.

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Alles, was der Webbrowser darstellen kann, kann man damit auch darstellen. Selbst Canvas-Elemente:
    Das canvas Element stellt Scripten eine bitmap-basierte Leinwand zur Verfügung, die dann es ermöglicht, einfach und schnell Grafiken und Diagramme zu zeichnen, Bilder anzuordnen, Animationen zu erstellen und vieles mehr.
    Quelle: SELFHTML

    In HTML kannst Du auch Elemente pixelgenau positionieren. Das wende ich an, um Fenster darzustellen, die innerhalb des Browser-Fensters auch verschiebbar sind. Man kann Fotos reinladen etc. pp. Buttons durch Grafiken ersetzen, so ziemlich jedes Eingabeelement in HTML mit Hintergrundgrafiken schmücken oder mit Farbverläufen versehen.

    Ohne Texteingaben wirst Du kaum etwas programmieren können, so oder so. Eingaben muss man immer irgendwo tätigen, sinnvoll ist das als Text.

    "... mit Grafiken bzw. Widgets und d+d ..."
    Hast Du mal nachgedacht, was man damit tun könnte und ob bestimmte Benutzerschnittstellen auch Sinn ergeben?

    HTML5 hat dafür ein Drag & Drop - API bekommen ... zum Beispiel...
    Bloß schau mal, wann HTML5 offiziell fertig war. Ich habe mit dem Programm Jahre vorher angefangen, weswegen es auch nicht auf diese Mechanismen ausgelegt ist. Zwar sind Icons bei mir vorgesehen gewesen, die man auch hin und her schieben kann und damit theor. auch Drag and Drop umsetzen kann, aber es war nicht notwendig. Was willst Du mit einem Widget denn machen? Wie sollte das sinnvoll eingebettet werden? Welche Funktionen willst Du darüber tätigen?



    MfG

Seite 1 von 3 123 LetzteLetzte

Ä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
  •  

Labornetzteil AliExpress