极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10093|回复: 4

在串口读取多个字符串,并且转换为数字数组时遇到的问题

[复制链接]
发表于 2013-4-17 20:24:40 | 显示全部楼层 |阅读模式
各位大神,我参考Arduino学习笔记A6(补充) - 在串口读取多个字符串,并且转换为数字数组http://www.geek-workshop.com/thread-260-1-1.html
写出了如下程序
void loop()
{  int j=0;
  while(Serial.available()>0)
  {comdata += char(Serial.read());
  delay(2);
   mark=1;
  }
  if(mark==1)
  {
        Serial.println(comdata);
    Serial.println(comdata.length());
    for(int i=0;i<comdata.length();i++)
  {
    if(comdata==',')
    {
      j++;
    }
    else
    {numdata[j]=numdata[j]*10+(comdata-'0');
    }

  }
  comdata=String("");
  





然后用
Serial.println(numdata[0]);
Serial.println(numdata[1]);
Serial.println(numdata[2]);
查看数据,不知道为什么numdata[2]总是前面多出一个1,
比如说我输的是20,30,40
他的结果就会使numdata[0]=20
numdata[1]=30
numdata[2]=140
这是什么情况,思考了好久,没有头绪啊,谢谢各位大神了{:soso_e154:} {:soso_e154:}
回复

使用道具 举报

发表于 2013-4-18 20:12:08 | 显示全部楼层
numdata[j]=numdata[j]*10+(comdata-'0');
这里应该是 comdata[i] 吧?!
还有numdata必须每次清零的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-20 10:23:02 | 显示全部楼层
gjfhahaha 发表于 2013-4-18 20:12
numdata[j]=numdata[j]*10+(comdata-'0');
这里应该是 comdata 吧?!
还有numdata必须每次清零的

是的,那个没复制到
我在后面有numdata的清零
回复 支持 反对

使用道具 举报

发表于 2013-4-22 15:54:03 | 显示全部楼层
lxp5521 发表于 2013-4-20 10:23
是的,那个没复制到
我在后面有numdata的清零

Serial.println(comdata);这个输出有问题吗?
还有在numdata[j]=numdata[j]*10+(comdata-'0');这里print一下,看那个1出现在哪里
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-23 22:48:59 | 显示全部楼层
gjfhahaha 发表于 2013-4-22 15:54
Serial.println(comdata);这个输出有问题吗?
还有在numdata[j]=numdata[j]*10+(comdata-'0');这里print一 ...

谢谢你啦,已经解决了,上面的numdata我只定义到【2】,应该到【3】的
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-6-2 09:11 , Processed in 0.143701 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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