cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 1787|回复: 8

浮点数转换问题附加例子【已经解决,谢谢各位高手】

[复制链接]
发表于 2008-7-19 18:20:14 | 显示全部楼层 |阅读模式
比如下位机要发送1.234这个数据,串口传输过来的数据是:3F 9D F3 B6 。请问上位机受到这四个数据后怎么处理才能得到我们想要得浮点数1.234?谢谢大家!

[ 本帖最后由 l-huang 于 2008-9-28 16:11 编辑 ]
发表于 2008-7-19 21:32:56 | 显示全部楼层
哦,我用labview试了一下,这就是1.234的16进制表示,你可以通过如下共用体实现:
union f_ch
{
       float fdata;
       char ch[4];
}
把这四个字节直接赋给ch[4],然后读出fdata就是1.234了,呵呵,如果共用体不明白的话参考百度或谭浩强
发表于 2008-7-21 13:45:44 | 显示全部楼层

回复 1# l-huang 的帖子

给你的例子  希望对你有帮助:
char a1[10];
int   n;
float m;
m=m*8.2/1000;                             
sprintf(a1, "%.2f",m);
SetCtrlVal (panelHandle,PANEL_DIS,a1);

另外 你可以用CopyString ()和atof()从接受到的数据桢中提取有用的部分然后转换成浮点数再用上面的方法输出显示.
发表于 2008-7-21 18:29:22 | 显示全部楼层
原帖由 sunshuai03 于 2008-7-19 21:32 发表
哦,我用labview试了一下,这就是1.234的16进制表示,你可以通过如下共用体实现:
union f_ch
{
       float fdata;
       char ch[4];
}
把这四个字节直接赋给ch[4],然后读出fdata就是1.234了,呵呵,如果 ...

这个方法不错~~
 楼主| 发表于 2008-7-22 16:29:28 | 显示全部楼层
问题已经解决,谢谢各位给予指点
发表于 2008-9-24 16:50:32 | 显示全部楼层
我也遇到同样的问题,只是把这段共用体的程序写进公式节点中,总是提示错误,以至不能继续后面的处理,希望高人指点。
这段共用体的程序是写进公式节点中吗?
 楼主| 发表于 2008-9-26 13:59:50 | 显示全部楼层
我用的是CVI,你说的公式节点是什么意思我不是很清楚
发表于 2008-9-26 15:20:01 | 显示全部楼层
To:楼上。
公式节点是LabVIEW里的,与LabWindows/CVI无关。在LabVIEW公式节点中,你可以插入一段C语言程序代码或MATLAB的m文件,进行一些计算工作。
 楼主| 发表于 2008-9-28 16:06:53 | 显示全部楼层
又学了一个知识点。谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-21 18:37 , Processed in 0.533360 second(s), 8 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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