发送接收浮点数

[复制链接]
182|10
手机看帖
扫描二维码
随时随地手机跟帖
zhanglli|  楼主 | 2020-1-12 14:29 | 显示全部楼层 |阅读模式
串口如何发送接收浮点数,并进行相应处理

使用特权

评论回复
yufe| | 2020-1-12 14:33 | 显示全部楼层
整数和小数分开发

使用特权

评论回复
llia| | 2020-1-12 14:37 | 显示全部楼层

看你单片机的浮点数格式是怎么样的
正常按字节顺序发

使用特权

评论回复
wangpe| | 2020-1-12 14:41 | 显示全部楼层
上位机接收后,按照浮点数格式再转化成单精度或双精度的数就可以了啊

使用特权

评论回复
hanwe| | 2020-1-12 14:43 | 显示全部楼层

很好处理啊  上下位机都是自己写的 想如何制定协议都可以啊  上位机根据你下位机的发送方式处理就行了

使用特权

评论回复
lium| | 2020-1-12 14:48 | 显示全部楼层

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嘛

使用特权

评论回复
guoyt| | 2020-1-12 14:57 | 显示全部楼层
不管什么数,对串口来说都是一样的0101数据。

使用特权

评论回复
zhanglli|  楼主 | 2020-1-12 15:02 | 显示全部楼层

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

使用特权

评论回复
hanwe| | 2020-1-12 15:06 | 显示全部楼层

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

使用特权

评论回复
lium| | 2020-1-12 15:10 | 显示全部楼层
为了方便程序移植,他重新定义了uchar类型为u8

使用特权

评论回复
zhanglli|  楼主 | 2020-1-12 15:13 | 显示全部楼层
可以用这个函数实现吗?char* ecvt(double value, int ndigit, int *decpt, int *sign);

使用特权

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

本版积分规则

1016

主题

9386

帖子

1

粉丝