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

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
Ich nutze:
C-Control II Station
> > 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)