串口如何发送接收浮点数,并进行相应处理

[复制链接]
523|10
 楼主| zhanglli 发表于 2017-6-9 21:19 | 显示全部楼层 |阅读模式
串口如何发送接收浮点数,并进行相应处理
lium 发表于 2017-6-9 21:22 | 显示全部楼层
整数和小数分开发
guoyt 发表于 2017-6-9 21:23 | 显示全部楼层

看你单片机的浮点数格式是怎么样的
正常按字节顺序发
hanwe 发表于 2017-6-9 21:25 | 显示全部楼层

上位机接收后,按照浮点数格式再转化成单精度或双精度的数就可以了啊
lium 发表于 2017-6-9 21:27 | 显示全部楼层

很好处理啊  上下位机都是自己写的 想如何制定协议都可以啊  上位机根据你下位机的发送方式处理就行了
yufe 发表于 2017-6-9 21:28 | 显示全部楼层
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嘛
llia 发表于 2017-6-9 21:32 | 显示全部楼层

不管什么数,对串口来说都是一样的0101数据。
 楼主| zhanglli 发表于 2017-6-9 21:34 | 显示全部楼层

我以前没用过结构体之类的编程, uint8_t buf[4];这句是定义一个数组吗,如果是,类型怎么不是uchar的呢     F_T  f_send;
              F_T  f_recv;  还有这两句是什么作用?
wangpe 发表于 2017-6-9 21:36 | 显示全部楼层
昏 标示符不一样而已
代表的都是unsigned char;
langgq 发表于 2017-6-9 21:38 | 显示全部楼层
为了方便程序移植,他重新定义了uchar类型为u8
 楼主| zhanglli 发表于 2017-6-9 21:40 | 显示全部楼层

可以用这个函数实现吗?char* ecvt(double value, int ndigit, int *decpt, int *sign);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1016

主题

9386

帖子

1

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