欧美日韩国产成人在线免费_中文字幕一二三四区_91高清免费观看_色妞一区二区三区_无码人妻久久一区二区三区不卡_国产精品久久激情_蜜臀久久99精品久久久画质超高清_91在线播放国产_国产精品国产精品国产专区_欧美精品一区二区三区国产精品_av网站手机在线观看_视频这里只有精品

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

0755-2979 1990

新聞資訊

電子磅秤稱重設(shè)備 藍(lán)牙低功率對接微信小程序之藍(lán)牙 BLE 踩坑記錄

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

API簡介

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

wx.openBluetoothAdapter 初始化藍(lán)牙適配器wx.closeBluetoothAdapter 關(guān)閉藍(lán)牙模塊wx.getBluetoothAdapterState 獲取本機(jī)藍(lán)牙適配器狀態(tài)wx.onBluetoothAdapterStateChange 監(jiān)聽藍(lán)牙適配器狀態(tài)變化事件

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

wx.startBluetoothDevicesDiscovery 開始搜尋附近的藍(lán)牙外圍設(shè)備wx.stopBluetoothDevicesDiscovery 停止搜尋附近的藍(lán)牙外圍設(shè)備wx.getBluetoothDevices 獲取所有已發(fā)現(xiàn)的藍(lán)牙設(shè)備wx.onBluetoothDeviceFound 監(jiān)聽尋找到新設(shè)備的事件

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

wx.createBLEConnection 連接低功耗藍(lán)牙設(shè)備wx.closeBLEConnection 斷開與低功耗藍(lán)牙設(shè)備的連接

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

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

基本操作流程

最基本的操作流程是:初始化藍(lán)牙適配器→開始搜尋附近的藍(lán)牙外圍設(shè)備→監(jiān)聽尋找到新設(shè)備的事件→連接低功耗藍(lán)牙設(shè)備→獲取藍(lán)牙設(shè)備所有 service 和 characteristic →讀取或?qū)懭氲凸乃{(lán)牙設(shè)備的特征值的二進(jìn)制數(shù)據(jù)值。

踩過的幾個坑

支持藍(lán)牙 API 的版本

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

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

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

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: '當(dāng)前微信版本過低,請更新至最新版本',        showCancel: false
    })
}
else if (app.getPlatform() == 'ios' && this.versionCompare('6.5.6', app.getVersion())) {    wx.showModal({        title: '提示',        content: '當(dāng)前微信版本過低,請更新至最新版本',        showCancel: false
    })
}

安卓 6.0 及以上設(shè)備需打開定位服務(wù)

在測試中發(fā)現(xiàn)安卓 6.0 以上的手機(jī)未打開系統(tǒng)定位服務(wù)時,搜索不到藍(lán)牙設(shè)備,因此最好在頁面中提示用戶打開定位服務(wù)。

wx.onBluetoothDeviceFound 不兼容

安卓及iOS設(shè)備使用 wx.onBluetoothDeviceFound 時會出現(xiàn)不同的返回值,且有概率出現(xiàn)重復(fù)設(shè)備,所以使用以下代碼可以清除重復(fù)的設(shè)備和解決 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])
    }
})

讀取廣播數(shù)據(jù)和特征值

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

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('');
}

發(fā)送大于 20 字節(jié)的數(shù)據(jù)包

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

補(bǔ)充說明

此處補(bǔ)充說明一下,華為榮耀部分機(jī)型、還有藍(lán)綠廠的部分機(jī)型,在藍(lán)牙 API 有深坑,謹(jǐn)慎調(diào)試。另:發(fā)現(xiàn)挺多同學(xué)沒有注意到官方文檔最下方的錯誤碼列表,順便在此處貼出來。

藍(lán)牙錯誤碼 (errCode) 列表

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


