| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4314 人关注过本帖
标题:串口发浮点数
只看楼主 加入收藏
duzhiming
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2012-2-13
结帖率:62.07%
收藏
已结贴  问题点数:4 回复次数:10 
串口发浮点数
有一个浮点数
865.4 怎样用串口发出

串口每次只能发一个字节
2013-01-23 17:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
真想不到办法了?

授人以渔,不授人以鱼。
2013-01-23 21:17
duzhiming
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2012-2-13
收藏
得分:0 
回复 2楼 TonyDeng
浮点4个字节  如果用char *point 来指向这个浮点数 就可以往串口发了  但是没想好 怎么写
2013-01-23 21:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
既然了解这个内存映像,那么这个浮点数其实就是
union _T
{
    float x;
    BYTE s[4];
}
发连续的四个字节出去就是这个数据的内存块。

如果不需要内存映像,因为那可能不是精确值,也可以把数据转成精确的字符串再发过去。

授人以渔,不授人以鱼。
2013-01-23 21:45
duzhiming
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2012-2-13
收藏
得分:0 
回复 4楼 TonyDeng
我是做单片机的  以前没细究这个问题  都是发送BCD码
现在要直接转成浮点数
有个问题是
float a=25.3;
char *point;
float *p=&a;
这两个指针  char指针只能指向char类型 而float指针只能指向float类型
申明一个数组uchar[4]这个肯定是char 这数组就是指针了  
但是怎样将float 复制到uchar中 在复制的过程中会不会有什么问题
强制指针转换  代表 point怎样指向p这个不知道怎么写啊
2013-01-24 11:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
程序代码:
#include <stdio.h>

void main(void)
{
    float x = 25.3f;
    unsigned char* p = (unsigned char*) &x;

    for (int i = 0; i < 4; ++i)
    {
        printf_s("%02x ", *p++);
    }
}

授人以渔,不授人以鱼。
2013-01-24 15:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
下面是你两个数的内存映像,前面4字节是25.3f,后面4字节是865.4f

图片附件: 游客没有浏览图片的权限,请 登录注册

授人以渔,不授人以鱼。
2013-01-24 15:08
duzhiming
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2012-2-13
收藏
得分:0 
回复 7楼 TonyDeng
float f=9.9;
char *p;
p=(char*)&f;

for(i=0;i<4;i++)
printf("%d\n",*p);
这是我之前写的 没有弄过 不是很自信
2013-01-24 20:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果你没自信,就用"wb"模式把浮点数用fwrite()写到文件上,用EditPlus打开,在十六进制模式下看看它的真实数据是不是与自己得到的相符。我上面7楼的图就是这样得到的。把你的数值套入我的代码中看看也一样。

授人以渔,不授人以鱼。
2013-01-24 20:26
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 8楼 duzhiming
不管是什么类型,在内存里都是0和1组成的,你顺着这个思路琢磨琢磨

总有那身价贱的人给作业贴回复完整的代码
2013-01-24 22:08
快速回复:串口发浮点数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017288 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved