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?
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?
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.
Ist nur eine Nebenangelegenheit, also passt das mit der Quellenangabe. Danke für die ausführliche Antwort.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.