Code: Select all
void shell() {
Serial.println(inputstring);
String *inputstring_processed;
inputstring_processed=splitcmd(inputstring, ' ');
if (inputstring_processed[0] == "adctest") {
adc_test();
}
if (inputstring_processed[0] == "dactalk") {
int param1, param2;
String tempstring1, tempstring2;
char cstring1[100], cstring2[100];
tempstring1=inputstring_processed[1];
tempstring2=inputstring_processed[2];
tempstring1.toCharArray(cstring1,100);
tempstring2.toCharArray(cstring2,100);
param1 = atoi(cstring1);
param2 = atoi(cstring2);
dac_talk(param1,param2);
}
else {
Serial.println("Available commands: adctest dactalk");
}
Serial.print("auteur> ");
}
String* splitcmd(String command, char delimiter){
int endposition=-1;
int startposition=0;
int index=0;
String cli[10];
do{
endposition = command.indexOf(delimiter,endposition+1);
cli[index]=command.substring(startposition, endposition);
index++;
startposition=endposition;
}
while(endposition!=-1);
Serial.print ("cli[0]: "); Serial.println(cli[0]);
Serial.print ("cli[1]: "); Serial.println(cli[1]);
Serial.print ("cli[2]: "); Serial.println(cli[2]);
Serial.print ("cli[3]: "); Serial.println(cli[3]);
return cli;
}
And it works, but when I put two digit numbers as parameters, suddenly inputstring_processed[0] doesn't equal "dactalk" any more! It doesn't make sense.
auteur is listening: dactalk 1 23
cli[0]: dactalk
cli[1]: 1
cli[2]: 23
cli[3]:
Available commands: adctest dactalk
auteur> dactalk 1 3
cli[0]: dactalk
cli[1]: 1
cli[2]: 3
cli[3]:
wrote this to DAC: 1 11
auteur> dactalk 1 9
cli[0]: dactalk
cli[1]: 1
cli[2]: 9
cli[3]:
wrote this to DAC: 1 1001
auteur> dactalk 1 0
cli[0]: dactalk
cli[1]: 1
cli[2]: 0
cli[3]:
wrote this to DAC: 1 0
auteur> dactalk 1 10
cli[0]: dactalk
cli[1]: 1
cli[2]: 10
cli[3]:
Available commands: adctest dactalk
auteur> dactalk 12 3
cli[0]: dactalk
cli[1]: 12
cli[2]: 3
cli[3]:
Available commands: adctest dactalk
auteur>