微信小程序藍牙代碼與錯誤整理
發表時(shí)間:2021-4-30
發布人(rén):融晨科技
浏覽次數:308
微信小程序整體上(shàng)是(shì)很不(bù)錯的(de),藍牙接口的(de)确“坑”,“網絡端”的(de)程序猿做“硬件接口”,
一些麻煩事兒
- 藍牙設備比較多會把手機卡死,公司能掃描到(dào)200+個(gè)設備,直接把iphone5S的(de)微信卡死了(le/liǎo)。
- 每次硬件操作之(zhī)間一定加延遲,建議100ms,例如“打開藍牙”與“開始掃描”間,“連接成功”與“獲取服務”等等之(zhī)類。不(bù)使用延遲可能會出(chū)現莫名其妙的(de)錯誤,多見于(yú)Android端。
- 注意JS的(de)異步、并發特性,特别在(zài)輪詢service下的(de)characteristic。小程序還不(bù)支持async,await(代碼補全中有這(zhè)兩個(gè)關鍵字,但是(shì)編譯不(bù)過)。
- 藍牙的(de)數據讀寫、advertisData的(de)類型是(shì)ArrayBuffer,(引用小程序的(de)注意:vConsole 無法打印出(chū) ArrayBuffer 類型數據)。鞋童們請先把二進制數組、十六進制字符串弄明白吧,代碼中有轉換的(de)方法(複制自github)。
- 初始化藍牙适配器(wx.openBluetoothAdapter(OBJECT))、獲取本機藍牙适配器狀态(wx.getBluetoothAdapterState(OBJECT)),這(zhè)兩個(gè)函數那個(gè)先調用不(bù)好說(shuō),自己玩吧,見下說(shuō)明。
一些BUG
- 藍牙在(zài)掃描過程中,獲取本機藍牙适配器狀态(wx.getBluetoothAdapterState(OBJECT))。(Android獨有,華爲(wéi / wèi)榮耀8、VIVO 7plus,6.5.13)
- available\Boolean\藍牙适配器是(shì)否可用,值爲(wéi / wèi)true。
- discovering\Boolean\是(shì)否正在(zài)搜索設備,值爲(wéi / wèi)false。
- https://github.com/FFiot/WX_Bluetooth/issues/1
- 藍牙在(zài)掃描過程中,再次啓動掃描wx.startBluetoothDevicesDiscovery(OBJECT):fail,errCode=10008。(Android獨有,華爲(wéi / wèi)榮耀8、VIVO 7plus,6.5.13)
- https://github.com/FFiot/WX_Bluetooth/issues/2
- errorCode與errMsg混在(zài)一起。(IOS獨有,IPHONE5s,微信6.5.15)
- https://github.com/FFiot/WX_Bluetooth/issues/3
- 藍牙在(zài)掃描service下character時(shí),如果有多個(gè)service,隻能正常獲取第一個(gè)service下的(de)character,其餘service獲取的(de)chara與第一個(gè)service相同。(IOS獨有,IPHONE5s,微信6.5.15)
移動設備藍牙開啓\關閉用兩種狀态,觸發wx.onBluetoothAdapterStateChange回調
- wx.getBluetoothAdapterState(OBJECT)
- 關閉狀态返回:drrCode:10000,errMsg:"getBluetoothAdapterState:fail"。此時(shí)開啓藍牙: wx.onBluetoothAdapterStateChange(CALLBACK)無回調。
- 開啓狀态返回:drrCode:10000,errMsg:"getBluetoothAdapterState:fail"。此時(shí)關閉藍牙: wx.onBluetoothAdapterStateChange(CALLBACK)無回調。
- wx.getBluetoothAdapterState(OBJECT)
- 關閉狀态返回:drrCode:10001,errMsg:"openBluetoothAdapter:fail"。此時(shí)開啓藍牙:wx.onBluetoothAdapterStateChange(CALLBACK)有回調。
- 開啓狀态返回:errMsg:"openBluetoothAdapter:ok"。此時(shí)開啓藍牙:wx.onBluetoothAdapterStateChange(CALLBACK)有回調。