2017-04-04 106 views
0

我有以下問題的話收到的字串 「30,45,33,22 \ n」; 我想在輸入'\ n'char並將每個值放入一個int數組後,用逗號分割字符串。問題是我嘗試了strtoksscanf的組合,它只是不起作用:Arduino的分裂在

#define PARAM_NR 10 
    Timer tt; 
    int i=0; 
    int index=0; 
    bool stringComplete=false; 
    char recString[MAX_LEN]; 
    char buf[20]; 

int commands[PARAM_NR]; 




void serialEv() 
    { 
     char aux; 
     char *token; 
     int i=0; 

     while(Serial.available()) 
     { 
     aux=Serial.read(); 
     if(i!='\n') 
     { 
     recString[i++]=aux; 
     recString[i]='\0'; 

     } 
     if(aux=='\n'); 
     { 

     token=strtok(recString,","); 
     while(token!=NULL) 
     { 
     token=strtok(NULL,","); 
      sscanf(token,"%d",&commands[index]); 
     Serial.println(commands[index]); 
     index++; 
     if(index==PARAM_NR) 
     index=0; 
     break; 
     } 
     } 


     } 
    } 

實施例:

輸入:

1,1,1 

輸出:

1 
0 
0 

看起來它只在第一個位置打印1,而在其他位置打印0。 如果我嘗試另一種輸入

例如: 輸入1:

1,1,1 

輸入2

3,4,5 

輸出:

1 
    0 
    0 
    0 
    0 
    0 
+0

'我!='\ n''這看起來不正確。 –

回答

0

它的工作後,我換的這2條指令:

sscanf(token,"%d",&commands[index]); 
    token=strtok(NULL,","); 

我還是不明白strtok是如何工作的。

+0

PS更新:它似乎無法正常工作,因爲如果我使用Serial.println(command [index]);它將在單獨的行上打印所有數字。這裏有什麼問題? –