手机av在线网_欧美日韩中文国产_亚洲啪av永久无码精品放毛片_国产日韩欧美日韩大片_亚洲 欧美 国产 另类_欧美成人性战久久_国产又粗又猛大又黄又爽_欧美日韩一区三区_自拍偷拍第9页_日韩一区二区电影_扒开伸进免费视频_中文字幕亚洲一区

歡迎光臨~深圳市山星盛電子科技有限公司-稱重產品官方展示網站
服務熱線 全國服務熱線:

0755-2979 1990

您的位置: 網站首頁 > 新聞資訊

新聞資訊

電子磅秤稱重設備 藍牙低功率對接微信小程序之藍牙 BLE 踩坑記錄

前段時間接手了一個微信小程序的開發,主要使用了小程序在今年 3 月開放的藍牙 API ,此過程踩坑無數,特此記錄一下跳坑過程。順便開了另一個相關的小項目,歡迎 start 和 fork: BLE_MiniProgram

API簡介

微信小程序目前有藍牙 API 共 18 個,其中操作藍牙適配器的共有 4 個,分別是

wx.openBluetoothAdapter 初始化藍牙適配器wx.closeBluetoothAdapter 關閉藍牙模塊wx.getBluetoothAdapterState 獲取本機藍牙適配器狀態wx.onBluetoothAdapterStateChange 監聽藍牙適配器狀態變化事件

連接前使用的共有 4 個,分別是

wx.startBluetoothDevicesDiscovery 開始搜尋附近的藍牙外圍設備wx.stopBluetoothDevicesDiscovery 停止搜尋附近的藍牙外圍設備wx.getBluetoothDevices 獲取所有已發現的藍牙設備wx.onBluetoothDeviceFound 監聽尋找到新設備的事件

連接和斷開時使用的共有 2 個,分別是

wx.createBLEConnection 連接低功耗藍牙設備wx.closeBLEConnection 斷開與低功耗藍牙設備的連接

連接成功后使用的共有 8 個,分別是

wx.getConnectedBluetoothDevices 根據 uuid 獲取處于已連接狀態的設備wx.getBLEDeviceServices 獲取藍牙設備所有 service(服務)wx.getBLEDeviceCharacteristics  獲取藍牙設備所有 characteristic(特征值)wx.readBLECharacteristicValue  讀取低功耗藍牙設備的特征值的二進制數據值wx.writeBLECharacteristicValue 向低功耗藍牙設備特征值中寫入二進制數據wx.notifyBLECharacteristicValueChange  啟用低功耗藍牙設備特征值變化時的 notify 功能wx.onBLECharacteristicValueChange 監聽低功耗藍牙設備的特征值變化wx.onBLEConnectionStateChange 監聽低功耗藍牙連接的錯誤事件

基本操作流程

最基本的操作流程是:初始化藍牙適配器→開始搜尋附近的藍牙外圍設備→監聽尋找到新設備的事件→連接低功耗藍牙設備→獲取藍牙設備所有 service 和 characteristic →讀取或寫入低功耗藍牙設備的特征值的二進制數據值。

踩過的幾個坑

支持藍牙 API 的版本

Android 從微信 6.5.7 開始支持,iOS 從微信 6.5.6 開始支持,因此小程序中需要做好版本檢測,在 app.js 文件中加入以下代碼,其中 wx.getSystemInfoSync 是一個獲取系統信息的API。

onLaunch: function() {    this.globalData.sysinfo = wx.getSystemInfoSync()
},getModel: function () { //獲取手機型號
    return this.globalData.sysinfo["model"]
},getVersion: function () { //獲取微信版本號
    return this.globalData.sysinfo["version"]
},getSystem: function () { //獲取操作系統版本
    return this.globalData.sysinfo["system"]
},getPlatform: function () { //獲取客戶端平臺
    return this.globalData.sysinfo["platform"]
},getSDKVersion: function () { //獲取客戶端基礎庫版本
    return this.globalData.sysinfo["SDKVersion"]
}

在初始頁面(一般是 index.wxml)對應的 js 文件中使用 app.getPlatform() 和 app.getVersion() 即可獲取到客戶端平臺(安卓或 iOS)和微信版本號。在onLoad中獲取這兩個信息后進行比較即可,使用了下面的版本比較方法。

