Android 藍牙BLE 4.0傳輸20byte問題
- 坑爹的地方:
- 我個人的處理方案:
坑爹的地方:
- 每次最大傳輸20個byte,單次發送大于20個位元組會分包發送
- 如果固定傳輸20個位元組的批量資料,偶爾也會出現分撥發送的情況,例如先到達5byte,後到達15byte
- 傳輸間隔小于20ms時,分撥發送情況很容易發生,而且偶然還會出現更坑爹的情況,到達5byte後,下個完整的包到了,之後才到達分撥的15byte。
我個人的處理方案:
拼接起始位方法
假設我的接收的資料為:
55aa0b01010123010cf05570ad102768100f0010 1
sadfsagqwegdfvweasdfgf123sads 2
55aa0b01013qwwetz1012123z3010cf05570 3
55aa0b01013qwwetz1012123z301ad12310cf055 4
sadfsagqwegdfvweasdfgf123sads 5
我的起始位是55aa
因為BLE隻能發送20byte(40char),當發送的資料>20時,他就會自動分割成2串字元發送
是以我通過判斷目前起始位(55aa),若碰到下一個55aa則停止拼接字元串,
否則的話就會一直拼接字元串
最終資料就變成了這樣:
55aa0b01010123010cf05570ad102768100f0010sadfsagqwegdfvweasdfgf123sads
55aa0b01013qwwetz1012123z3010cf05570
55aa0b01013qwwetz1012123z301ad12310cf055sadfsagqwegdfvweasdfgf123sads
其他更多開發遇到問題
Android 藍牙4.0(BLE) Demo
有需要的話評論區留郵箱位址,我私發給你~