Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C164CI-ControllerBoard, CC2-Application-Board, OSOPT V3.0
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)