Hallo, ich bin seit einiger Zeit mit einem Kollegen dabei einen Funktionsgeneratorbausatz zu entwickeln mit eigener freier Firmware. Da wir ein kleines Menü in unserem Display haben wollten habe ich ein paar Funktionen geschrieben, die es ermöglichen sehr strukturiert Menüseiten anzulegen und bestimmten Koordinaten funktionen zu geben, sodass man später einfach nur noch einen Tastendruck abfangen muss um die richtigen Funktionen auszuführen. Da das ganze gut Funktioniert und das Hinzufügen von Menüseiten ein Kinderspiel geworden ist habe ich das ganze mal als Archiv zusammengepackt, ein kleines Beispiel gemacht, dass ich jedoch nocht nicht testen konnte aber es zeigt glaube ich ganz gut, was man mit dem Code machen kann. Wer nicht zu viel erwartet ist sicher Glücklich damit ;) Das Archiv: https://pleed.dynalias.net/liblcdmenu-0.1.tar.gz Mein svn https://pleed.dynalias.net/websvn
die links gehen noch immer nicht. bin sehr interessiert daran ;) grüße, der tobi
Hallo tobi & erich, probiert mal: https://chaos-disciple.org/websvn/ bzw. https://chaos-disciple.org/liblcdmenu-0.1.tar.gz sollte zumindest laut Google funktionieren... Grüsse, Schimmi
Tut mir leid mit dem Link. Das Lag an einem falschen Redirect bzw. daran, dass sich die Domain geändert hat. Viel spaß noch damit!
hallo an alle, ich bin gerade dabei c zu lernen, und habe einige fragen die lib betreffend. ich blicke bei manchen sachen garnicht durch, z.b.:
1 | page->p_acts[page->cur_action]((void*)(page)); |
2 | ...
|
3 | page_button(Page* page) |
1.was bedeutet "->" 2 wofür steht "*", das habe ich in anderen quellcodes auch gesehen 3. und die "[]" ich habe das avr tut. durchgelesen, aber das gibt mir nich die antworten auf die hier gestellten fragen, oder ich raffe etwas nicht. mfg kleber
p.s, das hier bereitgestellte proggie geht bei mir nicht, beim compilieren, kommt "main.c:96: warning: passing argument 2 of 'page_init_screen' from incompatible pointer type"(die zeilennummer dürfte von dem original abweichen da ich zeilen zugefügt habe). ach ja, und die wichtigste frage: Wocher weiss das program welche taste gedrückt wird? mfg kleber
ich würd mal C lernen... das sind ja wirklich Basics (Pointer wär da so ein Stichwort...)
Kleber wrote: > hallo an alle, ich bin gerade dabei c zu lernen, und habe einige fragen > die lib betreffend. Deine Fragen sind keine Fragen bezüglich der Lib. Das sind Fragen über C. Um C zu lernen ist es praktisch unerlässlich ein Lehrbuch durchzuarbeiten. > ich habe das avr tut. durchgelesen, aber das gibt mir nich die antworten > auf die hier gestellten fragen, oder ich raffe etwas nicht. Kein Wunder. Das AVR Tut beschäftigt sich hauptsächlich mit den Besonderheiten, wenn man C mit einem AVR einsetzt. Es setzt ein gewisses Grundvertändnis von C voraus. PS: Das ist jetzt keine Gehässigkeit, dir nicht zu erklären was es mit den -> und [] auf sich hat. Das würde einfach zuweit führen und ich hab ehrlich gesagt keine Lust dir in 30 Zeilen eine Zusammenfassung über Themen zu geben, die in jedem halbwegs anständigem Lehrbuch 3 Kapitel füllen.
hmmmmm, veständlich.... Aber es würde mir sehr helfen wenn jemand (so wie bertie) tipps gibt um was es sich dort dreht, um schneller die benötigten infos zu finden. hier ging es nicht darum mir das komplete c zu eklären. @Karl heinz: eine der fragen bezieht sich doch auf die lib (Wocher weiss das program welche taste gedrückt wird/wurde?), und wenn du auch jetzt der meinung bist, dass die frage nix mit der lib zutun hat, dann müssten (fast) alle threads gleich mit "lerne c" beendet werden. mfg
Die Themen die du suchst lauten Pointer, Strukturen und cast. Viel Erfolg. Das mit den Pointern ist schon etwas schwer verdaulich für Newbies. Ich empfehle : http://www.galileocomputing.de/openbook/c_von_a_bis_z/
MicroMann wrote: > Die Themen die du suchst lauten Pointer, Strukturen und cast. > Viel Erfolg. Wobei es sich in diesem Fall um die 'hardcore' Version von Pointern handelt: Funktionspointer. http://www.mikrocontroller.net/articles/FAQ#Funktionszeiger
Kleber wrote: > @Karl heinz: eine der fragen bezieht sich doch auf die lib (Wocher weiss > das program welche taste gedrückt wird/wurde?), Ich hab mir die Lib nicht downgeloadet, drum hab ich auch nichts dazu gesagt. Welche Möglichkeiten gibt es denn prinzipiell: * Die Lib fragt selber die entsprechenden Ports/Pins ab In dem Fall wird sich wohl irgendwo eine Definition der benutzen Portpins finden, die man anpassen muss * Die Lib geht davon aus, dass der Anwendungsprogrammierer eine Funktion zur Verfügung stellt, die sie aufrufen kann und die die entsprechende Taste liefert. In dem Fall wird sich an den relevanten Codestellen ein Funktionsaufruf finden lassen, für den es innerhalb der Lib keine Funktion gibt. Allerdings wird hächstwahrscheinlich der Name dieser Funktion so gewählt sein, dass das auch ein Blinder auf 20 Schritte Entfernung erkennen kann. * Die Lib kümmmert sich überhaupt nicht um die Tasten, sondern funktiniert nach dem Muster. Anwenderprogramm wertet Tasten auf und ruft mit der Taste immer wieder eine Funktion aus der Lib auf. Diese Funktion bearbeitet den Aufruf und kehrt dann sofort zurück * Irgendein anderer Mechanismus, der sich durch Studium des Source Codes ergibt
ooooooooja, ich habe mir gerade das buch angeschaut (speziel pointer kapitel) und, mein lieber schwager...... jetzt bin ich für eine weile beschäftigt. Benutzt eigentlich jemad die lib hier? ich würde gerne wiessen ob bei den anderen alles reibungslos angelaufen ist den, bei mir will es nicht, makefile auf cpu und osc. angepasst, das program lässt sich compilieren, aber da kommen 2 warnungen: "main.c:96: warning: passing argument 2 of 'page_init_screen' from incompatible pointer type" und "main.c:73: warning: 'digit' is used uninitialized in this function". Lcd wird init. (schwarzer balken verschwindet) aber auf dem display ist nur ein uterstrich zu sehen. ist es problematisch, dass ich 8mhz statt die vorgegebenen 16mhz genohmen ghabe. und....ich weiss immer noch nicht wie das mit den tasten funzt. einzig in der main steht etwas mit port und pin....
1 | int main(void) |
2 | //{{{
|
3 | {
|
4 | |
5 | |
6 | DDRA=0x00; |
7 | uint8_t input = PINA; |
8 | |
9 | // At first we create our defined example page (look into create_pages())
|
10 | create_pages(); |
11 | |
12 | // writes PAGE_EXAMPLE on lcd display
|
13 | page_display(PAGE_EXAMPLE); |
14 | |
15 | while(1){ |
16 | if(input != PINA ) |
17 | page_button(&menu_pages[cur_page]); |
18 | }
|
19 | |
20 | return 0; |
21 | }
|
die frage ist, wo werden die tasten ausgewertet? nirgendwo im code wird etwsa mit "input" oder "PINA" gemacht, auser in main aber, das was da steht reicht nnicht um die tasten auszuwerten, oder sehe ich das falsh. mfg. kleber
Kleber wrote: Jetzt hab ich mir die Lib doch mal geholt. > Benutzt eigentlich jemad die lib hier? Ich denke du erwartest zuviel von der Lib. Das ganze ist eigentlich mehr eine Sammlung von Funktionen die einem helfen bzw. zeigen sollen wie eine Datenstruktur zum Aufbau von Menüs aussehen kann. Wenn du da ein fertiges Menüsystem suchst, dann ist das nichts für dich. > aber da kommen 2 warnungen: "main.c:96: warning: passing argument 2 of > 'page_init_screen' from incompatible pointer type" und "main.c:73: > warning: 'digit' is used uninitialized in this function". Beide Warnungen sind kritisch und müssten korrigiert werden. > vorgegebenen 16mhz genohmen ghabe. und....ich weiss immer noch nicht wie > das mit den tasten funzt. Ja. da kümmert sich die Lib nicht drum. Tastenauswertung ist dein Bier. Im Grunde steckt dir Tastenauswertung in main() drinnen und soll nur zeigen mit welchen Funktionen man dieses Menüsystem ins Rollen bringen kann. > einzig in der main steht etwas mit port und > pin.... Auch das ist nicht als endgültige Lösung gedacht. Wie gesagt: Das ist keine Lib im Sinne von: hol ich mir, binde sie in mein Projekt ein, compiliere sie und rufe 2, vielleicht 3 Funktionen auf und geht. Das ist mehr als Anfang eines Baukastensystems zu sehen.
lol, ich bin also nicht der einzige der nicht schlafen kann. ahaaaaaa, aha, aha.... in der tat suche ich ein menusystem das einfach in ein kleines project anzubinden ist aber, ich bin froh dass ich dieses gesehen habe, so bin ich auf sachen gestossen die aufklärung bedürfen. ich habe mir die kapitel über pointer durch gelesen und jetzt ist alles schlimmer geworden;) den begrüsungs satz habe ich verstanden, danach.....nebel, nicht mal bahnhoff verstanden. so schlim ist es zum glück nicht aber es wird heftig. kanst du mir ein menüsystem empfelen (falls du welche kennst)? mfg
Kleber wrote: > glück nicht aber es wird heftig. kanst du mir ein menüsystem empfelen > (falls du welche kennst)? > mfg Nicht wirklich. Das Problem: So ein Meüsystem sieht anders aus, je nachdem ob man ein 2 zeiliges oder ein 4 zeiliges LCD benutzt. Auch die Anzahl der Zeichen pro Zeile kann einen Unterschied machen. Daher passe ich meine Menüsysteme der Aufgabenstellung an und programmiere sie meist speziell für die Anwendung. Sooo schlimm ist das auch wieder nicht.
Ich kann es mir denken dass es nicht so schlimn ist aber, für anfänger sind beispiele an die man sich orientieren kann wichtig. ich blicke nicht durch wie ein menusystem zu bewerksteligen ist daher die bitte um beispiele. mfg
2 Voraussetzungen: * Schaffst du es, auf dem LCD einen Text auszugeben? * Schaffst du es einen/mehrere Taster zuverlässig und ohne Prellen auszulesen? Die beiden Voraussetzungen musst du zunächst mal erfüllen können. Sonst hat es keinen Sinn mit dir ein Menüsystem durchzugehen. PS: Wir sollten uns von hier verziehen. Das ist die Codesammlung. In der wird fertiger Code präsentiert. Nach deiner nächsten Antwort, werde ich einige der vorstehenden Einträge löschen.
definitiv, ja. Ich habe keine probleme damit. Kleinere programe habe ich schon öfter geschrieben, lcd, taster pwm sind sachen die ich oft benutze. Halt für ein menü reicht mein wissen nicht. mfg p.s. wo geht es jetzt weiter?
Hallo, der Thread ist zwar schon etwas älter, aber sind die Links vom Threadanfang sind allesamt tod. Auch bei Google finde ich nur zahlreiche tote. Könnte jemand die Bibliothek hochladen oder neue Links veröffentlichen? Danke.
Suche bei Google nach liblcdmenu-0.1.tar.gz brachte mehrere Ergebnisse: z.B. https://www.n217-115-149-241.cnet.hosteurope.de/pleed/ Firefox meckert zwar, aber das musst du selber entscheiden. Gruss aus Aachen Georg
Hallo! alle links auf dieser seite funktionieren nicht mehr! kann mir jemand einen aktuellen funktionierenden link posten? danke josua
mit kriminalistischem spürsinn gefunden: http://chaos-disciple.org/pleed/downloads/liblcdme... http://chaos-disciple.org/pleed/downloads/liblcdmenu.tar.gz und für alle ewigkeiten gleich noch angehängt.
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.