1. 程式人生 > >微信小程式藍芽連線錯誤分析及解決

微信小程式藍芽連線錯誤分析及解決

當開啟手機藍芽後去連線藍芽,會出現連線不上情況,報錯10003,此時不管是重啟小程式還是重新關閉開啟藍芽,都不能正常連線藍芽裝置。10003是微信藍芽連線經常碰到的問題,微信官方給出的文件中就簡單的描述為“connection fail”,備註為“連線失敗”。然而,實際上出現連線失敗的狀況有很多,比如藍芽裝置被佔用或者上次藍芽連線未斷開導致無法連線;根據deviceId連線藍芽時,藍芽裝置未開啟或異常導致無法連線。

既然是因為沒有斷開藍芽連線導致的,那就在關閉手機藍芽時去斷開藍芽;然而,在藍芽狀態監聽中呼叫斷開連線函式,返回錯誤(10001(not available)當前藍芽介面卡不可用)。

沒有找到現成的解決方案,就只有跟蹤程式碼了,在關鍵方法中加日誌;發現,在頂部欄關閉手機藍芽時,小程式中無法斷開藍芽連線,報錯(10001(not available)當前藍芽介面卡不可用);後來又在偶然情況下,清除了藍芽裝置的繫結關係,重新進入藍芽搜尋頁面,發現這樣操作後竟然能成功連線上藍芽。

微信小程式藍芽連線問題分析及解決

上述問題定位中,可以發現應該是沒有斷開上次藍芽連線導致的,重新搜尋藍芽以後再連線可以解決該問題;於是只能考慮重新搜尋藍芽後再連線的方法,在出現10003錯誤後,重新搜尋藍芽,並且在找到對應的裝置後進行藍芽連線;修改程式碼反覆測試,根據日誌顯示,確實是出現了10003,然後進入搜尋模組,搜到指定裝置後進行藍芽連線,之後連線成功,這個方案解決了該問題。

