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