Hi!
Ich bin grad dabei meine LCD-lib etwas aufzumöbeln und kriege einen Pointer auf einen String im Flash im zusammenspiel mit einer variablen Argumentenliste nicht übergeben.
Das Funktioniert einwandfrei:
das allerdings garnicht (crashed mein Programm):Code:void lcd_test_p(uint8_t x, uint8_t y, PGM_P test) { char temp[LCD_WIDTH]; sprintf_P(temp,test); lcd_gotoxy(x,y); lcd_write(temp); }
hab probiert die argumente zu vertauschen (erst das PGM_P fmt, dann x und y, dann die variable Argumentenliste) aber das hat garnix gebracht.Code:void lcd_printf_xy_p(uint8_t x, uint8_t y, PGM_P fmt, ...) { char temp[LCD_WIDTH]; va_list argp; va_start(argp, fmt); vsprintf_P(temp, fmt, argp); va_end(argp); lcd_gotoxy(x, y); lcd_write(temp); }
aufgerufen hab ich die funktionen so:
wie kriegt man das gelöst?Code:lcd_test_p(0,0,PSTR("Test")); /* funktioniert */ lcd_printf_xy_p(0,0,PSTR("Test")); /* funktioniert nicht */ lcd_printf_xy_p(0,0,PSTR("test %i"),1); /* funktioniert nicht */![]()
grüße,
Basti







Zitieren
Lesezeichen