wx.createBLEConnection({

deviceId: deviceId,

success: function (res) { //連線成功

initnotifyCharacteristic(notifyCharacteristic);// 指定特徵值,並進行資料互動

// 已連線

_bthConnectStaus = BTH_STATUS_CONNECTED;

},

fail: function (res) {// 連線藍芽失敗

_bthConnectStaus = BTH_STATUS_DISCONNECT;

// 回撥上層藍芽連線失敗

callback(res.errCode, connectfailed)

}

然後根據fail中的res.errCode判斷是否10003。

if(code ==10003) { //  部分android手機特殊情況下需要重新搜尋才能連線藍芽,此時報錯10003,進行藍芽搜尋(ps:原因可能是系統中將手機藍芽關閉導致連線狀態不能改為斷開,導致下次無法連線同一個裝置)

var timeId = setTimeout(function () {

stopSearchBluetooth();

callback(false, timout)

}, 5000); // 最多搜尋5s

searchBluetooth(function (res) {

if (res.devices === undefined ||res.devices === null) {

return;

}

for (var i = 0; i < res.devices.length; i++) {

if (res.devices[i] &&res.devices[i].deviceId == deviceId) { // 搜尋到該裝置

console.log(searchDeviceAndReConnect:find device and re connect);

clearTimeout(timeId);

stopSearchBluetooth() // 停止搜尋

callback(true, finddevice);// 找到裝置,在回撥函式中連線藍芽

break;

}

}

}, function (res) {

clearTimeout(timeId);

stopSearchBluetooth() // 停止搜尋

callback(false, searchBluetoothfail)

});

}

上述程式碼提供了一個簡單的流程,當連接出現10003錯誤時,搜尋藍芽裝置,找到後,重新連線藍芽。

當然10003,不只是該問題才報的錯,所有,在裝置沒有開啟藍芽時也報10003,而因為加了搜尋邏輯,在裝置沒有開啟藍芽時的提醒就會慢一點(裝置藍芽沒開啟需要提醒使用者開啟裝置藍芽),不過好在這一點影響不大,目前沒有好的思路去解決,後續再慢慢研究。

考慮到只有部分手機出現10003錯誤,所以會先連線一次藍芽,報錯10003才進行,以免其他手機會因為搜尋藍芽導致連線藍芽採集資料的速度減慢;10003出現的情況很多,不過基本上可以從上一次藍芽連線是否結束來定位,重新搜尋藍芽後進行連線也是基於上次藍芽連線未斷開這一情況。

強力推薦小程式培訓學院提供更多小程式製作入門視訊教程,更多資訊關注小程式開發教程

相關推薦

程式連線錯誤分析解決

當開啟手機藍芽後去連線藍芽,會出現連線不上情況,報錯10003,此時不管是重啟小程式還是重新關閉開啟藍芽,都不能正常連線藍芽裝置。10003是微信藍芽連線經常碰到的問題,微信官方給出的文件中就簡單的描述為“connection fail”,備註為“連線失敗”。然而,實際上出現

程式-連線

最近的專案需要使用小程式的藍芽功能與硬體裝置進行連線相互傳送資料指令,聯調過程中發現一些問題,於是想著記錄下來,方便以後檢視! 1.0一般使用藍芽功能肯定是想連線某一個藍芽裝置,所以需要知道這個藍芽裝置的名稱,一般來說都是掃描二維碼連線,那麼當你掃描這個裝置二維碼的時候,就需要去初始化你手機上的藍芽模組了

程式連線傳送資訊

///獲取應用例項 var app = getApp() Page({ data: { lanya: "", state: "", msg: "", sousuo: "", status: "", connectedDeviceId: "",//連線裝置Id

程式 長資料包 分包拆包

https://www.jianshu.com/p/de7bd0093c43 關於 微信小程式藍芽 分包傳送 及 多包傳送 不返回問題   關於分包傳送 20位元組分包,微信小程式支援多於20位元組傳送。但是低功耗藍芽傳輸可能會有問題,建議分包傳送   for

程式 開發 Demo 外掛

微信小程式藍芽操作 由於開發要求,要在微信小程式加上藍芽操作,於是乎就自己寫了個封裝了個藍芽外掛bletool,方便自己以後使用,下面介紹一下使用方法和反饋引數 先來看初始化 整合之後藍芽的操作就變得簡單很多了,先把寫好的bletool.js放到utils包下(具體放哪看你們自己的了

程式通訊中的路由bug

作為一名微信小程式初學者,在工作中總是遇到各種坑,把這些易犯的錯誤整理到CSDN上是一個兩全其美的選擇。今天我就說說在藍芽通訊中路由不能調轉的問題。首先看程式碼: lanya9: function (e) { var that = this; // wx.s

程式通訊模組demo

公司專案用到藍芽和硬體通訊,APP正在開發,弄一個微信小程式藍芽通訊的demo,可能後期會有微信藍芽的專案,第一次搞,遇到2個坑: 1.安卓和蘋果獲取的硬體服務UUID順序不同 2.目前用的這一版 “啟用低功耗藍芽裝置特徵值變化時的 notify 功能”在安卓和蘋果的測試機

程式模組遇到的坑

測試手機: 手機名稱:iPhone 5s 版本:10.3.1 微信版本:6.5.7 藍芽:4.0手機名稱:iPhone 6 版本:10.3.1 微信版本:6.5.7 藍芽:4.0手機名稱:iPhone 6s 版本:10.3.1 微信版本:6.5.7 藍芽:4.2手機名稱

程式開發— 圖片顯示錯誤:VM24966:2

VM24966:2 Failed to load image http://1042065718.debug.open.weixin.qq.com/pages/detail/detail/detail : the server responded with a status of 404

程式檢測網路連線

//檢查網路狀態 function checkNetStatu() { var statu = true wx.getNetworkType({ success: function(res) { var networkType = res.networkType /

程式真機除錯錯誤:setStorageSync:fail Error: Failed To Send Sync

今天真是被這個坑搞得腦虧疼,本來想再storage裡快取下openId和token,但是不管用自己封裝的方法還是微信原生的wx.setStorage方法報錯: setStorageSync:fail Error: Failed To Send Sync  找了很多

程式開發遇到的錯誤總結

1.tabBar不能正確顯示 建議先看看官方文件中多tabBar的說明:點選開啟連結 需要注意的是: 寫在pages陣列中的頁面,第一項代表小程式的初始頁面,這個頁面也必須是tabBar的第一項。後面的就無所謂了。tabBar 是一個數組,只能配置最少2個、最多5個 tab

mpvue開發微程式功能

github地址:https://github.com/dujingya/blueDevice/blob/master/blueDevice.md @[T#使用mpvue 開發小程式過程中 簡單介紹一下微信小程式藍芽連線過程 #在藍芽連線的過程中部分api需要加

程式之一鍵連線wifi

在已知wifi賬號和wifi密碼的情況下,一般採用以下的流程來連線wifi  Wi-Fi 介面呼叫: 1.Android: startWifi —> connectWifi —> onWifiConnected 2.iOS(僅iOS 11及以上版本支援):

解決程式ios請求ssl錯誤問題 windows server 2008 R2預設ssl2.0 改成1.2的

https://support.quovadisglobal.com/kb/a433/how-to-enable-tls-1_2-on-windows-server-2008-r2.aspx 大致意思,更改登錄檔,新增預設項,預設值,重啟伺服器就好 英語好的自己看,不好

程式(看文件寫例項十一)程式課堂寶APP完結總結github地址

一、總結 國慶假期偷懶了幾天,從接到任務到分析到實現總共花了20天左右,終於完成了,點名功能由於要實時監聽需要收費,所以沒有給出程式碼,需要完成的可以自己動手實現。用一張導圖來結束: 二、原始碼地址 所有原始碼已經上傳https://github.com/SoleilLuo/Stu

程式上傳圖片,視訊預覽

wxml <!-- 圖片預覽 --> <view class='preview-warp' wx:if="{{urls}}"> <image src='{{urls}}' /> </view> <view class="prew_video"

程式設定height 100% 不起作用解決辦法

https://blog.csdn.net/wshpwangshiyu/article/details/79744884 問題:微信小程式設定背景圖片高度適應整個螢幕,設定height 100% 不起作用? .container-all{ width: 100%; he

程式程式碼最大限制2M的解決方案

瞭解小程式有最大程式碼量限制之前需要先了解微信小程式的本質:前端近幾年都處於技術爆炸時期, react 最早的是facebook開源的開發框架----react,支援移動網頁和原生app的開發(react native),提倡一次學習,全渠道開發。目的是讓產品研發更聚焦更敏捷,它有三個重要特

程式中的iPhone X適配解決

原因: 微信小程式在適配iphone x 的時候 底部的橫線會出現遮擋如圖: 解決方案: 步驟一:在app.js檔案中 建立全域性變數,然後獲取裝置型號   globalData: {