versionCompare: function (ver1, ver2) { //版本比較
    var version1pre = parseFloat(ver1)    var version2pre = parseFloat(ver2)    var version1next = parseInt(ver1.replace(version1pre + ".", ""))    var version2next = parseInt(ver2.replace(version2pre + ".", ""))    if (version1pre > version2pre)        return true
    else if (version1pre < version2pre) 
        return false
    else {        if (version1next > version2next)            return true
        else
            return false
    }
}
if (app.getPlatform() == 'android' && this.versionCompare('6.5.7', app.getVersion())) {    wx.showModal({        title: '提示',        content: '當前微信版本過低,請更新至最新版本',        showCancel: false
    })
}
else if (app.getPlatform() == 'ios' && this.versionCompare('6.5.6', app.getVersion())) {    wx.showModal({        title: '提示',        content: '當前微信版本過低,請更新至最新版本',        showCancel: false
    })
}

安卓 6.0 及以上設備需打開定位服務

在測試中發現安卓 6.0 以上的手機未打開系統定位服務時,搜索不到藍牙設備,因此最好在頁面中提示用戶打開定位服務。

wx.onBluetoothDeviceFound 不兼容

安卓及iOS設備使用 wx.onBluetoothDeviceFound 時會出現不同的返回值,且有概率出現重復設備,所以使用以下代碼可以清除重復的設備和解決 API 不兼容問題。

wx.onBluetoothDeviceFound(function (devices) {    var isnotExist = true
    if (devices.deviceId) {        for (var i = 0; i < foundDevice.length; i ++) {            if (devices.deviceId == foundDevice[i].deviceId) {
                isnotExist = false
            }
        }        if (isnotexist)
            foundDevice.push(devices)
    }    else if (devices.devices) {        for (var i = 0; i < foundDevice.length; i++) {            if (devices.devices[0].deviceId == foundDevice[i].deviceId) {
                isnotExist = false
            }
        }        if (isnotexist)
            foundDevice.push(devices.devices[0])
    }    else if (devices[0]) {        for (var i = 0; i < foundDevice.length; i++) {            if (devices[0].deviceId == foundDevice[i].deviceId) {
                isnotExist = false
            }
        }        if (isnotexist)
            foundDevice.push(devices[0])
    }
})

讀取廣播數據和特征值

小程序中讀取 BLE 廣播數據使用 wx.onBluetoothDeviceFound 接口中的 advertisData,對應上面兼容問題的 devices 格式,如 devices.advertisData,這個數據是 ArrayBuffer,需要轉換,可以使用以下兩種轉換方法。另外 wx.getBLEDeviceCharacteristics 讀取的特征值 characteristic.value 也是 ArrayBuffer,用同樣的方法轉換。

buf2string: function (buffer) {    var arr = Array.prototype.map.call(new Uint8Array(buffer), x => x)    var str = ''
    for (var i = 0; i < arr.length; i++) {
      str += String.fromCharCode(arr[i])
    }    return str
}
buf2hex: function (buffer) {    return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
}

發送大于 20 字節的數據包

眾所周知,BLE 4.0 中發送一個數據包只能包含 20 字節的數據,大于 20 字節只能分包發送。微信小程序提供的 API 中似乎沒有自動分包的功能,這就只能自己手動分包了。調試中發現,在 iOS 系統中調用 wx.writeBLECharacteristicValue 發送數據包,回調 success 后緊接著發送下一個數據包,很少出現問題,可以很快全部發送完畢。而安卓系統中,發送一個數據包成功后緊接著發送下一個,很大概率會出現發送失敗的情況,在中間稍做延時再發送下一個就可以解決這個問題(不同安卓手機的時間長短也不一致),照顧下一些比較奇葩的手機,大概需要延時 250 ms 。不太好的但是比較科學的辦法是,只要成功發送一個數據包則發送下一個,否則不斷重發,具體就是
wx.writeBLECharacteristicValue 回調 fail 則重新發送,直至發送完畢。

補充說明

此處補充說明一下,華為榮耀部分機型、還有藍綠廠的部分機型,在藍牙 API 有深坑,謹慎調試。另:發現挺多同學沒有注意到官方文檔最下方的錯誤碼列表,順便在此處貼出來。

藍牙錯誤碼 (errCode) 列表

錯誤碼說明備注
0ok正常
10000not init未初始化藍牙適配器
10001not available當前藍牙適配器不可用
10002no device沒有找到指定設備
10003connection fail連接失敗
10004no service沒有找到指定服務
10005no characteristic沒有找到指定特征值
10006no connection當前連接已斷開
10007property not support當前特征值不支持此操作
10008system error其余所有系統上報的異常
10009system not supportAndroid 系統特有,系統版本低于 4.3 不支持BLE


