Re: Menü Aufbau/Beispiel Kategorie: Programmierung (von Jens. - 1.08.2008 16:51) | ||
Als Antwort auf Re: Menü Aufbau/Beispiel von wema - 1.08.2008 14:34 | ||
| ||
> > Guten Tag > > > > Ich bin nun daran ein menü auf der C-C2 Station aufzubauen. > > Doch ich sto�e auf riesige problme. Das Menü lä�t sich durch blättern und untermenüs auswählen, > > doch wenn ich werte eingeben will wie z.b. die uhrzeit klappt dies nicht, da die tasten für das blättern > > benötigt wird. Und die aktuellen port zustände live abzufragen geht nicht, da das menü in einer funktion > > aufgebaut ist. > > > > Hat vielleicht jemand ein beispiel menü wo eingabe möglickeiten bestehen, oder vielleicht vorschläge. > > Das menü das ich gebastellt habe ist ähnlich wie das beispielmenü auf dieser seite. > > > > > Hallo ???, > > ohne genau Deine Programmteile oder Hardware zu kennen mein Tipp: > > Ich habe meine Menüs so aufgebaut, das ist durch alles durchblättern kann (früher auf einem 4x20LCD, > jetzt auf einem eDip-Touchbildschirm). Sobald ich eine Zahleneingabe tätigen mu�, springe ich in ein > extra dafür vorgesehenen Bildschirm und gebe meine Zahlen ein und mu� dann entweder mit Return > oder Abbruch bestätigen. Dadurch kann ich mein Menü komplett frei gestalten und habe letztendlich > nur einen Eingabebildschirm für sämtliche Zahleneingaben!! > > Ich hoffe, mich verständlich ausgedrückt zu haben. > > Gru� und ein schönes, schwüles Wochenende, > Heiko ups ja also ich verwende die c-c2 Station. so hier ist mal so der grundgedanke meiner programmierung const uhrstellen="Uhr Stellen"; const porttest = "Port Test"; const ad_test = "AD Test"; const zuruck = "Zurueck"; const verlassen = "Verlassen"; const eingabe_ok="Eingabe OK"; const resett="Reset"; const blank2=" "; const blank5=" "; const blank16=" "; const menu_ebene0 = 5; // Hauptmenu const menu_ebene1 = 2; // Zeit Stellen const menu_ebene2 = 1; // Port test const menu_ebene3 = 1; // AD Test string s; byte pos,sidevor,stby; // pos ist varb. für menu position. function dis(byte seite,byte restpos) { if (restpos != 0) pos=0; if (seite == 0) // Hauptmenu { pos = pos + 1; if (pos > menu_ebene0) pos = 1; if ( pos == 1) { s=blank2 + uhrstellen + blank5; lcdext.goto (1,1); lcdext.print (s); s=blank16; lcdext.line(2); lcdext.print(s); sidevor = 1; } else if ( pos == 2) { s=blank2 + porttest + blank5; lcdext.line(1); lcdext.print(s); s=blank16; lcdext.line(2); lcdext.print(s); sidevor = 2; } else if ( pos == 3) { s=blank2 + ad_test + blank5; lcdext.goto(1,1); lcdext.print(s); s=blank16; lcdext.line(2); lcdext.print(s); sidevor = 3; } else if (pos == 4) { s=blank2 + resett + blank5; lcdext.goto(1,1); lcdext.print (s); s=blank16; lcdext.line(2); lcdext.print(s); sidevor = 4; } else if (pos == 5) { s=blank2 + verlassen + blank5; lcdext.goto(1,1); lcdext.print (s); s=blank16; lcdext.line(2); lcdext.print(s); sidevor = 200; } } if (seite == 1) // Uhr Datum Stellen { pos = pos + 1; if ( pos == 1) { s=blank2 + uhrstellen+ blank5; lcdext.goto(1,1); lcdext.print(s); s=blank16; lcdext.line(2); lcdext.print(s); uhrdatum(); } else if ( pos == 2 ) { s=blank2 + zuruck + blank5; lcdext.goto(2,1); lcdext.print (s); sidevor = 0; } } if(seite ==2) //port test { pos = pos + 1; if (pos==1) { stports.setLED(7,1); test(); } else if (pos == 2) { s=blank2 + zuruck + blank5; lcdext.goto(2,1); lcdext.print (s); sidevor = 0; } } if(seite == 4) //reset { pos = pos + 1; if (pos == 1) { quit -1; } } } thread standby // Standy by teil wenn keine taste gedrückt oder menü verlassen wurde { lcdext.clear(); sleep 200; loop {//loop anfang lcdext.goto(1,4); lcdext.time(1); lcdext.goto(2,3); lcdext.date(1); }//loop ende } thread menu // menu auf c-c station 2 { byte seite, flag; pos = 0; seite = 0; // ausgewähltes untermenü loop { // loop anfang if (stkeyb.get() !=255) // warten taste gedrückt { stby = 0; //stop standby therad (main therad halt standby; // stop standby therad capture flag; if (stkeyb.get() == 13) //menu blättern { wait stkeyb.get()== 255; dis(seite,0); } else if (stkeyb.get() == 14) // Menüpunkt wählen ( ENTER ) { wait stkeyb.get() == 255; seite = sidevor; if (seite == 200) // wenn verlassen ausgewählt wurde { stby=1; pos=0; sidevor=0; seite=0; sleep 100; resume standby; reset standby; yield; } else dis(seite,1); } } release; }// loop ende }// therad ende thread main { stports.init(); lcdext.init(); max7311.setDDRw(0,-1); stby = 1; run menu; //run display; loop { if (stby == 1) run standby; } } | ||
Antwort schreiben Antworten: Re: Menü Aufbau/Beispiel (von Werner - 2.08.2008 19:05) |