在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 應用軟件教程 > 詳細頁面

微信小程序如何完成藍牙連接?(代碼示例)

微信小程序如何完成藍牙連接?(代碼示例)

更新時間:2025-09-20 文章作者:未知 信息來源:網絡 閱讀次數:

微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一...
微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一項門檻非常高的創新,經過將近兩年的發展,已經構造了新的小程序開發環境和開發者生態。
微信小程序如何實現藍牙連接?本篇文章給大家帶來的內容是介紹微信小程序實現藍牙連接的方法(步驟)。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。

最近的項目需要使用小程序的藍牙功能與硬件設備進行連接相互傳送數據指令,聯調過程中發現一些問題,于是想著記錄下來,方便以后查看!

1、初始化藍牙設備

一般使用藍牙功能肯定是想連接某一個藍牙設備,所以需要知道這個藍牙設備的名稱,一般來說都是掃描二維碼連接,那么當你掃描這個設備二維碼的時候,就需要去初始化你手機上的藍牙模塊了

/**
* 初始化藍牙設備
*/
  initBlue:function(){
    var that = this;
    wx.openBluetoothAdapter({//調用微信小程序api 打開藍牙適配器接口
      success: function (res) {
        // console.log(res)
        wx.showToast({
          title: '初始化成功',
          icon: 'success',
          duration: 800
        })
        that.findBlue();//2.0
      },
      fail: function (res) {//如果手機上的藍牙沒有打開,可以提醒用戶
        wx.showToast({
          title: '請開啟藍牙',
          icon: 'fails',
          duration: 1000
        })
      }
    })
  },

2、搜索藍牙設備

手機藍牙初始化成功之后,就會去搜索周邊的藍牙設備

/**
*開始搜索藍牙設備
*/
findBlue(){
    var that = this
    wx.startBluetoothDevicesDiscovery({
      allowDuplicatesKey: false,
      interval: 0,
      success: function (res) {
       
        wx.showLoading({
          title: '正在搜索設備',
        })
        that.getBlue()//3.0
      }
    })
  },

3、獲取藍牙設備信息

搜索藍牙設備之后,需要獲取搜索到的藍牙設備信息,微信小程序提供了兩個方法可以獲取搜索到的藍牙設備信息,分別是:

wx.onBluetoothDeviceFound:監聽尋找到新設備的事件 ,表示只要找到一個新的藍牙設備就會調用一次該方法。

wx.getBluetoothDevices:獲取在藍牙模塊生效期間所有已發現的藍牙設備,包括已經和本機處于連接狀態的設備

看兩個方法的介紹我們知道他們的區別,但是不了解他們的區別會造成什么樣的問題?

第一次我使用的是wx.onBluetoothDeviceFound方法進行聯調,發現一切正常,由于調試的時候就只有一臺設備,發現第二次重新掃碼這個藍牙設備的時候,找不到這個設備了,因為對這個方法來說,這不是一個新的設備,以前連接上過;或者當你因為某些原因藍牙傳送數據指令的時候出錯了需要重新連接,再次連接的時候也找不到當前設備,還是同樣的原因,因為當前設備對這個方法來說不是一個新設備

所以后來我就用了wx.getBluetoothDevices方法

/**
  * 獲取搜索到的設備信息
 */
  getBlue(){
    var that = this
    wx.getBluetoothDevices({
      success: function(res) {
        wx.hideLoading();
        for (var i = 0; i < res.devices.length; i++){
           /*that.data.inputValue:表示的是需要連接的藍牙設備ID,簡單點來說就是我想要連接這個藍牙設備,所以我去遍歷我搜索到的藍牙設備中是否有這個ID*/
          if (res.devices[i].name == that.data.inputValue || res.devices[i].localName == that.data.inputValue){
            that.setData({
              deviceId: res.devices[i].deviceId,
              consoleLog: "設備:" + res.devices[i].deviceId,
            })
            that.connetBlue(res.devices[i].deviceId);//4.0
            return;
          }
        }
      },
      fail: function(){
        console.log("搜索藍牙設備失敗")
      }
    })
  },

4、連接藍牙設備

