Forum: Mikrocontroller und Digitale Elektronik Menüprogrammierung Quellen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Oliver S. (streetfish)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich schreibe gerade meine Bachelorarbeit und musste in diesem 
Zusammenhang ein Menü auf meinem Mikrocontroller implementieren. In 
diesem Beitrag:
Beitrag "Menü Programmierung" stellt (kbuchegg) 
https://www.mikrocontroller.net/user/show/kbuchegg
ein praktisches Menüsystem vor, an das sich meinen Code angelehnt habe. 
Kennt jemand zu diesem Menüsystem einen Artikel den ich zitieren kann?

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
Als Quelle geht vermutlich nur der Thread. Es ist ja eher eine 
Skizzierung allgemeiner Erfahrung. Kein System was jetzt so verwendet 
wird. oder im Gegenteil, ein System wie es viele vorher und nachher 
ähnlich entwickelt haben.

Den Autor hast Du schon angeschrieben?

: Bearbeitet durch User
von W.S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Oliver S. schrieb:
> Ich schreibe gerade meine Bachelorarbeit und musste in diesem
> Zusammenhang ein Menü auf meinem Mikrocontroller implementieren.

Und?

Ist das benötigte Menü ganz deutlich eine Nebenangelegenheit oder gehört 
es mit zum Kernthema deiner Arbeit?

Im ersteren Falle reicht wohl als Quellangabe der betreffende Thread, im 
letzteren Falle solltest du eher die Prinzipien erläutern und daraus ein 
für deinen Fall passendes Menü entwickeln. Das kann sich an Bucheggers 
Ideenskizze anlehnen, muß es aber nicht. Aber du sollst sowas nicht 
einfach abkupfern (das ist keine wissenschaftliche Leistung!), sondern 
selbst die Prinzipien ausgearbeitet, verstanden und erläutert haben.

Bedenke mal, daß die vorgelegte Schrift zu einer wissenschaftliche 
Arbeit mal ganz grob gesagt etwas sein soll, was dem Leser die 
Prinzipien erklärt, die Arbeit erklärt, deren Ergebnisse nachvollziehbar 
beschreibt und die daraus sich ergebenden Erkenntnisse darstellt.

In deinem Falle hängt das ganze Konstrukt davon ab, was du für ein 
Interface vorsiehst: grafisch oder rein textuell, ein- mehr- vielzeilig 
oder grafisch-koordinatenorientiert, monochrom oder bunt, Tasten oder 
Drehgeber oder Zeigegeräte und so weiter. Daraus ergibt sich dann auch 
die innere Darstellung, also ob als lineare Liste von Datensätzen oder 
als verknüpfte Objekte (oder Quasi-Objekte, wenn in C).

Ich hatte vor über 20 Jahren so etwa folgende Struktur für ein rein 
textuelles zweizeiliges LCD benutzt:
1
struct MenuRec
2
  { char* MenueText;
3
    char  Flags;
4
    void (*onRauf)(void);   /* was bei RAUF auszufuehren ist */
5
    void (*onEnter)(void);  /* was bei ENTER auszufuehren ist */
6
    void (*onRunter)(void); /* was bei RUNTER auszufuehren ist */
7
    int   beiEnter;         /* naechste Menueposition bei ENTER */
8
    void* VarPtr;           /* Zeiger auf zu bearbeitende Variable */
9
  };
10
11
/* Bits fuer das Flag-Byte in der Menueliste */
12
#define  Erster     1
13
#define  Letzter    2
14
... hier evtl. weitere Flags
15
16
/* Standardfunktionen für das Menü */
17
void Darstellen (int Nummer);
18
void nix        (void);
19
void Mehr       (void);
20
void Weniger    (void);
21
22
const struct MenuRec Menue [soviel wie nötig] =
23
{  //... hier das eigentliche Menü im Flash
24
  {    // Menüpunkt 0
25
26
  },
27
  {    // Menüpunkt 1
28
29
  }, ...usw.
30
};
Sowas kannst du auch als Anregung nehmen, meine Prinzipien waren eher 
so, daß ich nach Zusammenfassung getrachtet habe, also bei Menüpunkten, 
wo man irgendwelche Werte verändern kann, überall die gleichen 
Funktionen Mehr() und Weniger() benutzen zu können, wobei diese auf die 
Variable arbeiten, die durch Menue[aktuellerMenuepunkt].VarPtr angezeigt 
sind. Das ganze Menü ist dabei ein einziges Array und der Anfang und das 
Ende eines Untermenüs wird durch die Flagwerte Erster und Letzter 
angezeigt. Und wenn du willst, kannst du den Eintrag "MenueText" durch 
einen Struct aus Textzeigern ersetzen, die dein Menü in verschiedenen 
Sprachen anzeigen. Obendrein wäre der Einsatz eines kleinen Text-Parsers 
sinnvoll, um in den Menütexten den Inhalt der jeweiligen Variablen 
anzuzeigen.
Sowas wie "Heute ist der $T.$M.$J und es ist $W" wird dann
"Heute ist der 12.1.2021 und es ist Dienstag"

W.S.



W.S.

von Jetzt weg mit dem Troll (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Der Standardansatz ist eine Zustandsmaschine.

von Oliver S. (streetfish)


Bewertung
0 lesenswert
nicht lesenswert
ja, der autor ist leider inaktiv, oder meine mail kommt nicht durch.

von Oliver S. (streetfish)


Bewertung
0 lesenswert
nicht lesenswert
Ist nur eine Nebenangelegenheit, also passt das mit der Quellenangabe. 
Danke für die ausführliche Antwort.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.