极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9954|回复: 2

已解决/ 串口读取字符串,分隔处理问题

[复制链接]
发表于 2014-8-30 21:43:05 | 显示全部楼层 |阅读模式
本帖最后由 yenan1001 于 2014-8-30 23:19 编辑

答案见回帖。


第一个数据没问题,但是后面的数据看起来都是累加上一次的。不知道问题在哪里。
请各位帮我看看。


我参考了这个教程:
http://www.geek-workshop.com/thread-260-1-1.html

下面是程序,基本没改:
int k = 0;

  while (Serial.available() > 0)
  {
    comdata += char(Serial.read());   
   delay(10);

   mark=1;
  }
   
  if(mark == 1)  //如果接收到数据则执行comdata分析操作,否则什么都不做。
    {
     Serial.println(comdata);
     Serial.println(comdata.length());
       for(int i = 0; i < comdata.length() ; i++)
       {
         if(comdata == ',')
         {
           k++;
         }
         else
         {
           numdata[k] = numdata[k] * 10 + (comdata - '0');
         }
       }
       comdata = String("");
       mark = 0;
       comdata="";
       long numdata[4] = {0};

得到如下结果:
100301,286,80,183           //接收到的串口数据,准确没有问题
17                                  //接收到数据的长度,正确
301                                //100301-100000,正确
28.60                             //286*0.1, 正确
80                                 //第三个数,正确
183                               //第四个数,正确
1                                  //计数,正确
3                                  //返回k的值
100301,286,80,182        //接收到的第二组数据
17                                //正确
-12691                         //有问题
28628.60                     //看起来是上一次的286又被加上了
8080                           //上一次的80没有清空
-13426                        //有问题
2                                //计数,正确
3                                 //返回k的值
100310,286,80,181       //第三组数据
17
-24970
28628628.00
21648
9061
3
3
100301,286,80,182
17
-3411
-147652256.00
2192
17214
4
3
回复

使用道具 举报

 楼主| 发表于 2014-8-30 21:54:06 | 显示全部楼层
找到问题了,自问自答:

numdata[4] = {0}; 不可以用来清空数组numdata[]
需要用
   for(int p=0;p<4;p++)
   {numdata[p]=0;}

高人可以解释下为啥吗?
回复 支持 反对

使用道具 举报

发表于 2014-8-30 22:31:03 来自手机 | 显示全部楼层
yenan1001 发表于 2014-8-30 21:54
找到问题了,自问自答:

numdata[4] = {0}; 不可以用来清空数组numdata[]

规定是这样啊…这样写只是把numdata[4]清零
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 18:19 , Processed in 0.047747 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表