发送端串口发送3个doble类型的数据,接收端要怎么处理呢?

平凡的L同学
博客专家认证
2016-07-27 10:03:11
如题,希望高手给点思路,最好有代码~
...全文
118 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dceacho 2016-07-28
  • 打赏
  • 举报
回复
引用 2 楼 yalishadaa 的回复:
[quote=引用 1 楼 wangfan027 的回复:] 指针啊,不过要注意双方大小端要一致 比如说你接收到的数据都放在uchar rxbuf[24]中 double d1,d2,d3; d1=*((double*)&rxbuf[0]); d2=*((double*)&rxbuf[8]); d3=*((double*)&rxbuf[16]); 注意这是大小端一致的情况,不一致时自己手动把顺序倒一下
试了一下,还是输出不了,我现在是float类型输出的,接收的时候是float d1,d2,d3; d1=*((float*)&rxbuf[0]); d2=*((float*)&rxbuf[4); d3=*((float*)&rxbuf[8]); 用的单片机型号是stm32[/quote] 那可能是顺序不一样

double d1,d2,d3;
float f1,f2,f3;
uchar tmp,i;
for(I=0;i<12;i++)
{
  tmp=rxbuf[23-i];
  rxbuf[I]=rxbuf[23-i];
  rxbuf[23-i]=tmp;
}
d1=*((double*)&rxbuf[0]);
d2=*((double*)&rxbuf[8]);
d3=*((double*)&rxbuf[16]);
f1=d1;f2=d2;f3=d3;
平凡的L同学 2016-07-27
  • 打赏
  • 举报
回复
引用 1 楼 wangfan027 的回复:
指针啊,不过要注意双方大小端要一致 比如说你接收到的数据都放在uchar rxbuf[24]中 double d1,d2,d3; d1=*((double*)&rxbuf[0]); d2=*((double*)&rxbuf[8]); d3=*((double*)&rxbuf[16]); 注意这是大小端一致的情况,不一致时自己手动把顺序倒一下
试了一下,还是输出不了,我现在是float类型输出的,接收的时候是float d1,d2,d3; d1=*((float*)&rxbuf[0]); d2=*((float*)&rxbuf[4); d3=*((float*)&rxbuf[8]); 用的单片机型号是stm32
dceacho 2016-07-27
  • 打赏
  • 举报
回复
指针啊,不过要注意双方大小端要一致 比如说你接收到的数据都放在uchar rxbuf[24]中 double d1,d2,d3; d1=*((double*)&rxbuf[0]); d2=*((double*)&rxbuf[8]); d3=*((double*)&rxbuf[16]); 注意这是大小端一致的情况,不一致时自己手动把顺序倒一下

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