Thanks for your help! The serial input basics are interesting and I tried to use that.
I wrote some code now to test this part but I am getting strange results. There are a lot of printf's for testing and the "part" prints the right result (123 345 789 321). The xxx part is where I struggle though. using r = atoi(part) always gives me 123 for every int (r=g=b=...=123). Where is the error?
Whats the best way to catch errors here if the string isn't of the right form?
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
int main(void) {
const char *data = "123,456,789,321";
int data_len = 20;
char *dataBuf = (char*)malloc(data_len+1);
memcpy(dataBuf, data, data_len);
dataBuf[data_len] = 0;
printf("Running ...\r\n");
char delimiter[] = ",";
char *part;
int r,g,b,brightness;
part = strtok(dataBuf, delimiter);
int i = 0;
printf("i is now: %i , ", i);
while (part != NULL) {
switch(i) {
case 0:
printf("part is now: %s , ", part);
r = // xxx
printf("r is: %i, ", r);
i++;
part = strtok(NULL, delimiter);
printf("i is now: %i , ", i);
break;
case 1:
printf("part is now: %s , ", part);
g = // xxx
printf("g is: %i, ", r);
i++;
part = strtok(NULL, delimiter);
printf("i is now: %i , ", i);
break;
case 2:
printf("part is now: %s , ", part);
b = // xxx
printf("b is: %i, ", r);
i++;
part = strtok(NULL, delimiter);
printf("i is now: %i , ", i);
break;
case 3:
printf("part is now: %s , ", part);
brightness = // xxx
printf("brightness is: %i\r\n", r);
i++;
part = strtok(NULL, delimiter);
printf("i is now: %i , ", i);
break;
}
}
return EXIT_SUCCESS;
}