示例#1
0
long ve_bit1(char *s, long v, u08 BitNum, u08 OnOffLabel)
{
   if(ve_flag(veREAD)) {  // Reading  From EEPROM   
      if(ve_flag(veEEPROM_NO_RW)) return(v); // this var is disabled from EEPROM RW 

      while (!eeprom_is_ready());               

      if(eeprom_read_byte((void*) EIndex++)) v |= (1<<BitNum);
   }
   else if(ve_flag(veWRITE)) {  // Writing To EEPROM
      if(ve_flag(veEEPROM_NO_RW)) return(v); // this var is disabled from EEPROM RW 

      while (!eeprom_is_ready());               

      if(bit_is_set(v,BitNum)) eeprom_write_byte((void*) EIndex++,1);
      else                     eeprom_write_byte((void*) EIndex++,0);
   }
   else if((veGroupI == veCurGroup) && (++veVarI == veCurVar)) {   // if current variable

      if(ve_flag(veCOUNT_VARS)) return(v);  // iterating just to get counts

      veCurVal = MAXLONG;   // flag to not draw slider
          
      if(veDelta < 0) v &= ~_BV(BitNum);  // - turn off
      if(veDelta > 0) v |= _BV(BitNum);   // + turn on

      veDelta = 0;

#ifdef RES_128x64
      lcd_setxy(0,CHAR_HEIGHT*3);                 
      printf("%s ", s);
#else
      lcd_setxy(0,CHAR_HEIGHT*4);                 
      printf("%s ", s);
#endif

      if(bit_is_set(v,BitNum)) {
        if(OnOffLabel) printf("ON");
        else           printf("1");
      } 
      else {
        if(OnOffLabel) printf("OFF");
        else           printf("0");
      } 
   

      if (vePort != -1) printf (PS("\n"));
   }

   return(v);
   // options for load/save
}
示例#2
0
void AksenMain(void) {
	lcd_puts("Hallo");
	while(1) {/*
		lcd_cls();
		lcd_ubyte(analog(0));
		lcd_setxy(0, 4);
		lcd_ubyte(analog(1));
		lcd_setxy(0, 8);
		lcd_ubyte(analog(2));
		lcd_setxy(0, 12);
		lcd_ubyte(analog(3));
		lcd_setxy(1, 0);
		lcd_ubyte(analog(4));
		lcd_setxy(1, 4);
		lcd_ubyte(analog(5));
		lcd_setxy(1, 8);
		lcd_ubyte(analog(6));
		lcd_setxy(1, 12);
		lcd_ubyte(analog(7));
		sleep(50);/**/
		
		lcd_setxy(1,0);
		lcd_ubyte(getSensor(0));
		lcd_ubyte(getSensor(1));
		lcd_ubyte(getSensor(2));
		lcd_ubyte(getSensor(3));
		lcd_ubyte(getSensor(4));
		lcd_ubyte(getSensor(5));
		lcd_ubyte(getSensor(6));
		lcd_ubyte(getSensor(7));
		lcd_ubyte(getSensor(8));
	}
}
示例#3
0
void md_init(void)
{
  
  md_init_no_logo();

  #ifdef LIBRARY_BUILD
    lcd_setxy(CHAR_WIDTH*4,ROWS-CHAR_HEIGHT);
    printf (PS(LIBRARY_VERSION));

    draw_donkey_logo();  // - bezier curves

    delay_ms(1500);
    lcd_clear();
  #endif

}
示例#4
0
void ve_group(char *s) 
{

   if (++veGroupI != veCurGroup) return;   // was post +=  !!! why 
   
   if ( ve_flag(veCOUNT_VARS) | ve_flag(veREAD) | ve_flag(veWRITE))  return;

  

   if (vePort==-1) {
     lcd_setxy(0,CHAR_HEIGHT*3/2);

 
    // Note: parameter s is PS using PS buffer
        // Do not use PS( ) on any of the strings below. Will overwrite s since only
        // one buffer used


      #ifdef RES_128x64
        printf("%s ",s);  // skip showing # of vars in group on 128 pixel display
      #else
        if(veVarCount) printf("%s %d/%d", s, veCurVar, veVarCount);  // show current group label
        else           printf("%s 0/0", s);
      #endif

   

      // pad to erase stray chars 
      // if when say 10/10 loops to 1/10
      if((veVarCount > 9) && (veCurVar < 10)) printf(" ");  
          
   } else {

   
    printf("%s %d/%d   ",s, veCurVar, veVarCount) ;

    
    if (!veVarCount) printf ("\n");


   }
}
示例#5
0
long ve_int1(char *s, long v, u08 vsize, long min, long max) 
{
char ns[COLS/CHAR_WIDTH+1];
long p;

   p = 0; 

   if(ve_flag(veREAD)) {  // Read From EEPROM
      if(ve_flag(veEEPROM_NO_RW)) return(v); // this var is disabled from EEPROM RW 
      
      while (!eeprom_is_ready());               
      eeprom_read_block(&p,(void*) EIndex,vsize);
      EIndex += vsize;

//    veVarCount++;   

      // sign extension issues??
      // maybe code datatype in list
      // 8 16 32  signed unsigned      

      switch(vsize) {
         case 1: v = (u08)  p;   break;
         case 2: v = (int)  p;   break;
         case 4: v = (long) p;   break;
      }

      return(v);
   }

   
   if(ve_flag(veWRITE)) {  // Write to EEPROM
      if(ve_flag(veEEPROM_NO_RW)) return(v); // this var is disabled from EEPROM RW 

      while(!eeprom_is_ready());               
      eeprom_write_block(&v,(void *) EIndex, vsize);  // a
      EIndex += vsize;
//    veVarCount++;
      return (v);
   }


   if((veGroupI == veCurGroup) && (++veVarI == veCurVar)) {   // if current variable

     if(ve_flag(veCOUNT_VARS)) return(v);

     if (veStoreSerialBuffer)
         {
       veStoreSerialBuffer = 0;                

       // 0x could do hex scan ?

       veBuf[veBufIndex]   = 0;            // add null terminator
       sscanf(veBuf, "%ld", &v);

     }
     

     if(ve_flag(veUPDATE_FROM_SLIDER)) {
        v = veCurVal;
        ve_clrflag(veUPDATE_FROM_SLIDER);
     }


     if (vePort == -1) {

        if(ve_flag(veCALL_INPUT_DIALOG)) {

#ifdef RES_128x64
           sprintf(ns, "%-13s", s);
           v = menu_calc(ns, NO_MATH|FIX_MODE|NO_DP_CHANGE) / calc_scale;     // invoke calculator for number input/edit with no math
#else
           sprintf(ns, "%-16s", s);
           v = menu_calc(ns, NO_MATH|FIX_MODE|NO_DP_CHANGE) / calc_scale;     // invoke calculator for number input/edit with no math
#endif
//     sprintf(ns, "%ld", v);
//     v = menu_calc(ns, EVAL_TITLE|FIX_MODE|NO_DP_CHANGE) / calc_scale;     // invoke calculator for number input/edit with no math

          ve_clrflag(veCALL_INPUT_DIALOG);
          veDelta = 0;

        }      
      }  
       

        v += veDelta;   // add delta to variable 
        veDelta = 0;    // reset delta

        if(v < min) v = min;
        if(v > max) v = max;


      if (vePort == -1) {


      // Note: on printf statements below -- do not use PS on format strings
          // to save RAM. Buffer allocated by PS macro is being used by parameter s
          // s will be overwritten and you will see the format string appear in output 

#ifdef RES_128x64
         lcd_setxy(0,CHAR_HEIGHT*3);                 
         printf("%s %ld", s, v); // show var label and value
#else
         lcd_setxy(0,CHAR_HEIGHT*4);                 
         printf("%s %ld", s, v); // show var label and value
#endif
      } 


      veCurMin = min;
      veCurMax = max;
      veCurVal = v;

      //if (vePort != -1) printf ("%s : %s %ld \n",veCurGroupStr,s,v);

      if (vePort != -1) printf ("%s %ld \n",s,v);
   }

   if(v < min) v = min;   // clip to min max range regardless of match 
   if(v > max) v = max;   // this applied to every var needed ???
  

   return(v);

   // options for load/save
}
示例#6
0
void AksenMain(void)
{
byte current_startpoint = 0;
//char check = 99; //Variable zum Pruefen ob Fahrgast vorhanden und Route absolvierbar ist

// Startposition A oder B eventuell mit seitlichen Dipschaltern ueberpruefen => if...

// Initialisierung Suchverfahren
while(1)
{
  lcd_setxy(0,0);
  lcd_ubyte(analog(8));
    //breitensuche(current_startpoint);

// Fahrplan laden

// Fahrplan auslesen -> iterativer Prozess abhängig von der Anzahl der Fahrgaeste
    //check = read_plan(current_startpoint);

// transportierte Fahrgaeste auf Karte mit x etc. markieren aber nicht mit 'F'

// Codeanzeige auf Display, ob Fahrgast vorhanden, Route passierbar ist -> lcd_puts("0, -1 oder -2")

...

//Start wenn Licht aus ist -> drive();
}

/*
void breitensuche(byte start)
{
    byte aktPosition = start;
    byte kosten = 0;
    byte kostenKarte[] = 99;

    kostenKarte[aktPosition] = 0;
    putANummer(aktPosition);

    while(aktPosition != 0)
    {
        kosten++;
        if(_fa[aktPosition+1] == '.')
        {
            putANummer(aktPosition+1);
            kostenKarte[aktPosition+1] = kosten;
        }
        if(_fa[aktPosition+7] == '.')
        {
            putANummer(aktPosition+7);
            kostenKarte[aktPosition+7] = kosten;
        }
        if(_fa[aktPosition-1] == '.')
        {
            putANummer(aktPosition-1);
            kostenKarte[aktPosition-1] = kosten;
        }
        if(_fa[aktPosition-7] == '.')
        {
            putANummer(aktPosition-7);
            kostenKarte[aktPosition-7] = kosten;
        }
    }  */
}