[51单片机] 串口通信浮点数

[复制链接]
 楼主| 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 | 显示全部楼层
很好处理啊  上下位机都是自己写的 想如何制定协议都可以啊  上位机根据你下位机的发送方式处理就行了
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嘛



ningling_21 发表于 2014-8-19 20:21 | 显示全部楼层
5楼正解。。。
lyjian 发表于 2014-8-19 20:49 来自手机 | 显示全部楼层
不管什么数,对串口来说都是一样的0101数据。
charrijon 发表于 2014-8-19 20:53 | 显示全部楼层
5楼正确做法
 楼主| 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;  还有这两句是什么作用?
yklstudent 发表于 2014-8-21 10:57 | 显示全部楼层
xinruzhishui 发表于 2014-8-21 10:33
你好  我以前没用过结构体之类的编程, uint8_t buf[4];这句是定义一个数组吗,如果是,类型怎么不是ucha ...

昏 标示符不一样而已
代表的都是unsigned char;
NE5532 发表于 2014-8-21 11:02 | 显示全部楼层
xinruzhishui 发表于 2014-8-21 10:33
你好  我以前没用过结构体之类的编程, uint8_t buf[4];这句是定义一个数组吗,如果是,类型怎么不是ucha ...

为了方便程序移植,他重新定义了uchar类型为u8
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部