This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BLE 串口透传 float型数据



各位大神以及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:

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