用手機掃描二維碼關閉
二維碼
久热这里有精品| 亚洲丶国产丶欧美一区二区三区| 国产精品自拍小视频| 亚洲国产精品成人久久蜜臀| 国产精品久久久久久久久久久久 | 亚洲va欧美va| 欧美日韩精品一区二区三区四区 | 蜜臀av一区二区在线免费观看| 国产综合色香蕉精品| 亚洲欧美日韩动漫| 亚洲成人网上| 国产成人在线视频观看| 91麻豆精品国产91久久久使用方法| 香蕉视频污视频| 欧美日韩午夜视频在线观看| 制服.丝袜.亚洲.中文.综合懂 | 俄罗斯精品一区二区| 欧美精品99久久久| 亚洲精品国产综合区久久久久久久| 性久久久久久久久久| 亚洲激情在线观看| 国产麻豆免费视频| 久久午夜a级毛片| 亚洲成人福利视频| 色综合久久88色综合天天| 欧美做受高潮中文字幕| 欧美日韩高清一区二区三区| 一卡二卡在线观看| 亚洲第一区第一页| 15—17女人毛片| 色琪琪一区二区三区亚洲区| 免费看黄色的视频| 国产一区二区三区四区福利| 草逼视频免费看| 亚洲一区二区三区乱码| 精品日本美女福利在线观看| 成人性生交大片免费看无遮挡aⅴ| 久久精品国产免费观看| 日韩福利视频导航| 国产乱子伦精品无码专区| 欧美日免费三级在线| 1024手机在线视频| 国产精品一区二区3区| 空姐吹箫视频大全| 成人小视频在线观看免费| 欧美日韩一区久久| 五月天婷婷久久| 国产在线精品成人一区二区三区| 成人av中文字幕| 国产资源中文字幕| 欧美另类99xxxxx| 香蕉视频成人在线| 欧美成人一区二区在线观看| 欧美乱妇一区二区三区不卡视频| 久久久久久久亚洲| 日韩一本精品| 日韩亚洲欧美一区| 无码精品一区二区三区在线| 欧美老熟妇喷水| 一本色道久久88亚洲综合88| 精品一区二区三区在线播放| 999精彩视频| 91国内产香蕉| 中文字幕在线视频一区| 国产在线免费视频| 日本不卡二区高清三区| 欧美一级免费观看| 日韩av在线播放中文字幕| 久久久久久久久久一区| 久久男人av资源网站| 99riav久久精品riav| 波多野结衣先锋影音| 成人淫片在线看| 日本乱码高清不卡字幕| 国产婷婷在线视频| 日韩福利视频在线| 日本精品视频网站| 亚洲激情六月丁香| 国内外成人在线视频| 妺妺窝人体色www在线观看| 亚洲人成电影网站色xx| 一道本在线视频| 国产精品久久成人免费观看| 7777精品伊人久久久大香线蕉完整版| 亚洲色图欧美视频| avtt香蕉久久| 水蜜桃一区二区三区| 久久久中精品2020中文| 五月天激情小说综合| 石原莉奈在线亚洲三区| xxxxx在线观看| 一区二区三区 在线观看视| 国产精品另类一区| 日韩国产亚洲欧美| 亚洲xxxx18| 午夜精品一区二区三区免费视频| 欧美aaaaa成人免费观看视频| 中文永久免费观看| 亚洲免费av网| 日韩精品在线看片z| 国产主播一区二区| 一区二区三区伦理片| 美女扒开大腿让男人桶| 狠狠色综合色区| 久久久久免费视频| 国产情侣一区二区| 色欲人妻综合网| 精品欧美一区二区久久久| 中文字幕无码毛片免费看| 国产喷水theporn| 亚洲 日韩 国产第一| 亚洲一区二区三区四区五区中文| 午夜av免费观看| 中文字幕男人天堂| 一区二区三区四区免费| 视频在线观看免费高清| 国产精品jizz在线观看老狼| 成人黄色av播放免费| 日韩欧美电影一二三| 中文字幕精品综合| 国产专区欧美精品| 国产福利小视频| 亚洲天堂日韩av| 在线观看亚洲大片短视频| 黄免费在线观看| 黄色a级片免费看| 91在线短视频| 国产一区私人高清影院| 欧美极品少妇全裸体| 亚洲男人天堂手机在线| 欧美电影免费观看完整版| 在线观看成人小视频| 亚洲欧美日本韩国| 成人视屏免费看| 天堂影院一区二区| 亚洲天堂男人网| 无码人妻av免费一区二区三区| 少妇太紧太爽又黄又硬又爽小说| 午夜性福利视频| aaaaaaaa毛片| 涩涩网站在线看| 91国视频在线| 日本va中文字幕| 国产aaaaa毛片| 9l视频白拍9色9l视频| 国产一级不卡毛片| 日本一区二区免费看| 91精品久久久久久久久青青| 国产精品你懂得| 91在线网站视频| 日韩风俗一区 二区| 精品日韩一区二区| 亚洲男女自偷自拍图片另类| 日韩视频精品在线| 91爱视频在线| 亚洲字幕在线观看| 日韩精品国内| 水蜜桃色314在线观看| 日本道在线视频| 好吊色视频988gao在线观看| 在线国产99| 黄色成人在线免费观看| 91免费版网站在线观看| 久久久久久国产精品mv| 国产日韩精品视频| 91久久精品www人人做人人爽| 国产精品成人aaaaa网站| 国产三级精品网站| 91精品久久久久久久久中文字幕 | 国产v综合v亚洲欧美久久 | 色综合天天色综合| 日韩人妻精品无码一区二区三区| 韩国日本在线视频| 亚洲欧洲日韩综合| 久久精品国产亚洲av久| www.av视频在线观看| 亚洲一级在线播放| 日韩av一区二区在线影视| 99精品视频在线观看免费| 中文字幕电影一区| 日本精品一区二区三区高清| 色噜噜夜夜夜综合网| 91精品中文字幕一区二区三区| 亚洲另类欧美自拍| 欧美又大粗又爽又黄大片视频| 成人片在线免费看| 亚洲午夜激情| 亚洲 欧美 另类人妖| 99久久久无码国产精品不卡| 天天爱天天做天天爽| 久久狠狠婷婷| 国产精品三级电影| 精品高清一区二区三区| 色av成人天堂桃色av| 另类美女黄大片| 茄子视频成人在线观看| 欧美成人手机在线视频| 中文字幕精品三级久久久| 精品中文字幕一区二区小辣椒| 欧美日韩另类字幕中文| 久久激情视频久久| 日本一区免费在线观看| 中文字幕一二三| 97人妻精品一区二区三区软件| 91丝袜美腿高跟国产极品老师| 欧美一区二区三区四区高清| 国产精品丝袜白浆摸在线| 黄www在线观看| 国产精品久久久久久久久久久久久久久久久| 美女视频网站黄色亚洲| 在线观看视频一区| 国产精品女主播| 欧美一级xxxx| 性生交大片免费看女人按摩| 国产午夜一区二区三区| 国产亚洲人成a一在线v站| 精品乱子伦一区二区三区| 国产老熟女伦老熟妇露脸| 午夜成人鲁丝片午夜精品| 欧美三片在线视频观看| 2019国产精品视频| 你懂得在线视频| 精品国产乱码一区二区三 | 日韩av综合网站| 久久一区二区三区av| 一级特黄曰皮片视频| 粉嫩蜜臀av国产精品网站| 欧美伊人精品成人久久综合97 | 一区二区三区在线视频看| а天堂中文在线资源| 99久久免费视频.com| 日韩视频第一页| 手机看片福利日韩| 日批视频在线播放| 欧美精品aⅴ在线视频| 看高清中日韩色视频| 日本一级一片免费视频| 亚洲欧洲日韩av| 九九九久久国产免费| 亚洲免费av一区| 秋霞av亚洲一区二区三| 欧美日韩卡一卡二| 正在播放一区| 99草在线视频| 亚洲第一福利网站| 无码人妻aⅴ一区二区三区日本| 正在播放亚洲精品| 亚洲自拍偷拍九九九| 久久精品国产综合精品| 久久久久久久久久久久久久av| 亚洲综合区在线| 亚洲精品资源美女情侣酒店 | 久久久噜噜噜www成人网| 亚洲精品一区二区三区四区| 精品国产一区二区三区不卡| 亚洲人精品午夜射精日韩 | 麻豆精品在线观看| 综合网日日天干夜夜久久| 91传媒免费视频| 91 中文字幕| 亚洲国产成人一区| 久草青青在线观看| 黄色资源网久久资源365| 欧美激情区在线播放| 亚洲AV无码国产精品| 日韩美女视频19| 国产精品视频在线免费观看| youjizz在线视频| 色综合天天视频在线观看| 中文字幕欧美日韩一区二区| 黄片毛片在线看| 久久久精品一区| ass极品国模人体欣赏| 色久综合一二码| 欧美一级爱爱视频| 日本欧美在线看| 国产精品pans私拍| 亚洲伊人成人网| 亚洲国产91色在线| 天堂久久久久久| 亚洲成人av一区二区三区| 最新精品视频| 国产成人av一区| 国产精品免费视频久久久| 一级淫片免费看| 欧美日本亚洲视频| 国产一级片免费| 亚洲美女性生活视频| 久久久亚洲av波多野结衣| 在线观看国产日韩| 午夜剧场在线免费观看| 亚洲午夜在线视频| 欧美牲交a欧美牲交aⅴ免费真| 日韩精品视频播放| 欧美第一区第二区| 午夜影院免费版| 欧洲精品在线观看| 天天看片天天操| 色噜噜狠狠色综合中国| www.污污视频| 欧美小视频在线观看| av网站在线观看不卡| 亚洲欧美一区二区三区极速播放 | 亚洲一级Av无码毛片久久精品| 一区在线中文字幕| 日韩精品一区二区三区久久| 国产亚洲制服色| 中文字幕av导航| 91麻豆精品在线| 欧美尤物巨大精品爽| 精品毛片在线观看| 成人欧美在线观看| 亚洲精品一区二区三区区别| 91香蕉嫩草影院入口| 久久激情五月激情| 影音先锋欧美资源| ...av二区三区久久精品| 女人喷潮完整视频| 欧美性感美女h网站在线观看免费| 99999精品| 亚洲精品国产拍免费91在线| 韩国av免费观看| 国产精品国产福利国产秒拍| 日韩精品91亚洲二区在线观看| 日本精品一区二区| 亚洲少妇30p| 中文字幕一区二区久久人妻网站| 亚洲女在线观看| 国产理论视频在线观看| 国产免费一区二区三区| 欧美国产丝袜视频| 成人精品小视频| 欧美videofree性高清杂交| 国产精品黄色网| 国产精品麻豆va在线播放| 香蕉视频成人在线| 超薄肉色丝袜足j调教99| 欧美午夜视频一区二区| 色欲一区二区三区精品a片| 2019av中文字幕| 粉嫩一区二区三区在线看| 色婷婷综合久久久久中文字幕| 6080午夜不卡| 狠狠狠狠狠狠狠| 国偷自产av一区二区三区小尤奈| 亚洲综合一区在线| 欧美a在线播放| 国产精品va在线播放我和闺蜜| 成人免费观看男女羞羞视频| av中文字幕网址| 久久精品亚洲国产| 国产一区二区三区国产| 日韩在线第三页| 在线电影av不卡网址| 免费久久精品视频| 午夜精品久久久内射近拍高清| 亚洲精品资源在线| 日本免费新一区视频| 狠狠热免费视频| 日韩有码片在线观看| 东方aⅴ免费观看久久av| 少妇一级淫免费观看| 欧美孕妇性xx| 国产精品国产三级国产| 在线看的片片片免费| 国产精品入口免费| 亚洲一区在线免费观看| 国产午夜麻豆影院在线观看| 日韩在线第一区| 亚洲福利视频二区| 日本va欧美va精品| 色黄视频免费看| 国产成人精品av在线| 亚洲人精品一区| 欧美日韩综合一区二区| 亚洲欧洲一区二区| 亚洲精品美女视频| 国产成人亚洲精品青草天美| 色哟哟精品观看| 91精品视频在线看| 91福利国产成人精品照片| 毛片基地在线观看| 久久婷婷五月综合色国产香蕉| 久久精品一区中文字幕| 久久久久亚洲蜜桃| 天天操天天射天天爽| 亚洲成人自拍| 永久免费看mv网站入口亚洲| 久久婷婷国产综合精品青草| 日韩aaaaaa| 人妻精品无码一区二区三区| 国产91精品久| 亚洲一区二区三区四区中文字幕| 国产精品一区二区人人爽 | 久久久久久免费毛片精品| 久久亚洲av午夜福利精品一区| 蜜臀在线免费观看| 欧美老女人性生活| 亚洲成年人网站在线观看| 日韩在线观看视频一区| 超碰在线超碰在线| 97久久天天综合色天天综合色hd| 日韩欧美国产不卡| 成人国产精品免费网站| 久久国产视频播放| 日韩av片专区| 久久国产精品亚洲va麻豆| 自拍偷拍亚洲精品| 精品久久在线播放| 蜜桃视频污在线观看|