Split String dans un tableau de chaînes

J'ai été jouer avec la programmation pour arduino, mais aujourd'hui j'ai rencontré un problème que je n'arrive pas à résoudre avec mon très limitée C la connaissance.
Voici comment ça se passe.
Je suis de la création d'une application pc qui envoie série d'entrée de l'arduino (deviceID, commande, commandparameters). Ce arduino transmettre cette commande RF à d'autres arduino. en fonction de l'id correct arduino sera exécuter la commande.

Pour être en mesure de déterminer le deviceID je veux briser cette chaîne ",".
c'est mon problème, je sais comment le faire facilement en java (même en n'utilisant pas le standard de la fonction de répartition), cependant, en C c'est une histoire totalement différente.

Qui de vous les gars me dire comment le faire fonctionner?

grâce

/*
Serial Event example
When new serial data arrives, this sketch adds it to a String.
When a newline is received, the loop prints the string and 
clears it.
A good test for this is to try it with a GPS receiver 
that sends out NMEA 0183 sentences. 
Created 9 May 2011
by Tom Igoe
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/SerialEvent
*/
String inputString;         //a string to hold incoming data
boolean stringComplete = false;  //whether the string is complete
String[] receivedData;
void setup() {
//initialize serial:
Serial.begin(9600);
//reserve 200 bytes for the inputString:
inputString.reserve(200);
}
void loop() {
//print the string when a newline arrives:
if (stringComplete) {
Serial.println(inputString); 
//clear the string:
inputString = "";
stringComplete = false;
}
}
/*
SerialEvent occurs whenever a new data comes in the
hardware serial RX.  This routine is run between each
time loop() runs, so using delay inside loop can delay
response.  Multiple bytes of data may be available.
*/
void serialEvent() {
while (Serial.available()) {
//get the new byte:
char inChar = (char)Serial.read(); 
if (inChar == '\n') {
stringComplete = true;
} 
//add it to the inputString:
if(stringComplete == false) {
inputString += inChar;
}
//if the incoming character is a newline, set a flag
//so the main loop can do something about it:
}
}
String[] splitCommand(String text, char splitChar) {
int splitCount = countSplitCharacters(text, splitChar);
String returnValue[splitCount];
int index = -1;
int index2;
for(int i = 0; i < splitCount - 1; i++) {
index = text.indexOf(splitChar, index + 1);
index2 = text.indexOf(splitChar, index + 1);
if(index2 < 0) index2 = text.length() - 1;
returnValue[i] = text.substring(index, index2);
}
return returnValue;
}
int countSplitCharacters(String text, char splitChar) {
int returnValue = 0;
int index = -1;
while (index > -1) {
index = text.indexOf(splitChar, index + 1);
if(index > -1) returnValue+=1;
}
return returnValue;
} 

J'ai décidé, je vais utiliser le strtok fonction.
Je suis en cours d'exécution dans un autre problème maintenant. L'erreur qui s'est passé est

SerialEvent.cpp: In function 'void splitCommand(String, char)':

SerialEvent:68: erreur: impossible de convertir de 'Chaîne' to 'char*' for argument '1' to 'char* strtok(char*, const char*)'

SerialEvent:68: erreur: 'null', n'a pas été déclarée dans ce cadre

Code, c'est comme,

String inputString;         //a string to hold incoming data
void splitCommand(String text, char splitChar) {
String temp;
int index = -1;
int index2;
for(temp = strtok(text, splitChar); temp; temp = strtok(null, splitChar)) {
Serial.println(temp);
}
for(int i = 0; i < 3; i++) {
Serial.println(command[i]);
}
}

source d'informationauteur NightWalker