串口读取字符串并将字符串分割存到数组中

2014-11-149252
AI 快速预览详细 收起
本文介绍了两种方法在Arduino项目中通过串口读取字符串,并将字符串按逗号分割存入数组。第一种方法使用strtok和atof函数,第二种方法通过遍历字符串并手动解析。这两种方法都提供了清晰的数据解析步骤,帮助用户快速实现数据处理。

  1. 方法一:
  2. String comdata = "";
  3. float t1[6]={0};
  4. int mark =0;
  5. char *p=NULL;
  6. void setup()
  7. {
  8. Serial.begin(9600);
  9. }
  10. void loop()
  11. {
  12.   int i=0;
  13.   int j=0;
  14.   comdata="";
  15.   while (Serial.available() > 0)
  16.   {
  17.      comdata += char(Serial.read());
  18.      delay(2);
  19.      mark = 1;
  20.   }
  21.   if(mark == 1)
  22.   {
  23.     Serial.println(comdata);
  24.     p=strtok((char*)comdata.c_str(),",");
  25.     while(p)
  26.     {
  27.       t1[i]=atof(p);
  28.       i++;
  29.       p=strtok(NULL,",");
  30.     }<div class="blockcode"><blockquote>方法二:
  31. void getdata()
  32. {
  33.       int i=0;
  34.       int j = 0;
  35.       while (tcpClient.available() > 0)
  36.       {
  37.       
  38.         comdata += char(tcpClient.read());
  39.         delay(2);
  40.         mark = 1;
  41.       }
  42.      
  43.       if(mark == 1)  
  44.       {
  45.          tcpClient.fastrprintln("receive data success");
  46.        // Serial.println(comdata);        
  47.       //  Serial.println(comdata.length());
  48.      
  49.         for(int i = 0; i < comdata.length() ; i++)
  50.         {
  51.           if(comdata[i] == ',')
  52.           {
  53.             j++;
  54.           }
  55.           else
  56.           {
  57.             numdata[j] = numdata[j] * 10 + (comdata[i] - '0');
  58.           }
  59.         }
  60.         //comdata的字符串已经全部转换到numdata了,清空comdata以便下一次使用,
  61.         //如果不请空的话,本次结果极有可能干扰下一次。
  62.         comdata = String("");
  63.         mark=0;
  64.          
  65.           for( i=0;i<2;i++)
  66.           {
  67.             // Serial.println(numdata[i]);     
  68.              //numdata[i] = 0;      
  69.           }
  70.            for( i=0;i<2;i++)
  71.           {
  72.             // Serial.println(numdata[i]);     
  73.              numdata[i] = 0;      
  74.           }
  75.            
  76.       }
  77. }
复制代码


    comdata = String("");
    mark=0;
  
    for(int j=0;j<6;j++)
    {
      Serial.println(t1[j]);
    }
  }
  
}

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
什tm
什tm
这个能不能讲解一下,毕竟是新手
- 没有更多了 -