极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11467|回复: 2

arduino蓝牙传数据分段

[复制链接]
发表于 2016-8-24 13:42:40 | 显示全部楼层 |阅读模式
最近写一个计步器,安卓上的蓝牙代码都写好了,但是遇到一个问题就是蓝牙数据分段,一句话就是一次接收到的数据不完整,然后我就想自己定义一个数据包,可是加速度模块产生的三轴数据有可能是正数或者负数,比如一组三轴数据可能为{-1.56,0.98,-1.23} 或者{1.22,0.56,-10.23},我现在就想请教各位前辈,怎么自己组织数据包,让后把数据用Serial.wirte()字节流的方式发送到手机端,在手机端对数据进行解析?
回复

使用道具 举报

发表于 2016-8-26 16:00:25 | 显示全部楼层
剛才忽略你最後的一句: 在手机端对数据进行解析

我之前說的, 主要是針對 arduino 跟 arduino 的通訊.
如果手機上, float 的儲存跟 arduino 的不同 (例如 32bit vs 64bit), 或許不能直接把這 4 個 byte 填進去, 你可能需要自己進行轉換.

如果不行的話, 只好用回 Serial.Print 的方法, 用文字傳送, 但就有失真的可能.
或者你可以看看 float 是怎樣儲存的 (網上應該可以找到的), 自已轉化一次.
回复 支持 1 反对 0

使用道具 举报

发表于 2016-8-26 15:53:25 | 显示全部楼层
會選用 Serial.write 而不是 Serial.print 作為通訊, 已經是好的開始.

不要被數值影響思路, 在電腦的世界中, 任何數據都是用二進數值, 一個個 byte 去儲存的.  
如果不是為了給人類看, 而只是機械之間的通訊, 直接把 原來的二進值發過去 是最好的.

arduino 的 c++ 中, float 是 32bit 的, 就是 4 個 byte 吧.  
不論正負或是什麼數值, 只需要送出這 4個 bytes 就可以.
只要再加上一定的通訊協定 (例如 開始/結束碼, 驗值碼 之類), 就可以簡單作任安全的通訊了.
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-4 22:05 , Processed in 0.066950 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表