yangking91 发表于 2012-8-26 17:01:40

通过串口输入字符串转化成浮点数

各位大神,如何通过串口输入字符串并且转化成双精度浮点数,我想用上位机控制DDS信号源的频率,但是只会把串口输入的数转换成long型变量,float型变量不知如何转换

pww999 发表于 2012-8-26 19:34:08

本帖最后由 pww999 于 2012-8-26 20:09 编辑

Convert,ToDecimal(string);
Convert,ToFloat(string);
前提是你要验证下 字符串是否是浮点数据


http://blog.sina.com.cn/s/blog_63ce16cb0100xawf.html

dtt4211168 发表于 2012-8-26 19:38:45

我最亲爱的人们、要记得:爱情是此时此地、事关现在…婚姻是从此以后、事关一生…请三思而后行~

yangking91 发表于 2012-8-27 09:04:02

问题部分解决了,使用Serial.parseFloat()函数就行了:):),但是只能转换成单精度浮点数,不能从串口输入双精度浮点数

yangking91 发表于 2012-8-27 09:06:30

pww999 发表于 2012-8-26 19:34 static/image/common/back.gif
Convert,ToDecimal(string);
Convert,ToFloat(string);
前提是你要验证下 字符串是否是浮点数据


convert只能在C#里用,arduino里会报错。。。

yangking91 发表于 2012-8-27 11:32:38

差不多解决了
代码:
#include <stdlib.h>

char *comdata;
double a;
String c="";
boolean mark=0;

void setup()
{
Serial.begin(9600);

}

void loop()
{
while(Serial.available()>0)
{
    c+=char(Serial.read());
    delay(2);
    mark=1;
}

if(mark==1)
{
    Serial.print("c=");
    Serial.println(c);
    comdata=&c;
    Serial.print("comdata=");
    Serial.println(comdata);

    a=atof(comdata);
    Serial.print("a=");
    Serial.println(a,10);
    Serial.println(sizeof(a));
    mark=0;
    c=String("");
}
}
页: [1]
查看完整版本: 通过串口输入字符串转化成浮点数