Re: Zeichen auf dem externen Display anzeigen? Kategorie: Programmierung (von Mark - 7.03.2004 10:23) | ||
Als Antwort auf Zeichen auf dem externen Display anzeigen? von n4x - 6.03.2004 15:25 | ||
| ||
Moin,moin ich hatte das gleiche Problem wie Du, ich habe einfach das programm menu_demo abgeändert ich hoffe wes läuft so auch bei Dir. (Ich benutze die neue lcdext.c2 aus dem Bereich Module&Funktionen). /* DATEI menudemo.c2 BESCHREIBUNG Menusteuerung fuer externes 2-Zeilen Display mit 3 Threads. Zur Laufzeit wird ein automatisches Display ausgegeben. Wird die (*) Taste gedrueckt, so wird das Autodisplay gestoppt und man kommt in einen Menumodus. Man kann beliebig viele Untermenus (z.B. ueber Konstanten er- zeugen. Durch Druecken der (*) Taste kann man ein Menu durchblaettern (einfach ver- zeigert). Durch Druecken der (#) Taste erreicht man (falls definiert) das Untermenu des Menupunktes, in dem man sich befindet. Durch Druecken der (#) Taste im letzten Menupunkt eines Menus kommt man wieder in das darueberliegende Menu. Durch Druecken der (#) Taste im letzten Menupunkt des Menus 0 faengt der Thread Autodisplay wieder an zu laufen ... AUTOR Bernd Schmidt (25.10.2002) */ byte flag; // Semaphore: Gueltig fuer alle Prozesse const MENU_DEPTH0_LEN = 7; const MENU_DEPTH1_LEN = 3; const MENU_DEPTH2_LEN = 3; const MENU_DEPTH3_LEN = 3; const SPACE5=" "; const Menu="Menu "; const Punkt="Punkt "; int pos; // Globale Variable fuer Menuposition !!! int initmenu; // Wird 1, wenn Menu durch Benutzer aktiviert int dpyam; // Semaphore: Autodisplay wird dargestellt ? string s; function display_menu (int depth, byte resetpos) returns int { int goto_depth; dpyam = 0; if (resetpos!=0) pos = 0; lcdext.home(); if (depth==0) // Menu oben { pos=pos+1; if (pos > MENU_DEPTH0_LEN) pos = 1; if (pos==1) { s=SPACE5 + Menu + "0" + SPACE5; lcdext.print(s); lcdext.line(2); s=SPACE5 + Punkt + "1" + SPACE5; lcdext.print(s); goto_depth = 1; } else if (pos==2) { s=SPACE5 + Menu + "0" + SPACE5; lcdext.print(s); lcdext.line(2); s=SPACE5 + Punkt + "2" + SPACE5; lcdext.print(s); goto_depth = 2; } else if (pos==3) { s=SPACE5 + Menu + "0" + SPACE5; lcdext.print(s); lcdext.line(2); s=SPACE5 + Punkt + "3" + SPACE5; lcdext.print(s); goto_depth = 3; } else if (pos==4) { s=SPACE5 + Menu + "0" + SPACE5; lcdext.print(s); lcdext.line(2); s=SPACE5 + Punkt + "4" + SPACE5; lcdext.print(s); goto_depth = 4; } else if (pos==5) { s=SPACE5 + Menu + "0" + SPACE5; lcdext.print(s); lcdext.line(2); s=SPACE5 + Punkt + "5" + SPACE5; lcdext.print(s); goto_depth = 5; } else if (pos==6) { s=SPACE5 + Menu + "0" + SPACE5; lcdext.print(s); lcdext.line(2); s=SPACE5 + Punkt + "6" + SPACE5; lcdext.print(s); goto_depth = 6; } else if (pos==7) { s=SPACE5 + Menu + "0" + SPACE5; lcdext.print(s); lcdext.line(2); s=" verlassen "; lcdext.print(s); goto_depth = 999; } sleep 120; } else if (depth==1) { // Menu 0 / Punkt 1 (# druecken)-> Menu 1 / Punkt 1 pos=pos+1; if (pos > MENU_DEPTH1_LEN) pos = 1; if (pos==1) { s=SPACE5 + Menu + "1" + SPACE5; lcdext.print(s); lcdext.line(2); s=SPACE5 + Punkt + "1" + SPACE5; lcdext.print(s); goto_depth = 11; } else if (pos==2) { s=SPACE5 + Menu + "1" + SPACE5; lcdext.print(s); lcdext.line(2); s=SPACE5 + Punkt + "2" + SPACE5; lcdext.print(s); goto_depth = 12; } else if (pos==3) { s=SPACE5 + Menu + "1" + SPACE5; lcdext.print(s); lcdext.line(2); s=" zurueck "; lcdext.print(s); goto_depth = 0; } sleep 120; } else if (depth==2) {} else if (depth==3) {} // ... return goto_depth; } thread autodisplay { lcdext.clear(); s=" Autodisplay "; lcdext.print(s); lcdext.line(2); s=SPACE5 + Punkt + "1" + SPACE5; lcdext.print(s); sleep 2500; lcdext.clear(); s=" Autodisplay "; lcdext.print(s); lcdext.line(2); s=SPACE5 + Punkt + "2" + SPACE5; lcdext.print(s); sleep 2500; lcdext.clear(); s=" Autodisplay "; lcdext.print(s); lcdext.line(2); s=SPACE5 + Punkt + "3" + SPACE5; lcdext.print(s); sleep 2500; // ... } thread menu { string dpy; int key; int depth; int goto_depth; key = keyboard.getkey(); if (key != -1) // Taste wurde gedrueckt { dpyam = 0; halt autodisplay; capture flag; if (key==10) // [*] : Menu blaettern { goto_depth = display_menu(depth, 0); } else if (key==11) // [#] : Menu Enter { depth = goto_depth; if (depth==999) { dpyam = 1; sleep 200; lcdext.clear(); pos = 0; depth = 0; reset autodisplay; resume autodisplay; reset; yield; } else if (initmenu==0) { goto_depth = display_menu(depth, 0); initmenu = 1; } else goto_depth = display_menu(depth, 1); } release; } } thread main { lcdext.init(); lcdext.clear(); sleep(2000); s=" Menudemo 1.0 "; lcdext.print(s); lcdext.line(2); s="*=weiter #=enter"; lcdext.print(s); sleep 5000; dpyam = 1; loop { if (dpyam==1) { run autodisplay; } run menu; } } > Hallo > > Vorweg ich bin ein Neueinsteiger und benutze die C-Control II Unit und das CC2-Application Board. > Als BEtriebssystem nutze ich die Version 2 von eurer Seite hier. > Ich würde gern mal wissen wie ich Zeichen auf dem externen Display ausgeben kann, das beim Application Board mitgeliefert > wurde. Wenn ich die Beispielprogramme ausführe, die angeblich das externe Display ansprechen sollten, dann ist > dies leider nicht der Fall. Könnt ihr mir helfen? > > Grü�e | ||
Antwort schreiben Antworten: Re: Zeichen auf dem externen Display anzeigen? (von André H. - 13.03.2004 14:00) Re: Zeichen auf dem externen Display anzeigen? (von n4x - 7.03.2004 14:59) Re: Zeichen auf dem externen Display anzeigen? (von n4x - 7.03.2004 13:53) |