STM32F4 CAN通讯

MSJ006 2020-09-28 08:50:40
小白求助各位大佬,CAN通讯如何发送小数,目前已知是用几个数据字节去计算组成小数,但不知道具体如何实现,最好能贴出代码,万分感谢!
...全文
27330 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhhh63 2020-10-08
  • 打赏
  • 举报
回复
直接发送小数,发送代码如下: u8 bufTx[8]; *(float*)bufTx = 1.234; *(flaot*)(bufTx + 4) = 5.678; 发送两个浮点数 接收端 u8 bufRx[8]; // 假设已经收到数据 float f1 = *(float*)bufRx; // 1.234; float f2 = *(flaot*)(bufRx + 4); // 5.678;
zgl7903 2020-09-29
  • 打赏
  • 举报
回复
最简单的方法 按一个约定的比率换算成整数 比如 要发送 3.141, 发送端 (int)(3.141 * 1000) =3141; 接收端 3141/1000.0 = 3.141
壶中日月小 2020-09-29
  • 打赏
  • 举报
回复
一般这些工业通讯没有什么小数之分,都是十六进制或者ASCII码。
十六进制就规定哪几位是小数就可以了,3.141可以是0x03,0x8D,0x8D就是小数部分;
ASCII码就是'3'、'.'、'1'、'4','1'。
Lenged_Zhao 2020-09-29
  • 打赏
  • 举报
回复
1、换成浮点数啊。 2、提高一定换算比例,3.14*100变成314 3、将数值换成字符去传输,比如3.14编程“3”“.”“1”“4”

27,375

社区成员

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

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