打印
[51单片机]

串口通信浮点数

[复制链接]
1546|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xinruzhishui|  楼主 | 2014-8-18 21:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
aogetuya| | 2014-8-18 23:08 | 只看该作者
整数和小数分开发

使用特权

评论回复
板凳
TopV| | 2014-8-19 15:15 | 只看该作者
看你单片机的浮点数格式是怎么样的
正常按字节顺序发
上位机接收后,按照浮点数格式再转化成单精度或双精度的数就可以了啊

使用特权

评论回复
地板
ballack_linux| | 2014-8-19 15:37 | 只看该作者
很好处理啊  上下位机都是自己写的 想如何制定协议都可以啊  上位机根据你下位机的发送方式处理就行了

使用特权

评论回复
5
yklstudent| | 2014-8-19 16:46 | 只看该作者
typedef union
{

uint8_t buf[4];
float f_value;
}F_T;

F_T  f_send;
F_T  f_recv;

发送f_send.buf[0],f_send.buf[1],f_send.buf[2],f_send.buf[3];
接收 f_recv.buf[0],f_recv.buf[1],f_recv.buf[2],f_recv.buf[3];
使用时就f_recv.f_value,f_send.f_value嘛



使用特权

评论回复
6
ningling_21| | 2014-8-19 20:21 | 只看该作者
5楼正解。。。

使用特权

评论回复
7
lyjian| | 2014-8-19 20:49 | 只看该作者
不管什么数,对串口来说都是一样的0101数据。

使用特权

评论回复
8
charrijon| | 2014-8-19 20:53 | 只看该作者
5楼正确做法

使用特权

评论回复
9
xinruzhishui|  楼主 | 2014-8-21 10:33 | 只看该作者
yklstudent 发表于 2014-8-19 16:46
typedef union
{

你好  我以前没用过结构体之类的编程, uint8_t buf[4];这句是定义一个数组吗,如果是,类型怎么不是uchar的呢     F_T  f_send;
              F_T  f_recv;  还有这两句是什么作用?

使用特权

评论回复
10
yklstudent| | 2014-8-21 10:57 | 只看该作者
xinruzhishui 发表于 2014-8-21 10:33
你好  我以前没用过结构体之类的编程, uint8_t buf[4];这句是定义一个数组吗,如果是,类型怎么不是ucha ...

昏 标示符不一样而已
代表的都是unsigned char;

使用特权

评论回复
11
NE5532| | 2014-8-21 11:02 | 只看该作者
xinruzhishui 发表于 2014-8-21 10:33
你好  我以前没用过结构体之类的编程, uint8_t buf[4];这句是定义一个数组吗,如果是,类型怎么不是ucha ...

为了方便程序移植,他重新定义了uchar类型为u8

使用特权

评论回复
12
xinruzhishui|  楼主 | 2014-8-21 13:57 | 只看该作者
yklstudent 发表于 2014-8-21 10:57
昏 标示符不一样而已
代表的都是unsigned char;

可以用这个函数实现吗?char* ecvt(double value, int ndigit, int *decpt, int *sign);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

103

帖子

0

粉丝