怎样使用串口传输float类型数据

闲聊 闲聊 1273 人阅读 | 0 人回复

<
用串口授输float规范数据,比较易的便是数据进造的转化
模仿量好比道 角度 间隔 速率 那些是10进造,
串心通讯用的是16进造 , 数据一个字节一个字节停止传输。
正在停止数据剖析,数据帧提与时,要把数据从16进造转到10进造,
float 转 unsigned char :

正在收收数据时,要把数据从10进造转到16进造,再经由过程usart串心(或此外中设)收收进来。
数据进造转化的办法有很多,我是用 float 数据 乘1000 再 强迫规范转化为 int16 (16位整形数据), 再把那个 int16 转成 下八位、低八位 两个 unsigned char 数据 。源码以下:
  1. #define BYTE0(dwTemp)  (*((char *)(&dwTemp)))
  2. #define BYTE1(dwTemp)  (*((char *)(&dwTemp)+1))
  3. #define BYTE2(dwTemp)  (*((char *)(&dwTemp)+2))
  4. #define BYTE3(dwTemp)  (*((char *)(&dwTemp)+3))
  5. //Float转 unsigned char :/
  6. float  data =0.1235
  7. int16_t  _temp ;
  8. nnsigned char data_Low , data_High ;
  9.   _temp = (int16_t)(  data  * 1000);
  10.   data_High   =BYTE1(_temp);
  11.   data_Low   =BYTE0(_temp);
复造代码
145043vjddkulkakm66o6t.jpg

145043gwstqwoiw2rjljaw.jpg

如图。
闭于谁人宏界说,用去拆开与字节的,详细怎样我也没有会。
unsigned char转 Float :


145044bjmc7571scaccj1h.jpg

((下八位
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则