微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > BLE 串口透传 float型数据

BLE 串口透传 float型数据

时间:10-02 整理:3721RD 点击:

各位大神以及TI的大牛们:

         我最近遇到一个问题,就是如何在串口透传的时候发送float 型数据,在调用GATT_WriteLongCharValue( simpleBLEConnHandle, &req, simpleBLETaskId );时,req.pValue 的类型是uint8,而且osal_msg_deallocate(req.pValue);这个函数的返回值也是uint8,所以感觉好像无法修改,不知道怎么办?有人遇到过这样的问题吗,帮忙指点一下。

建议你不要用串口去传Float类型的数据,实型变量占用的内存太大,而且float数据存储方式整型不同,传输中的转换和查询也很麻烦。

一般的方法是比如你的数据精确到小数点后两位,那么你先扩大100倍,变成整型,最好变成char,(如果大于char的范围,可以将int高低八位分别提取成char),程序设计也很简单,然后上传传整型数据,可靠方便。

Wenzhong: 你的方案很好,我会认真的考虑。但我有一点不是很明白,我的数据是传感器采集的数据,有的会超过char的存储范围有的不会超过,如果定义成char,那么在接收的时候怎么处理来合并成正确的int型数据呢?

可以用这样子来转换

float send; 

union change
{
float d1;
unsigned char d2[4];
}r;

r.d1=send;

然后发送r.d2[0],r.d2[1],r.d2[2],r.d2[3]  四个char 

 收到后同样用共用体转换回来

zhuang:

           您好,非常感谢你的帮助,我以前没有用过共同体,但感觉对我很有帮助。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top