用手機(jī)掃描二維碼關(guān)閉
二維碼
欧美肥胖老妇做爰| 日韩视频在线观看一区| 国产精品露出视频| 国内成人精品一区| 色综合亚洲精品激情狠狠| 欧美亚洲一区二区三区四区| 亚洲精品一二三四区| 久久99精品网久久| 亚洲男人天堂久久| 日日夜夜狠狠操| 麻豆亚洲av熟女国产一区二| brazzers精品成人一区| 九九九久久久久久久| 日本十八禁视频无遮挡| 成年人黄色在线观看| 亚洲精品永久www嫩草| 国产aⅴ夜夜欢一区二区三区 | 狠狠躁狠狠躁视频专区| 亚洲成人第一| 奇米影视首页 狠狠色丁香婷婷久久综合 | 亚洲一区二区三区四区五区中文 | av一区二区三| 国产天堂第一区| 国产精品16p| 无码黑人精品一区二区| 日本黄色免费片| 中文字幕在线观看2018| 男人的午夜天堂| 我要看一级黄色录像| 国产三级短视频| 久久久精品成人| 99精品中文字幕| 天美传媒免费在线观看| 成人三级视频在线观看| 男女性高潮免费网站| 日本青青草视频| 激情五月少妇a| 六月丁香激情综合| 一级欧美一级日韩| 亚洲成人一二三区| 日本特黄久久久高潮| 日本欧美在线看| 国产综合久久久久久鬼色| 精品一区二区三区视频在线观看| 日本少妇一区二区| 成人av免费在线| 2024国产精品| 国产精品久久网站| 午夜视频一区在线观看| 欧美视频自拍偷拍| 日韩欧美视频一区| 国产亚洲在线播放| 97精品视频在线观看| 国产精品丝袜高跟| 国产伦精品一区二区三区在线| 久久亚洲一区二区| 精品少妇人欧美激情在线观看| 成人一级片网站| 亚洲熟妇一区二区| 成年人在线免费看片| 精品视频久久久久| 国产夫妻性生活视频| 男女男精品网站| 99精品一区二区| 亚洲欧洲日韩在线| 欧美日韩亚洲综合在线 | 亚洲精品综合久久中文字幕| 久久这里有精品视频| 日产精品99久久久久久| 国产日韩亚洲精品| 久久艹国产精品| 一级黄色电影片| 91插插插插插插| 国产三级自拍视频| 高清不卡在线观看| 亚洲一区二区三区四区不卡| 精品国产乱码久久久久久夜甘婷婷| 日日摸夜夜添一区| 91九色极品视频| 精品无码国产一区二区三区av| 在线观看一区二区三区视频| 国产午夜激情视频| 日本亚洲视频在线| 一区二区三区四区不卡视频 | 精品人伦一区二区三电影 | 欧美精品在线免费| 成人av中文| 欧美少妇性生活视频| 亚洲AV成人无码网站天堂久久| 91麻豆国产在线| 91在线看国产| 欧美一区二区三区免费在线看| 久久影院模特热| 欧美日韩三区四区| 国产精品一级无码| 亚洲免费视频二区| www.欧美色图| 制服丝袜成人动漫| 国产成人高清激情视频在线观看 | 欧美激情日韩图片| 婷婷久久伊人| 捆绑裸体绳奴bdsm亚洲| 97精品人妻一区二区三区| 99视频在线精品| 在线播放日韩导航| 国产精品 欧美在线| 精品久久一二三| 日本一级二级视频| 国产一区二区影院| 91精品国产综合久久福利软件 | 中文字幕乱码一区二区免费| 欧美精品一区二区精品网| 国产有码一区二区| 色七七在线观看| 国产一级18片视频| 26uuu国产在线精品一区二区| 91精品国产高清一区二区三区蜜臀| 国内精品一区二区三区| 91精品国产91久久久久麻豆 主演| 乱老熟女一区二区三区| 免费看精品久久片| 色欧美88888久久久久久影院| 国内成人精品一区| 国产午夜伦鲁鲁| 日韩av电影网址| 久久久久久97三级| 久久亚洲精品成人| 老太脱裤子让老头玩xxxxx| 可以免费看的av毛片| 国产亚洲欧美一级| 久久人人爽人人爽爽久久| 一区二区三区视频| 国产一级特黄毛片| 91免费国产视频网站| 日韩中文字幕在线播放| 欧美中文字幕在线观看视频| 99精品视频99| 亚洲美女视频一区| 国产成人精品视| 国产人妖在线观看| 蜜臀av一区二区在线免费观看| 日韩欧美视频一区| 午夜一区二区三视频在线观看| 国产67194| 欧美激情在线观看视频免费| 九九精品视频在线观看| 亚洲欧美国产日韩综合| 天天躁日日躁狠狠躁伊人| 欧美久久久影院| 欧美激情国产日韩| 久草福利资源在线观看| 亚洲欧洲日韩av| 国产精品久久久久久网站| 日本一区二区三区网站| 国产寡妇亲子伦一区二区| 伊人久久久久久久久久| 无码人妻丰满熟妇区毛片| 天天干天天草天天射| 日韩欧美不卡一区| 国产一级大片免费看| 精品国产av一区二区三区| 欧美一区二区久久| 亚洲五码在线观看视频| 亚洲av无码乱码在线观看性色| 欧美xfplay| 美女黄色免费看| 人妻与黑人一区二区三区| 精品亚洲一区二区三区四区五区 | 久久久精品视频免费| 樱花影视一区二区| 91久久爱成人| 国产一级视频在线播放| 日韩欧美亚洲国产一区| 欧美日韩一区二区视频在线 | 欧美日韩性视频在线| 精品欧美一区二区在线观看视频 | 97精品视频在线| 少妇户外露出[11p]| 国产午夜精品久久| 亚洲自拍小视频免费观看| 国产一级淫片免费| 色国产精品一区在线观看| 先锋影音一区二区三区| 99久久国产免费| 一区二区三区久久精品| 亚洲欧洲日韩综合| 亚洲欧美中日韩| 国产伦精品一区二区三区免| 中文字幕人妻一区二区在线视频| 欧美一区二区三区免费大片 | 精品动漫一区二区三区在线观看| 亚洲熟女乱色一区二区三区| 狠狠色丁香婷婷综合久久片| 97超碰国产精品女人人人爽 | 欧美精品在线观看播放| 国产91视频一区| 色偷偷在线观看| 欧美大片网站在线观看| 伊人久久久久久久久久久久久久| 性做久久久久久久久| 九九久久九九久久| 国产成人日日夜夜| 亚洲一区二区三区四区在线播放| 一级片在线免费播放| 亚洲欧洲xxxx| 四虎影成人精品a片| 狠狠躁夜夜躁人人爽天天天天97 | 自拍视频在线观看一区二区| 日韩欧美精品一区二区三区经典| 久久尤物视频| 国产精品日韩欧美| 一级淫片免费看| 久久久久久网址| 中文字幕日韩一级| 亚洲免费视频网站| 国产调教在线观看| 欧美男同性恋视频网站| 青青草原播放器| 亚洲国产sm捆绑调教视频| www.成年人视频| 久久精品欧美一区二区三区麻豆| 色姑娘综合av| 国产毛片精品视频| 国产一区二区高清不卡| 麻豆一区二区三区| 国产一区不卡在线观看| 久久福利资源站| 久久精品中文字幕一区二区三区 | 网站永久看片免费| 91麻豆精品久久久久蜜臀| 最新免费av网址| 亚洲成年人网站在线观看| 91看片就是不一样| 亚洲自拍偷拍网站| 一区二区xxx| 色综合久久久久网| 黄色在线免费播放| 日韩一区二区高清| 性爱在线免费视频| 一本大道久久加勒比香蕉| 国产特黄大片aaaa毛片| 美女扒开尿口让男人操亚洲视频网站| 精品视频久久久久| 久久久久久综合网天天| 99在线精品视频免费观看20| 国产精品视频在线观看| 久久婷婷久久| 日本午夜精品一区二区| 国产日韩欧美一区二区三区乱码 | 成人18视频在线播放| 天天久久人人| 国产精品毛片大码女人| 亚洲 中文字幕 日韩 无码| 狠狠做深爱婷婷久久综合一区| 黑人巨大猛交丰满少妇| 精品欧美久久久| 国产在线成人精品午夜| 91精品国产91久久久久福利| 久久久久久久欧美精品| 色综合666| 中文字幕亚洲精品在线观看| aaa一级黄色片| 91精品国产综合久久精品麻豆| 一区二区三区影视| 午夜精品久久久久久99热软件| 欧美性受xxxx狂喷水| 日韩一区不卡| 亚洲综合精品自拍| 999福利视频| 97涩涩爰在线观看亚洲| 久久超碰97中文字幕| 无码人妻精品一区二区蜜桃网站| 午夜视频在线观看一区二区三区| 亚洲狠狠婷婷综合久久久久图片| 国产午夜精品视频免费不卡69堂| 一级片视频播放| 久久久久久九九| 亚洲激情av在线| 中文字幕影片免费在线观看| 国产亚洲精品日韩| 人人妻人人澡人人爽精品日本| 亚洲人成网站在线观看播放 | 少妇高潮一69aⅹ| 中文字幕在线看视频国产欧美在线看完整| 夜夜爽8888| 日本三级中国三级99人妇网站| 一区二区三区久久| 欧美色图17p| 国产精品久久婷婷六月丁香| 91视频在线看| 欧美大片免费播放器| 精品中文字幕在线| 大桥未久av一区二区三区中文| 国产综合av在线| 亚洲第一黄色网| 少妇人妻精品一区二区三区| 91亚洲精品国产| 日韩欧美123| 欧美视频在线观看一区二区三区| 国内精品国产三级国产99| 欧美日韩亚洲丝袜制服| 一区两区小视频| 亚洲成色www久久网站| 欧美日韩国产一级| ,一级淫片a看免费| 妞干网这里只有精品| 日韩午夜在线影院| 少妇高潮久久久| 久久久免费视频网站| 神马国产精品影院av| 国产a级毛片一区| 亚洲色图14p| 国产日韩中文字幕| 午夜婷婷国产麻豆精品| 欧美一区二区三区网站| 香蕉视频在线网址| 亚洲国产精品国自产拍av秋霞| 婷婷在线免费观看| www,av在线| 欧美最猛性xxxxx(亚洲精品)| 国产精品免费久久| 日本少妇激情舌吻| 日本成人性视频| 亚洲精品少妇网址| 精品一区精品二区高清| 在线观看一区二区三区四区| 国产精品久久久久久久久久东京| 亚洲人成电影网站色mp4| www..com国产| 久久观看最新视频| 色综合伊人色综合网| 2024国产精品视频| 国产精品99re| 久久这里只有精品23| 欧美精品日韩www.p站| 国产精品美女一区二区三区| 成人精品在线看| 中国丰满熟妇xxxx性| 伊人久久男人天堂| 久久久精品国产99久久精品芒果| 欧产日产国产v| 人妻激情另类乱人伦人妻| www.亚洲人.com| 亚洲色图丝袜美腿| 国产女人18毛片水18精| 亚洲一级片网站| 51国产成人精品午夜福中文下载| 欧美日韩高清影院| 国产乱人伦偷精品视频不卡| 青青青在线免费观看| 中文字幕在线乱| 久久久久久久久国产精品| 亚洲风情在线资源站| 全国男人的天堂网| 国产伦精品一区二区三区妓女 | 国产老头老太做爰视频| 欧美日韩视频免费在线观看| 欧美大胆a视频| 五月天精品一区二区三区| 亚洲精品国产片| 国产手机在线观看| 伊甸园精品99久久久久久| 久久av在线播放| 欧美性xxxx极品hd满灌| 国产呦萝稀缺另类资源| 久一视频在线观看| 在线观看国产一级片| 国产中文一区二区| 欧美成人三级视频网站| 欧美丝袜美女中出在线| 精品一区精品二区高清| 国产无遮挡又黄又爽又色| wwww.国产| 欧美日韩一区二| 国模吧一区二区| 4438成人网| 亚洲国产精品激情在线观看| 国产极品999| 欧美日韩国产黄色| 97xxxxx| 久久99九九| 欧美激情一区二区三区高清视频| 欧美唯美清纯偷拍| 国产亚洲欧美激情| 免费观看a视频| 在线观看成人毛片| 亚洲欧洲日产国码无码久久99 | 91sa在线看| 日韩一本二本av| 一区二区三区欧美激情| 久草在线在线精品观看| 成人免费视频国产免费| 加勒比精品视频| 黄色一级片播放| 欧美一级爱爱| 国产精品高清在线观看| 国产亚洲视频在线| 91精品国产综合久久精品性色 | 成人性生交大片免费看中文 | 日韩日韩日韩日韩日韩| 成人av电影免费| 韩国精品美女www爽爽爽视频| 精品成人一区二区| 亚洲成av人片在线| 国产午夜精品美女毛片视频| 麻豆精品新av中文字幕| 国产免费无遮挡| 中文字幕免费观看| 农村妇女精品一区二区| av中文字幕免费观看|