|
|
本帖最后由 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
|
|