cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

急救!!float型数值转换【已经解决,谢谢各位高手】

[复制链接]
发表于 2008-7-19 17:33:47 | 显示全部楼层 |阅读模式
各位高手帮帮忙吧,我真要崩溃了。我要把从串口采回来的数据转换成float 型的,用了三种办法都不行,
请高手给指点一下,我该怎么做。
我采回来的16进制数值如下:7E为帧头,每四个16进制数组成一个浮点数,



7E 18 1F 03 F3 F3 98 06 30 1E C3 18 30 66 FC 98 FE 60 03 7E 30 78 0C 60 03 80 E6 78 30 E6 E0 E0 7E 1E F0 1E 30 06 FF 18 C0 9E 1E 80 98 80 1E 00 60 0C 60 30 00 00 00 1E 00 1E 00 00 00 1E 00 FE 9E FE 00 06 3F 80 98 86 9E 06 30 1E 0C 86 98 7E 03 18 30 80 FE 78 CC 66 03 7E 30 60 0F 18 CC 66 33 78 30 1E CC 78 0C E6 9E 1E 30 18 0C 18 F3 60 03 1E 30 00 F8 06 CF 18 CF 1E F0 66 03 FE E6 80 E6 06 F0 66 C3 06 C3 80 86 06 F0 9E FE 00 00 78 FE 06 03 1E 30 18 0C E6 78 86 00 1E 30 E6 E0 06 0F 7E 30 78 C3 1E F3 78 30 60 F0 66 CF 06 C3 E0 E6 66 F0 1E C3 9E 1E 00 18 30 80 9E FE 86 F8 9E 78 98 9E 78 70 F3 CF 00 18 F0 1E 3C 86 86 06 30 9E FE 00 F8 FE 9E F8 18 03 1E 30 FE E6 18 CF E0 FE 00 86 98 80 F8 06 0F 7E 30 E0 E0 1E FF 1E CC 60 F0 E6 06 33 18 3C 66 F0 9E FE E0 F8 9E FE 18 30 E6 98 80 F8 66 F0 E0 7E 1E 1C 0F 78 7E 70 03 FC 9E FE 06 C3 86 F8 00 FE 9E FE 00 06 C0 1E CC 1E 03 1E 30 9E E0 60 33 60 FF 00 86 F8 78 03 18 0F 7E 30 E0 86 98 66 FC 60 F0 98 E6 98 E0 80 9E 66 F0 06 3C E0 FE F8 E0 1E 30 98 98 66 3F 9E E6 E6 7E 86 E0 F8 9E E0 06 F0 86 7E



方法1:
      matchedchar=Buffer+ loopnumber_A+2;
        Fmt (val, "%f<%s", matchedchar);
         writeBuffer[numItemsInWriteBuffer] =*val;
方法2:              
               
        CopyString (tt, 0, Buffer, 2,4);
        force=atof(tt);
        writeBuffer[numItemsInWriteBuffer] = force;
方法3:      
        CopyString (tt, 0, Buffer, 2,4);
        force=(float)*tt;
        writeBuffer[numItemsInWriteBuffer] = force;

[ 本帖最后由 l-huang 于 2008-9-28 16:08 编辑 ]
发表于 2008-7-19 21:37:09 | 显示全部楼层
呵呵,还是对数据类型理解的问题,建议大家学c语言要把基础的东西看透,给你个参考
union
{
    float fdata;
   char ch[4];
}xx;
xx[0]=Buffer[1];  //18
xx[0]=Buffer[1];  //18
发表于 2008-7-19 21:48:55 | 显示全部楼层
呵呵,还是对数据类型理解的问题,建议大家学c语言要把基础的东西看透,给你个参考
union
{
    float fdata;
   char ch[4];
}xx;
xx[0]=Buffer[1];  //18
xx[1]=Buffer[2];  //1F
xx[2]=Buffer[3];  //03
xx[3]=Buffer[4];  //F3
这个时候,你读
xx.fdata 就是浮点数
但我试了一下,这几个字节对应的浮点数不对啊。请确定数据是否正确
发表于 2008-7-19 21:49:30 | 显示全部楼层
呵呵,还是对数据类型理解的问题,建议大家学c语言要把基础的东西看透,给你个参考
union
{
    float fdata;
   char ch[4];
}xx;
xx[0]=Buffer[1];  //18
xx[1]=Buffer[2];  //1F
xx[2]=Buffer[3];  //03
xx[3]=Buffer[4];  //F3
这个时候,你读
xx.fdata 就是浮点数
但我试了一下,这几个字节对应的浮点数不对啊。请确定数据是否正确
发表于 2008-9-24 18:10:43 | 显示全部楼层
 楼主| 发表于 2008-9-25 10:34:05 | 显示全部楼层
我就是用的sunshuai教我的办法解决的。我想他已经说的很清楚了 。你把上面的代码加入到你的程序中试试。应该是可以成功的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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