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

Menue Steuerung Bug in Demo ?? Kategorie: Programmierung (von Ken - 3.11.2006 8:23)
Ich nutze:
C-Control II Station, OSOPT V3.1
Hi Leute habe mir ne Demop für eine Menue steuerung besorg leider klappt sie nicht so ganz
also ich habe sie auf taste 1 und 2 geendert statt * und #  
Bitte schauts euch mal an wenn ihr mit noch einen tipp geben könnt ich habe mein Inkrementalgeber programm fertig
funzt auch ich bekomme eine positifen und negatiefen Wert wie ich den so endere das ich bei ner wert enderung
eine inpuls für meine Menue steuerung bekomme.
Danke schon mal im vorraus
*/


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.goto(2,0);
      s=SPACE5 + Punkt + "1" + SPACE5;
      lcdext.print(s); goto_depth = 1; }
    else if (pos==2)
    { s=SPACE5 + Menu + "0" + SPACE5;
      lcdext.print(s); lcdext.goto(2,0);
      s=SPACE5 + Punkt + "2" + SPACE5;
      lcdext.print(s); goto_depth = 2; }
    else if (pos==3)
    { s=SPACE5 + Menu + "0" + SPACE5;
      lcdext.print(s); lcdext.goto(2,0);
      s=SPACE5 + Punkt + "3" + SPACE5;
      lcdext.print(s); goto_depth = 3; }
    else if (pos==4)
    { s=SPACE5 + Menu + "0" + SPACE5;
      lcdext.print(s); lcdext.goto(2,0);
      s=SPACE5 + Punkt + "4" + SPACE5;
      lcdext.print(s); goto_depth = 4; }
    else if (pos==5)
    { s=SPACE5 + Menu + "0" + SPACE5;
      lcdext.print(s); lcdext.goto(2,0);
      s=SPACE5 + Punkt + "5" + SPACE5;
      lcdext.print(s); goto_depth = 5; }
    else if (pos==6)
    { s=SPACE5 + Menu + "0" + SPACE5;
      lcdext.print(s); lcdext.goto(2,0);
      s=SPACE5 + Punkt + "6" + SPACE5;
      lcdext.print(s); goto_depth = 6; }
    else if (pos==7)
    { s=SPACE5 + Menu + "0" + SPACE5;
      lcdext.print(s); lcdext.goto(2,0);
      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.goto(2,0);
      s=SPACE5 + Punkt + "1" + SPACE5;
      lcdext.print(s); goto_depth = 11; }
    else if (pos==2)
    { s=SPACE5 + Menu + "1" + SPACE5;
      lcdext.print(s); lcdext.goto(2,0);
      s=SPACE5 + Punkt + "2" + SPACE5;
      lcdext.print(s); goto_depth = 12; }
    else if (pos==3)
    { s=SPACE5 + Menu + "1" + SPACE5;
      lcdext.print(s); lcdext.goto(2,0);
      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.goto(2,0);
  s=SPACE5 + Punkt + "1" + SPACE5;
  lcdext.print(s);
  sleep 2500;
  lcdext.clear();
  s="  Autodisplay ";
  lcdext.print(s); lcdext.goto(2,0);
  s=SPACE5 + Punkt + "2" + SPACE5;
  lcdext.print(s);
  sleep 2500;
  lcdext.clear();
  s="  Autodisplay ";
  lcdext.print(s); lcdext.goto(2,0);
  s=SPACE5 + Punkt + "3" + SPACE5;
  lcdext.print(s);
  sleep 2500;

  // ...
 }

thread menu
{
  string dpy;
  int key;
  int depth;
  int goto_depth;

  key = stkeyb.get();
  if (key != -1)  // Taste wurde gedrueckt
  {
    dpyam = 0;
    halt autodisplay;
    capture flag;
    if (key==1)  // [*] : Menu blaettern
    {
     goto_depth = display_menu(depth, 0);
    }
    else if (key==2) // [#] : 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.goto(2,0);
  s="*=weiter #=enter";
  lcdext.print(s);
  sleep 1000;
  dpyam = 1;

  loop
  {
    if (dpyam==1) { run autodisplay; }
    run menu;
  }
}


    Antwort schreiben


Antworten: