01: /**********************************************************************************************************************/ 02: /* scr_show: Anzeige eines bestimmten Bildes aus dem Menübaum */ 03: /* Parameter...: ScrNo Nummer des Bildes aus dem Menübaum */ 04: /* PgSym Blättersymbol 0=ohne 1=runter 2=hoch/runter 3=hoch */ 05: /* Rückgabewert: ohne */ 06: /**********************************************************************************************************************/ 07: void scr_show( uint8_t ScrNo, uint8_t PgSym ) 08: { 09: tUsrString UsrText[4]; 10: uint8_t TxtNr[4]; 11: uint8_t cnt = 0; 12: char TextBuffer[21]; 13: 14: lcd_clrscr(); /* Das LCD-Display löschen und den Cursor auf HOME setzen */ 15: //lcd_command( 0x0e ); /* Befehl an Display: Display ON/OFF = Display ON, Cursor OFF, Blink OFF */ 16: 17: if( ScrNo < SCRRENS_H_COUNT ) 18: { 19: for( cnt = 0; cnt < 4; cnt++ ) 20: { 21: TxtNr[cnt] = pgm_read_byte( &pgmScreenLines[ScrNo][cnt] ); 22: 23: if( TxtNr[cnt] > 0 ) 24: { 25: UsrText[cnt].ptrText = (char*)( pgm_read_word( &pgmStrings[TxtNr[cnt] - 1] ) ); 26: UsrText[cnt].XPos = pgm_read_byte( UsrText[cnt].ptrText ); 27: UsrText[cnt].ptrText += 1; 28: // String aus dem Programmspace in mybuffer kopieren... 29: strcpy_P( TextBuffer, UsrText[cnt].ptrText ); 30: // und nun auf dem LCD ausgeben 31: lcd_xyputs( UsrText[cnt].XPos, cnt, TextBuffer ); 32: } 33: } 34: switch( PgSym ) 35: { 36: case 1: lcd_xyputc( 19, 0, '\01' ); break; 37: case 2: lcd_xyputc( 19, 0, '\02' ); break; 38: case 3: lcd_xyputc( 19, 0, '\03' ); break; 39: } 40: } 41: else 42: { 43: lcd_puts("Error:\n ScrNo Out of Range"); 44: } 45: }