如何用usart传输float 和 double 类型 的数据啊

2019-07-20 19:04发布

在学习中遇到了使用usart需要传输float或者double类型的数据,


通常的u8,u16,u32类型的用usart只要注意高低字节的发送顺序即可,但是float,和double的存储结构比较复杂,


我自己是这样思考的


把float转化为u8 buf[4];
double 转化为u8 buf[8];


然后通过usart传输


再通过接收到的buf[4]重新组装为float
buf[8]重新组装为double


不知道这样能不能行,目前还没有实现代码,求大神指教

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
让睫毛载来爱
2019-07-20 22:16
年都没过,找了一天找到解决方法了
http://blog.chinaunix.net/uid-21222282-id-1829211.html

float a;                            //要发送的数据
unsigned char buf[4];   //缓存区

union result
     {
         float d;
         unsigned char data[4];
     }r1,t1;
r1.d=a;
for(i=0;i<4;i++)buf=r1.data[3-i];//部分软件识别需要对数据倒过来
usart_send(usart1,buf,4);

在接收方定义一个t1联合体
收到的数据放到t1.data数组中,读取t1.a就能还原出原来的float a

一周热门 更多>