极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12060|回复: 5

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

[复制链接]
发表于 2012-8-26 17:01:40 | 显示全部楼层 |阅读模式
各位大神,如何通过串口输入字符串并且转化成双精度浮点数,我想用上位机控制DDS信号源的频率,但是只会把串口输入的数转换成long型变量,float型变量不知如何转换
回复

使用道具 举报

发表于 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
回复 支持 反对

使用道具 举报

发表于 2012-8-26 19:38:45 | 显示全部楼层
我最亲爱的人们、要记得:爱情是此时此地、事关现在…婚姻是从此以后、事关一生…请三思而后行~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-27 09:04:02 | 显示全部楼层
问题部分解决了,使用Serial.parseFloat()函数就行了,但是只能转换成单精度浮点数,不能从串口输入双精度浮点数
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-27 09:06:30 | 显示全部楼层
pww999 发表于 2012-8-26 19:34
Convert,ToDecimal(string);
Convert,ToFloat(string);
前提是你要验证下 字符串是否是浮点数据

convert只能在C#里用,arduino里会报错。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[0];
    Serial.print("comdata=");
    Serial.println(comdata);

    a=atof(comdata);
    Serial.print("a=");
    Serial.println(a,10);
    Serial.println(sizeof(a));
    mark=0;
    c=String("");
  }
}
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-5-3 12:30 , Processed in 0.043139 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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