Wenn dein Zeit-String immer in dem Format ankommt, ist das umrechnen simpel. Daß das Format stimmt stellt dein 'Parser' sicher bzw der Sender.
Beispiel:
char *time;
time = "12:34:56";
uint8_t stunde, minute, sekunde;
stunde = 10*(time[0]-'0') + (time[1]-'0');
minute = 10*(time[3]-'0') + (time[4]-'0');
sekunde= 10*(time[6]-'0') + (time[7]-'0');
oder
stunde = my_atoi2 (time);
minute = my_atoi2 (time+3);
...
// Wandelt 2-stelligen Dezimal-String nach unsigned char
uint8_t my_atoi2 (char *str)
{
// ... evtl noch ein Test aufs Format
return 10*(str[0]-'0') + (str[1]-'0');
}
Den Klotz xscanf() und xprintf() brauchst du eigentlich nicht. Zwar bequem, vom Speicher- (RAM+Flash) und Zeitverbrauch her aber höllisch. Zumindest für Hänflinge wie AVR.
Lesezeichen