OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 25867|回复: 16

串口发送浮点型数据的话要怎么处理?

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-4-27
在线时间
0 小时
发表于 2014-6-20 20:11:31 | 显示全部楼层 |阅读模式
5金钱
串口发送浮点型数据的话要怎么处理?,把一个浮点型数据拆成四个八位的数据来发送吗?  这样分开发送的话数据的话,那我在上位机处理单片机发送的数据的时候因为数据是一直在不停的发不停的收的,我怎么知道要把哪四个数据在结合起来呢?

最佳答案

查看完整内容[请看2#楼]

printf("%f\r\n",fx); fx就是浮点数.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-20 20:11:32 | 显示全部楼层
printf("%f\r\n",fx);
fx就是浮点数.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-6-23 15:34:35 | 显示全部楼层
本帖最后由 aleda303 于 2019-6-20 14:41 编辑

你要发送原始数据流 还是 格式化输出?
如果是格式化 按原子说的 ,用sprintf / printf;

如果发送原始内存数据流, 可按下面发送,

发送

float a = 1.23; double b=3.2;
SendBytes( (u8*)&a ,sizeof(a) );
SendBytes( (u8*)&b ,sizeof(b) );   //修改 这地方打错啦

上位机接到的 十六进制码,再按同样格式转回来。
如 分别接收到  s1[4] s2[8] 里面, 如果是float 就是4个字节
*(float*)&s1 就是 a
*(double*)&s2 就是b


回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-4-27
在线时间
0 小时
 楼主| 发表于 2014-6-24 22:11:31 | 显示全部楼层
回复【3楼】aleda303:
---------------------------------
恩我用了sprintf / printf;
回复

使用道具 举报

9

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2014-7-18
在线时间
0 小时
发表于 2014-8-8 16:05:24 | 显示全部楼层
回复【3楼】aleda303:
---------------------------------
学习了!!  正好同求这个


想问下,我用NRF24L01 将  FLOAT型数据 发送过去  
先sprintf语句 将 float型数据 转化成一个字符数组

到了下位机要如何 转化回来float型
Stm32 F0/F103
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-8-8 17:30:43 | 显示全部楼层
回复【5楼】psrazil:
---------------------------------
 反向 解析回来。

StrToInt 
StrToFloat
回复

使用道具 举报

9

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2014-7-18
在线时间
0 小时
发表于 2014-8-8 18:30:36 | 显示全部楼层
回复【6楼】aleda303:
---------------------------------
好的  谢谢啊
Stm32 F0/F103
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2015-7-12
在线时间
0 小时
发表于 2015-7-21 17:22:01 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥 我用printf发送浮点型数组 为什么会不显示小数点啊?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-21 22:56:30 | 显示全部楼层
回复【8楼】frf121148913112:
---------------------------------
设置有问题吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

51

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2012-10-24
在线时间
19 小时
发表于 2016-6-30 10:16:27 | 显示全部楼层
正点原子 发表于 2014-6-20 20:11
printf("%f\r\n",fx);
fx就是浮点数.

原子哥,您好,串口发送浮点数据,按您的方法来做,printf("%f\r\n",fx); fx是浮点数,程序直接卡死了,是什么原因呢?
回复

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2013-7-23
在线时间
21 小时
发表于 2016-8-4 10:47:22 | 显示全部楼层
aleda303 发表于 2014-6-23 15:34
你要发送原始数据流 还是 格式化输出?

如果是格式化 按原子说的 ,用sprintf&nbs ...

发送  
float a = 1.23; double b=3.2;
SendBytes( (u8*)&a ,sizeof(a) );  
SendBytes( (u8*)&b ,sizeof(b) );  

应该是这样吧?
回复

使用道具 举报

35

主题

309

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2641
金钱
2641
注册时间
2016-8-10
在线时间
470 小时
发表于 2016-12-19 18:03:03 | 显示全部楼层
要是要求保留小数点后面的位数不是很多的话,可以乘以10或者100就可以发送整数的形式发送了
回复

使用道具 举报

yuhuofei 该用户已被删除
发表于 2017-3-9 11:11:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

3

主题

5

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2017-5-26
在线时间
2 小时
发表于 2017-9-11 00:06:51 | 显示全部楼层
正点原子 发表于 2014-6-20 20:11
printf("%f\r\n",fx);
fx就是浮点数.


printf("%f\r\n",fx); 这个函数是正点原子自己声明定义的吗,还是什么?我怎么找不到这个函数定义的地方
回复

使用道具 举报

8

主题

206

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-4-6
在线时间
234 小时
发表于 2017-9-11 10:34:23 | 显示全部楼层
zhyl2233 发表于 2017-9-11 00:06
printf("%f\r\n",fx); 这个函数是正点原子自己声明定义的吗,还是什么?我怎么找不到这个函数定义的地方

这个是重定义函数,具体在标准输入输出库中,stdio.h
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-5-9
在线时间
1 小时
发表于 2018-5-9 14:08:29 | 显示全部楼层
aleda303 发表于 2014-6-23 15:34
你要发送原始数据流 还是 格式化输出?

如果是格式化 按原子说的 ,用sprintf&nbs ...

SendBytes是哪里的函数,怎么没找到。和printf一样吗?
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-4-4
在线时间
6 小时
发表于 2019-4-17 10:38:57 | 显示全部楼层
aleda303 发表于 2014-6-23 15:34
你要发送原始数据流 还是 格式化输出?

如果是格式化 按原子说的 ,用sprintf&nbs ...

SendBytes( *(u8*)&b ,sizeof(b) );   你这个函数的函数定义是什么
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 05:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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