熊晨沣藍牙實戰--小程序藍牙連接2.0 - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

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

知識

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

熊晨沣藍牙實戰--小程序藍牙連接2.0

發表時間:2021-4-22

發布人:葵宇科技

浏覽次數:59

微信小程序藍牙連接2.0說明:

1、本版本區分了ANDROID和(hé)IOS系統下(xià)藍牙連接的不同方式。 
2、兼容了更多情況下(xià)的鍊接包括:

(1)未開啟設備藍牙,當監聽到開啟了藍牙後自動(dòng)開始連接。 
(2)初始化藍牙失敗後每3000ms自動(dòng)重新初始化藍牙适配器(qì)。 
(3)安卓端開啟藍牙适配器(qì)掃描失敗,每3000ms自動(dòng)重新開啟。 
(4)IOS端獲取已連接藍牙設備為空,每3000ms自動(dòng)重新獲取。 
(5)安卓端藍牙開始鍊接後中(zhōng)斷掃描,連接失敗了,重新開始掃描。 
(6)IOS端開始連接設備後,停止獲取已連接設備,連接失敗自動(dòng)重新開啟獲取。 
(7)連接成功後,關(guān)閉系統藍牙,藍牙适配器(qì)重置。 
(8)連接成功後,關(guān)閉系統藍牙,再次打開藍牙,自動(dòng)重新開始連接。 
(9)連接成功後,關(guān)閉目标藍牙設備,自動(dòng)重新開始掃描(獲取)。 
(10)連接成功後,最小化小程序(連接未中(zhōng)斷),打開小程序顯示已連接。 
(11)連接成功後,殺掉小程序進程,連接關(guān)閉,自動(dòng)重新開始掃描(獲取)。

3、想起來了再來更新....。 
4、流程圖,明天或後天或...誰有空幫我畫一下(xià)也行。

我的連接是在App.js中(zhōng)做的。 
在App.js中(zhōng)的onLaunch觸發是調用 init()方法。 
init代碼:

  1. init: function (n) {
  2. this.list = [];
  3. this.serviceId = "6E400001-B5A3-F393-E0A9-E50E24DCCA9E";
  4. this.serviceId_2 = "00001803-0000-1000-8000-00805F9B34FB";
  5. this.serviceId_3 = "00001814-0000-1000-8000-00805F9B34FB";
  6. this.serviceId_4 = "00001802-0000-1000-8000-00805F9B34FB";
  7. this.serviceId_5 = "00001804-0000-1000-8000-00805F9B34FB";
  8. this.serviceId_6 = "00001535-1212-EFDE-1523-785FEABCD123";
  9. this.characterId_write = "6E400042-B5A3-F393-E0A9-E50E24DCCA9E";
  10. this.characterId_read = "6E400012-B5A3-F393-E0A9-E50E24DCCA9E";
  11. this.connectDeviceIndex = 0;
  12. this.isGettingConnected = false;
  13. this.isDiscovering = false;
  14. this.isConnecting = false;
  15. this.connectedDevice = {};
  16. console.log('init state', this.connectedDevice.state);
  17. if (!this.connectedDevice.state || n == 200) {
  18. this.connectedDevice.state = false;
  19. this.connectedDevice.deviceId = '';
  20. this.adapterHasInit = false
  21. }
  22. this.startConnect();
  23. }

說明:

1、 serviceId_2~6 是我已知的想要連接的藍牙設備的serviceId可(kě)以隻寫一個(gè)。 
2、characterId_write 是我已知的想要連接的藍牙設備寫入數據的特征值。 
3、characterId_read是我已知的想要連接的藍牙設備讀取數據的特征值。 
(以上3個(gè)都是為了做比對,真實的操作按照獲取到的sericeid, characterid為準)。 
4、connectedDevice 是已連接了的設備信息對象。

init完成後開始調用連接 startConnect();

startConnect代碼:

  1. startConnect: function () {
  2. var that = this;
  3. if (that.connectedDevice.state) return;
  4. that.connectedDevice.deviceId = "";
  5. that.connectedDevice.state = false;
  6. // 如(rú)果适配器(qì)已經初始化不在調用初始化(重複初始化會報錯)
  7. if (this.adapterHasInit == undefined || this.adapterHasInit) return;
  8. wx.showLoading({
  9. title: '初始化藍牙',
  10. duration: 2000
  11. });
  12. // 開啟藍牙适配器(qì)狀态監聽

相關(guān)案例查看更多