hallo allemaal,
ik ben bezig met een project, ik krijg seriele data binnen, Deze laad ik in een String. Uit deze string haal ik bepaalde karakters uit. Deze karakters moeten een hexadecimaal getal voorstellen. Nu heb ik een heel raar probleem. als ik de volgende data binnen krijg gaat het goed,
data in FF 00 00
uit 255 , 0 , 0.
data in 00 FF 00
uit 0,3480,0 ??
als ik 0000FF binne krijg is mijn output 0,255,255 ??
roods[0] =data.charAt(Index+1);
roods[1] =data.charAt(Index+2);
Serial.println(roods);
groens[0] =data.charAt(Index+3);
groens[1] =data.charAt(Index+4);
Serial.println(groens);
blauws[0] =data.charAt(Index+5);
blauws[1] =data.charAt(Index+6);
Serial.println(blauws);
rood = x2i(roods);
groen = x2i(groens);
blauw = x2i(blauws);
//rood = strtoul(roods, NULL, 16);
//groen = strtoul(groens, NULL, 16);
//blauw = strtoul(blauws, NULL, 16);
Serial.println(rood);
Serial.println(groen);
Serial.println(blauw);
zoals jullie hierboven kunnen zien heb ik het ook geprobeerd met strtoul(); , maar hier krijg ik dezelde output. Overigens moet ik er wel bij vertellen dat ik op een maple mini werk. zou eigenlijk niet uit moeten maken maar toch. nergens anders in de code maak ik gebruik van deze chars of strings.
dit is de code die het omzet naar een int,
int x2i(char *s)
{
int x = 0;
for(;;) {
char c = *s;
if (c >= '0' && c <= '9') {
x *= 16;
x += c - '0';
}
else if (c >= 'A' && c <= 'F') {
x *= 16;
x += (c - 'A') + 10;
}
else if (c >= 'a' && c <= 'f') {
x *= 16;
x += (c - 'a') + 10;
}
else break;
s++;
}
Serial.println(x);
return x;
}
Heeft iemand enig idee wat er mis gaat?.
bedankt,