2017-04-04 53 views
0

I次のような問題を持っている言葉で文字列を受け取っ 「30,45,33,22 \ n」は、 '\ n'文字を入力した後、コンマで文字列を分割し、各値を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 

出力:私はこれらの2つの命令を入れ替えた後

1 
    0 
    0 
    0 
    0 
    0 
+0

'i!= '\ n" 'これは正しく表示されません。 –

答えて

0

それは働いていました:

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

strtokの仕組みはまだ分かりません。

+0

PSアップデート:Serial.println(コマンド[インデックス])を使用しているので、動作しないようです。すべての数字が別々の行に出力されます。何が間違っていますか? –