Arduino分裂收到的字符串

时间:2017-04-04 18:19:05

标签: arduino strtok scanf

我有以下问题:

我希望以下列形式从串口数据中接收: “30,45,33,22 \ n” 个; 我想在输入'\ n'char之后用逗号分割字符串并将每个值放在一个int数组中。问题是我尝试了 strtok sscanf 它只是不起作用:

  #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

1 个答案:

答案 0 :(得分:0)

在我交换了这两条指令之后,它工作了:

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

我仍然不知道strtok是如何运作的。