通過上一個步驟找到這個藍牙之后,通過藍牙設備的id進行藍牙連接

/**
  * 獲取到設備之后連接藍牙設備
 */
  connetBlue(deviceId){                    
    var that = this;
    wx.createBLEConnection({
      // 這里的 deviceId 需要已經通過 createBLEConnection 與對應設備建立鏈接
      deviceId: deviceId,//設備id
      success: function (res) {
        wx.showToast({
          title: '連接成功',
          icon: 'fails',
          duration: 800
        })
        console.log("連接藍牙成功!")
        wx.stopBluetoothDevicesDiscovery({
          success: function (res) {
            console.log('連接藍牙成功之后關閉藍牙搜索');
          }
        })
        that.getServiceId()//5.0
      }
    })
  },

5、獲取服務uuid

連接上需要的藍牙設備之后,獲取這個藍牙設備的服務uuid

getServiceId(){
    var that = this
    wx.getBLEDeviceServices({
      // 這里的 deviceId 需要已經通過 createBLEConnection 與對應設備建立鏈接
      deviceId: that.data.deviceId,
      success: function (res) {
        var model = res.services[0]
        that.setData({
          services: model.uuid
        })
        that.getCharacteId()//6.0
      }
    })
  },

6、通過id查看藍牙設備的特征值

如果一個藍牙設備需要進行數據的寫入以及數據傳輸,就必須具有某些特征值,所以通過上面步驟獲取的id可以查看當前藍牙設備的特征值

getCharacteId(){
    var that = this 
    wx.getBLEDeviceCharacteristics({
      // 這里的 deviceId 需要已經通過 createBLEConnection 與對應設備建立鏈接
      deviceId: that.data.deviceId,
      // 這里的 serviceId 需要在上面的 getBLEDeviceServices 接口中獲取
      serviceId: that.data.services,
      success: function (res) {
        for (var i = 0; i < res.characteristics.length; i++) {//2個值
          var model = res.characteristics[i]
          if (model.properties.notify == true) {
            that.setData({
              notifyId: model.uuid//監聽的值
            })
            that.startNotice(model.uuid)//7.0
          }
          if (model.properties.write == true){
            that.setData({
              writeId: model.uuid//用來寫入的值
            })
          }
        }
      }
    })
  },

7、從后臺服務器獲取的指令

