6767|7

59

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【求助】 430浮点数传输 [复制链接]

  请问如何用C语言实现,一浮点数从串口传出,在上位机显示.

最新回复

把浮点型数据强制转化成4个字节直接发送过去,接收到4个字节之后再强制类型转换回浮点数即可,至于到了上位机的显示,调用MessageBox或者printf函数即可。     当然,我的上位机用的是VC编写的程序,你要是用串口调试助手之类的工具可就没法直接观察了,呵呵     示例代码:     发送----     for ( i=0; i<4; i++ )      {           SendChar( *((unsigned char *)(&FloatVal)+i) );      }     接收----       FloatVal = *(float *)(&RevBuffer[0]);  详情 回复 发表于 2006-1-19 16:11
 
点赞 关注

回复
举报

83

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
先将浮点数转为字符串,然后才能送出显示
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
弱问:如何将浮点数转为字符串,麻烦斑竹给个具体的.谢谢!
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
可以参考如下过程,也可以将其简化,例如没有正负之分的话,可以省略第一部分
int ftostr(dou××e data, char * str)
{
int i,j,k;
long temp,tempoten;
char intpart[20],dotpart[20]; //数的整数部分和小数部分

//1.确定符号位
if(data<0) {str[0]='-';data=-data;}
else str[0]='+';

//2.确定整数部分
temp=(long)data;

i=0;
tempoten=temp/10;
while(tempoten!=0)
{
intpart[i]=temp-10*tempoten+48; //to ascii code
temp=tempoten;
tempoten=temp/10;
i++;
}
intpart[i]=temp+48;

//3.确定小数部分,取了12位小数
data=data-(long)data;
for(j=0;j<12;j++)
{
dotpart[j]=(int)(data*10)+48;
data=data*10.0;
data=data-(long)data;
}

//4.数据组装
for(k=1;k<=i+1;k++) str[k]=intpart[i+1-k];
str[i+2]='.';
for(k=i+3;k<i+j+3;k++) str[k]=dotpart[k-i-3];
str[i+j+3]=0x0D;

return i+j+4;
}

此程序只供参考
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢,你真是个好人,有问题我再请教你!
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
No No No
这种方法决不是种好方法,多传了几倍的字节,却还是损失精度,显然,有更简洁,传输字节更少,而且不会损失精度的方法。
^_^
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
我贴的程序只是一种通用的数据转换程序而已,针对串口发送,可以简化修改
还请大侠们指多多参谋!
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

8
 
把浮点型数据强制转化成4个字节直接发送过去,接收到4个字节之后再强制类型转换回浮点数即可,至于到了上位机的显示,调用MessageBox或者printf函数即可。
当然,我的上位机用的是VC编写的程序,你要是用串口调试助手之类的工具可就没法直接观察了,呵呵

示例代码:
发送----
for ( i=0; i<4; i++ )
{
SendChar( *((unsigned char *)(&FloatVal)+i) );
}
接收----
FloatVal = *(float *)(&RevBuffer[0]);
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表