微信小程序藍牙代碼與錯誤整理 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

微信小程序藍牙代碼與錯誤整理

發表時(shí)間:2021-4-30

發布人(rén):融晨科技

浏覽次數:308

微信小程序整體上(shàng)是(shì)很不(bù)錯的(de),藍牙接口的(de)确“坑”,“網絡端”的(de)程序猿做“硬件接口”,

一些麻煩事兒

  1. 藍牙設備比較多會把手機卡死,公司能掃描到(dào)200+個(gè)設備,直接把iphone5S的(de)微信卡死了(le/liǎo)。
  2. 每次硬件操作之(zhī)間一定加延遲,建議100ms,例如“打開藍牙”與“開始掃描”間,“連接成功”與“獲取服務”等等之(zhī)類。不(bù)使用延遲可能會出(chū)現莫名其妙的(de)錯誤,多見于(yú)Android端。
  3. 注意JS的(de)異步、并發特性,特别在(zài)輪詢service下的(de)characteristic。小程序還不(bù)支持async,await(代碼補全中有這(zhè)兩個(gè)關鍵字,但是(shì)編譯不(bù)過)。
  4. 藍牙的(de)數據讀寫、advertisData的(de)類型是(shì)ArrayBuffer,(引用小程序的(de)注意:vConsole 無法打印出(chū) ArrayBuffer 類型數據)。鞋童們請先把二進制數組、十六進制字符串弄明白吧,代碼中有轉換的(de)方法(複制自github)。
  5. 初始化藍牙适配器(wx.openBluetoothAdapter(OBJECT))、獲取本機藍牙适配器狀态(wx.getBluetoothAdapterState(OBJECT)),這(zhè)兩個(gè)函數那個(gè)先調用不(bù)好說(shuō),自己玩吧,見下說(shuō)明。

一些BUG

  1. 藍牙在(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
  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
  1. errorCode與errMsg混在(zài)一起。(IOS獨有,IPHONE5s,微信6.5.15)
  • https://github.com/FFiot/WX_Bluetooth/issues/3
  1. 藍牙在(zài)掃描service下character時(shí),如果有多個(gè)service,隻能正常獲取第一個(gè)service下的(de)character,其餘service獲取的(de)chara與第一個(gè)service相同。(IOS獨有,IPHONE5s,微信6.5.15)

移動設備藍牙開啓\關閉用兩種狀态,觸發wx.onBluetoothAdapterStateChange回調

  1. wx.getBluetoothAdapterState(OBJECT)
  • 關閉狀态返回:drrCode:10000,errMsg:"getBluetoothAdapterState:fail"。此時(shí)開啓藍牙: wx.onBluetoothAdapterStateChange(CALLBACK)無回調。
  • 開啓狀态返回:drrCode:10000,errMsg:"getBluetoothAdapterState:fail"。此時(shí)關閉藍牙: wx.onBluetoothAdapterStateChange(CALLBACK)無回調。
  1. wx.getBluetoothAdapterState(OBJECT)
  • 關閉狀态返回:drrCode:10001,errMsg:"openBluetoothAdapter:fail"。此時(shí)開啓藍牙:wx.onBluetoothAdapterStateChange(CALLBACK)有回調。
  • 開啓狀态返回:errMsg:"openBluetoothAdapter:ok"。此時(shí)開啓藍牙:wx.onBluetoothAdapterStateChange(CALLBACK)有回調。


相關案例查看更多