startNotice(uuid){
    var that = this;
    wx.notifyBLECharacteristicValueChange({
      state: true, // 啟用 notify 功能
      // 這里的 deviceId 需要已經通過 createBLEConnection 與對應設備建立鏈接 
      deviceId: that.data.deviceId,
      // 這里的 serviceId 需要在上面的 getBLEDeviceServices 接口中獲取
      serviceId: that.data.services,
      // 這里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中獲取
      characteristicId: uuid,  //第一步 開啟監聽 notityid  第二步發送指令 write
      success: function (res) {
      
          // 設備返回的方法
          wx.onBLECharacteristicValueChange(function (res) {
              // 此時可以拿到藍牙設備返回來的數據是一個ArrayBuffer類型數據,所以需要通過一個方法轉換成字符串
              var nonceId = that.ab2hex(res.value) 
      //拿到這個值后,肯定要去后臺請求服務(當前步驟根據當前需求自己書寫),獲取下一步操作指令寫入到藍牙設備上去
      
     wx.request({
                    method: "POST",
         
                    data: {
                      xx:nonceId
                    },
                    url: url,
                    success: (res) => {
                      //res.data.data.ciphertext:我這邊服務返回來的是16進制的字符串,藍牙設備是接收不到當前格式的數據的,需要轉換成ArrayBuffer
                      that.sendMy(that.string2buffer(res.data.data.ciphertext))//8.0
                      // 服務器返回一個命令  我們要把這個命令寫入藍牙設備
                    }
                   })
  }
    })
  },

8、將從后臺服務獲取的指令寫入到藍牙設備當中

sendMy(buffer){
    var that = this 
    wx.writeBLECharacteristicValue({
      // 這里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中獲取
      deviceId: that.data.deviceId,
      // 這里的 serviceId 需要在上面的 getBLEDeviceServices 接口中獲取
      serviceId: that.data.services,
      // 這里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中獲取
      characteristicId: that.data.writeId,//第二步寫入的特征值
      // 這里的value是ArrayBuffer類型
      value: buffer,
      success: function (res) {
        console.log("寫入成功")
      },
      fail: function () {
        console.log('寫入失敗')
      },
      complete:function(){
        console.log("調用結束");
      }
    })
  },

注:下面是需要使用到的兩個格式相互轉換的方法

/**
* 將字符串轉換成ArrayBufer
*/
  string2buffer(str) {
    let val = ""
    if(!str) return;
    let length = str.length;
    let index = 0;
    let array = []
    while(index < length){
      array.push(str.substring(index,index+2));
      index = index + 2;
    }
    val = array.join(",");
    // 將16進制轉化為ArrayBuffer
    return new Uint8Array(val.match(/[\da-f]{2}/gi).map(function (h) {
      return parseInt(h, 16)
    })).buffer
  },
 
  /**
   * 將ArrayBuffer轉換成字符串
   */
  ab2hex(buffer) {
    var hexArr = Array.prototype.map.call(
      new Uint8Array(buffer),
      function (bit) {
        return ('00' + bit.toString(16)).slice(-2)
      }
    )
    return hexArr.join('');
  },

注:以上是藍牙連接的全部流程,但是我們在實際使用中肯定不會這么順暢,而且藍牙發送指令的設備都會有一個特性,就是當前藍牙設備有人連接上之后,其他人是搜索不到這個藍牙設備的,所以你需要考慮在某些個特殊情況,代碼里需要主動斷開藍牙連接把設備釋放出來供其他用戶使用,還有就是將指令寫入藍牙設備的時候很容易出問題,所以要寫個回調去多次寫入,保證成功性!

總結:以上就是本篇文章的全部內容,希望能對大家的學習有所幫助。。

相關視頻教程推薦:

微信小程序開發文檔

微信小程序全方位深度解析視頻教程

微信小程序開發CMS系統視頻教程

以上就是微信小程序怎么實現藍牙連接?(代碼示例)的詳細內容,更多請關注php中文網其它相關文章!


小程序是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應用。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 日韩精品一区中文字幕| 日韩欧美在线播放视频| 日韩第一页在线观看| 免费av不卡在线| 特级黄色片视频| 免费国产黄色网址| 天堂在线资源视频| 超碰超碰超碰超碰超碰| 黄色高清无遮挡| 欧美婷婷精品激情| 毛片av在线播放| xx欧美撒尿嘘撒尿xx| 福利视频免费在线观看| 亚洲综合欧美在线| 国产一区二区在线视频播放| 亚洲欧美天堂在线| 成年人在线观看视频免费| 97超碰国产精品| 999久久久精品视频| 免费在线激情视频| 一二三四视频社区在线| 韩国黄色一级大片| 色黄视频免费看| 亚洲成人av免费看| 无码少妇一区二区三区芒果| 波多野结衣综合网| 草草草视频在线观看| 中文字幕第50页| 国产精品亚洲天堂| 男人的天堂视频在线| 超碰在线免费av| 天堂在线精品视频| 亚洲第一精品区| 午夜啪啪免费视频| 色爽爽爽爽爽爽爽爽| 国产av不卡一区二区| 欧美少妇一级片| 高清欧美精品xxxxx| 日韩人妻无码精品久久久不卡| 久久精品xxx| 免费av网址在线| 自拍偷拍21p| 男人的天堂成人| 国产一二三区在线播放| 日日橹狠狠爱欧美超碰| 国产黄色特级片| 成人黄色一级大片| 日韩精品视频在线观看视频| 五十路熟女丰满大屁股| 国产精品视频分类| 天堂av免费看| 欧美xxxxx在线视频| 婷婷视频在线播放| 国模无码视频一区二区三区| 欧美伦理片在线看| 69精品丰满人妻无码视频a片| 成年人午夜视频在线观看| 91制片厂毛片| www.亚洲天堂网| 黄色网址在线免费看| 国产三区在线视频| 日韩极品视频在线观看| 校园春色 亚洲色图| 男女啪啪免费视频网站| 中文字幕一区二区在线观看视频 | 欧美精品一区免费| 国产精品久久久毛片| 免费在线观看视频a| 波多野结衣 作品| 91社在线播放| 国产成人在线综合| 99热手机在线| 韩国一区二区av| 亚洲中文字幕久久精品无码喷水| 黄色www网站| 日本黄网站免费| 熟女少妇在线视频播放| 福利在线小视频| 午夜天堂在线视频| 少妇高潮流白浆| www.夜夜爱| 国产av国片精品| 91国视频在线| 成人免费观看毛片| 国产一二三四在线视频| 午夜xxxxx| 岛国大片在线播放| 无码人妻丰满熟妇区毛片| 日韩一级片播放| 人人爽人人爽av| 精品人妻大屁股白浆无码| 六月婷婷激情综合| 国产成人无码一二三区视频| 麻豆一区二区三区视频| 一本色道久久88亚洲精品综合| 久草视频这里只有精品| 日韩精品一区二区三区不卡 | 黄色三级视频在线播放| 特级西西444| 宅男噜噜噜66国产免费观看| 亚洲一级片免费观看| 日韩日韩日韩日韩日韩| 在线观看免费视频污| 亚洲成熟丰满熟妇高潮xxxxx| aaa免费在线观看| www.cao超碰| 天天影视综合色| 粉嫩av一区二区三区天美传媒 | 亚洲一级免费在线观看| 一级特黄妇女高潮| 57pao国产成永久免费视频| 黑人糟蹋人妻hd中文字幕| a级片一区二区| 日本xxx免费| 小明看看成人免费视频| 哪个网站能看毛片| 免费成人在线视频网站| 99er在线视频| 国产91在线亚洲| 国产专区在线视频| 91精品一区二区三区四区| 奇米777在线视频| 国产成年人视频网站| 日本美女高潮视频| 亚洲久久中文字幕| 中文字幕一区二区在线观看视频| 在线观看岛国av| 欧美日韩一级在线| 日韩精品一区二区免费| 咪咪色在线视频| 国产色一区二区三区| www.99热这里只有精品| 99re在线视频免费观看| 欧美性受xxxxxx黑人xyx性爽| 91aaa精品| 激情五月宗合网| 中文字幕乱码人妻综合二区三区 | 欧美一级特黄aaa| 亚洲五月激情网| 欧美性大战久久久久xxx| 高清av免费看| 国产妇女馒头高清泬20p多| 99色精品视频| 免费看啪啪网站| 少妇性l交大片| 屁屁影院ccyy国产第一页| 成人黄色一区二区| www.日本三级| 天天爱天天做天天操| 免费看涩涩视频| 国产男女激情视频| 欧美激情亚洲天堂| 免费黄频在线观看| 亚洲最大综合网| 国产精品成人久久电影| 性久久久久久久久久久久久久| 欧美视频免费播放| 久久久久99精品成人片| 九九九久久久久久久| av免费一区二区| 亚洲欧美在线精品| 高清av免费看| 粉色视频免费看| 一级淫片在线观看| 第四色婷婷基地| jizz大全欧美jizzcom| 欧美伦理片在线看| 天天碰免费视频| 天天干天天色天天干| 五月婷婷之综合激情| 青青草精品视频在线观看| 免费看污黄网站| www.午夜色| 人妻夜夜添夜夜无码av| 伊人成色综合网| 午夜免费福利视频在线观看| 97超碰人人爽| 天堂av在线中文| 亚洲色成人www永久在线观看| 男人操女人逼免费视频| 国产又大又黄又粗的视频| 欧美伦理片在线观看| 成人污网站在线观看| 欧美日韩第二页| www亚洲国产| 成年人视频观看| 美女黄色片网站| 男人亚洲天堂网| 北条麻妃亚洲一区| 人妻精品无码一区二区三区| 不卡的在线视频| 国产午夜大地久久| 伊人色在线观看| 欧美成人三级在线视频| 手机在线视频一区| 国产淫片av片久久久久久| 2018国产在线| 欧美高清中文字幕| 91精品国产吴梦梦| 亚洲综合123|