lxp5521 发表于 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=numdata*10+(comdata-'0');
    }

}
comdata=String("");






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

gjfhahaha 发表于 2013-4-18 20:12:08

numdata=numdata*10+(comdata-'0');
这里应该是 comdata 吧?!
还有numdata必须每次清零的

lxp5521 发表于 2013-4-20 10:23:02

gjfhahaha 发表于 2013-4-18 20:12 static/image/common/back.gif
numdata=numdata*10+(comdata-'0');
这里应该是 comdata 吧?!
还有numdata必须每次清零的

是的,那个没复制到
我在后面有numdata的清零

gjfhahaha 发表于 2013-4-22 15:54:03

lxp5521 发表于 2013-4-20 10:23 static/image/common/back.gif
是的,那个没复制到
我在后面有numdata的清零

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

lxp5521 发表于 2013-4-23 22:48:59

gjfhahaha 发表于 2013-4-22 15:54 static/image/common/back.gif
Serial.println(comdata);这个输出有问题吗?
还有在numdata=numdata*10+(comdata-'0');这里print一 ...

谢谢你啦,已经解决了,上面的numdata我只定义到【2】,应该到【3】的
页: [1]
查看完整版本: 在串口读取多个字符串,并且转换为数字数组时遇到的问题