国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

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

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

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

更新時間: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中文網其它相關文章!


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

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

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        久久久久国产一区二区三区四区| 91黄色在线观看| www.成人在线| 亚洲女人的天堂| 69成人精品免费视频| 男男gaygay亚洲| 欧美激情一区二区三区不卡 | 亚洲成人黄色小说| 欧美一级久久久久久久大片| 国产精品亚洲视频| 亚洲一线二线三线视频| 欧美日韩一本到| 国产电影精品久久禁18| 亚洲精品国产视频| 欧美成人一区二区三区片免费| 成人开心网精品视频| 亚洲电影激情视频网站| 国产亚洲精品aa| 欧美视频在线一区| 国产成人精品免费一区二区| 亚洲国产一区二区在线播放| 国产日韩欧美精品电影三级在线 | 欧美人与性动xxxx| 成人免费黄色大片| 狂野欧美性猛交blacked| 亚洲欧洲性图库| 久久久久九九视频| 欧美一区二区三区在线观看 | 国产成人在线看| 亚洲主播在线播放| 国产精品久久久久桃色tv| 日韩色在线观看| 欧美视频中文字幕| 色综合天天综合网国产成人综合天 | 樱桃视频在线观看一区| 久久亚洲私人国产精品va媚药| 欧美唯美清纯偷拍| 99riav一区二区三区| 国产91精品入口| 国产一区二区h| 日本va欧美va欧美va精品| 亚洲一区中文日韩| 亚洲色欲色欲www| 国产精品久99| 国产精品无码永久免费888| 欧美成人综合网站| 日韩精品一区二| 欧美mv日韩mv国产网站| 欧美成人精品1314www| 日韩欧美123| 91精品国产全国免费观看| 欧美日韩情趣电影| 在线不卡欧美精品一区二区三区| 欧美日韩二区三区| 欧美一二三区在线观看| 欧美精品一区二区蜜臀亚洲| 精品国产乱码久久久久久夜甘婷婷| 91精品国产综合久久国产大片| 欧美一区二区高清| 精品国精品国产| 国产视频一区在线观看| 中文乱码免费一区二区| 中文字幕人成不卡一区| 日韩理论片网站| 亚洲综合色丁香婷婷六月图片| 午夜精彩视频在线观看不卡| 日韩av中文字幕一区二区三区| 欧美96一区二区免费视频| 国产又粗又猛又爽又黄91精品| 国产主播一区二区| 99v久久综合狠狠综合久久| 欧美日韩一级二级| 欧美成人bangbros| 中文字幕在线一区| 亚洲福利视频一区二区| 黄网站免费久久| 日本久久一区二区| 日韩午夜激情免费电影| 国产精品丝袜黑色高跟| 亚洲午夜视频在线| 国产乱色国产精品免费视频| 色综合天天天天做夜夜夜夜做| 欧美午夜精品一区二区三区| 精品国产百合女同互慰| 一区二区三区在线看| 麻豆国产精品777777在线| 国产成人在线电影| 欧美精品在欧美一区二区少妇| 国产日韩成人精品| 视频一区欧美日韩| av不卡一区二区三区| 日韩三级视频中文字幕| 综合久久久久综合| 九九国产精品视频| 色就色 综合激情| 国产日韩亚洲欧美综合| 日韩高清在线不卡| 91电影在线观看| 中国色在线观看另类| 久久精品国产在热久久| 欧美午夜片在线观看| 国产精品日韩精品欧美在线| 久久精品99国产国产精| 91高清视频免费看| 中文字幕一区二区三区在线观看| 免费观看日韩av| 在线一区二区三区做爰视频网站| 国产三级欧美三级| 久久精品噜噜噜成人88aⅴ| 欧美色爱综合网| 18欧美亚洲精品| 成人网男人的天堂| 亚洲精品一区二区三区福利| 日本中文字幕一区二区视频| 在线观看日韩毛片| 亚洲女同ⅹxx女同tv| 成人精品一区二区三区四区 | 欧美艳星brazzers| 亚洲欧洲在线观看av| 国产成人精品亚洲午夜麻豆| 欧美电影免费观看完整版 | 亚洲乱码中文字幕| www.欧美色图| 中文字幕一区日韩精品欧美| 成人免费av网站| 中文字幕在线不卡一区| 成人免费视频一区| 亚洲欧洲性图库| 91麻豆123| 亚洲成人精品一区二区| 欧美日韩久久一区| 丝袜亚洲另类欧美| 欧美一卡2卡3卡4卡| 国产一区二区三区免费| 国产亚洲欧美中文| 99综合电影在线视频| 亚洲精选在线视频| 欧美精品九九99久久| 精品无人区卡一卡二卡三乱码免费卡| 精品福利在线导航| 国产精华液一区二区三区| 欧美国产日本视频| 91福利在线免费观看| 日本不卡123| 国产欧美视频在线观看| 97久久精品人人澡人人爽| 亚洲精品一二三| 在线播放91灌醉迷j高跟美女| 精品一区二区三区av| 国产精品免费aⅴ片在线观看| 91色porny在线视频| 日韩黄色片在线观看| 久久毛片高清国产| 一本大道av一区二区在线播放| 亚洲成人精品影院| 久久久亚洲欧洲日产国码αv| 91麻豆国产福利精品| 免费观看一级欧美片| 国产精品国产三级国产aⅴ原创| 欧美日韩在线播| 国产精品资源站在线| 一区二区三区国产精品| 日韩精品一区二区在线| 色婷婷亚洲综合| 国产一区在线不卡| 亚洲一级片在线观看| 久久蜜臀中文字幕| 在线不卡一区二区| 99精品1区2区| 国模娜娜一区二区三区| 偷拍一区二区三区四区| 国产精品毛片无遮挡高清| 3atv在线一区二区三区| 色综合夜色一区| 成人一区二区三区视频在线观看| 午夜久久久久久| 亚洲欧美电影一区二区| 久久久www成人免费无遮挡大片| 欧美美女直播网站| 色综合久久中文综合久久牛| 国产精品系列在线观看| 日本视频在线一区| 亚洲伊人伊色伊影伊综合网| 国产精品理论片在线观看| 亚洲精品在线观| 日韩久久免费av| 欧美电影免费观看高清完整版在| 日本高清不卡在线观看| 成人av电影在线| 国产成人免费xxxxxxxx| 国内精品久久久久影院一蜜桃| 日韩精品色哟哟| 日本视频一区二区三区| 丝袜亚洲另类欧美| 天使萌一区二区三区免费观看| 一区二区三区.www| 亚洲精品日韩专区silk| 亚洲精品欧美二区三区中文字幕| 成人欧美一区二区三区黑人麻豆 | 亚洲综合色视频|