首頁 微信小程式 小程式開發 淺談小程式開發中藍牙連線錯誤分析及解決方法

淺談小程式開發中藍牙連線錯誤分析及解決方法

Apr 25, 2020 am 09:32 AM
小程式

淺談小程式開發中藍牙連線錯誤分析及解決方法

當打開手機藍牙後去連接藍牙,會出現連接不上情況,報錯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出現的情況很多,不過基本上可以從上一次藍牙連線是否結束來定位,重新搜尋藍牙後進行連線也是基於上次藍牙連線未中斷此狀況。

推薦:《小程式開發教學

以上是淺談小程式開發中藍牙連線錯誤分析及解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用Python開發微信小程式 使用Python開發微信小程式 Jun 17, 2023 pm 06:34 PM

使用Python開發微信小程式

小程式能用react嗎 小程式能用react嗎 Dec 29, 2022 am 11:06 AM

小程式能用react嗎

實作微信小程式中的卡片翻轉特效 實作微信小程式中的卡片翻轉特效 Nov 21, 2023 am 10:55 AM

實作微信小程式中的卡片翻轉特效

uniapp如何實現小程式和H5的快速轉換 uniapp如何實現小程式和H5的快速轉換 Oct 20, 2023 pm 02:12 PM

uniapp如何實現小程式和H5的快速轉換

支付寶上線「漢字拾光-生僻字」小程序,用於徵集、補充生僻字庫 支付寶上線「漢字拾光-生僻字」小程序,用於徵集、補充生僻字庫 Oct 31, 2023 pm 09:25 PM

支付寶上線「漢字拾光-生僻字」小程序,用於徵集、補充生僻字庫

小程式備案怎麼操作 小程式備案怎麼操作 Sep 13, 2023 pm 04:36 PM

小程式備案怎麼操作

Java語言中的微信小程式開發介紹 Java語言中的微信小程式開發介紹 Jun 09, 2023 pm 10:40 PM

Java語言中的微信小程式開發介紹

用Python編寫簡單的聊天程式教程 用Python編寫簡單的聊天程式教程 May 08, 2023 pm 06:37 PM

用Python編寫簡單的聊天程式教程

See all articles