全國電話咨詢熱線 0760-8788 9208;馮生13420055165

微信小程序藍牙功能開發

發布時間:2019-12-10 11:19:32

微信小程序藍牙功能開發:


1.簡述

藍牙適配器接口是基礎庫版本 1.1.0 開始支持。 

iOS 微信客戶端 6.5.6 版本開始支持,Android 客戶端暫不支持 

藍牙總共增加了18個api接口。


2.Api分類

搜索類 

連接類 

通信類


3.API的具體使用

詳細見官網:


https://mp.weixin.qq.com/debug/wxadoc/dev/api/bluetooth.html#wxgetconnectedbluethoothdevicesobject


4. 案例實現

4.1 搜索藍牙設備


/**

 * 搜索設備界面

 */

Page({

  data: {

    logs: [],

    list:[],

  },

   onLoad: function () {

    console.log('onLoad')

var that = this;

// const SDKVersion = wx.getSystemInfoSync().SDKVersion || '1.0.0'

// const [MAJOR, MINOR, PATCH] = SDKVersion.split('.').map(Number)

// console.log(SDKVersion);

// console.log(MAJOR);

// console.log(MINOR);

// console.log(PATCH);

 

// const canIUse = apiName => {

//   if (apiName === 'showModal.cancel') {

//     return MAJOR >= 1 && MINOR >= 1

//   }

//   return true

// }

 

// wx.showModal({

//   success: function(res) {

//     if (canIUse('showModal.cancel')) {

//       console.log(res.cancel)

//     }

//   }

// })

     //獲取適配器

      wx.openBluetoothAdapter({

      success: function(res){

        // success

        console.log("-----success----------");

         console.log(res);

         //開始搜索

       wx.startBluetoothDevicesDiscovery({

  services: [],

  success: function(res){

    // success

     console.log("-----startBluetoothDevicesDiscovery--success----------");

     console.log(res);

  },

  fail: function(res) {

    // fail

     console.log(res);

  },

  complete: function(res) {

    // complete

     console.log(res);

  }

})

 

 

      },

      fail: function(res) {

         console.log("-----fail----------");

        // fail

         console.log(res);

      },

      complete: function(res) {

        // complete

         console.log("-----complete----------");

         console.log(res);

      }

    })

 

     wx.getBluetoothDevices({

       success: function(res){

         // success

         //{devices: Array[11], errMsg: "getBluetoothDevices:ok"}

         console.log("getBluetoothDevices");

         console.log(res);

          that.setData({

          list:res.devices

          });

          console.log(that.data.list);

       },

       fail: function(res) {

         // fail

       },

       complete: function(res) {

         // complete

       }

     })

 

  },

  onShow:function(){

 

 

  },

   //點擊事件處理

  bindViewTap: function(e) {

     console.log(e.currentTarget.dataset.title);

     console.log(e.currentTarget.dataset.name);

     console.log(e.currentTarget.dataset.advertisData);

 

    var title =  e.currentTarget.dataset.title;

    var name = e.currentTarget.dataset.name;

     wx.redirectTo({

       url: '../conn/conn?deviceId='+title+'&name='+name,

       success: function(res){

         // success

       },

       fail: function(res) {

         // fail

       },

       complete: function(res) {

         // complete

       }

     })

  },

})

4.2連接 獲取數據


/**

 * 連接設備。獲取數據

 */

Page({

    data: {

        motto: 'Hello World',

        userInfo: {},

        deviceId: '',

        name: '',

        serviceId: '',

        services: [],

        cd20: '',

        cd01: '',

        cd02: '',

        cd03: '',

        cd04: '',

        characteristics20: null,

        characteristics01: null,

        characteristics02: null,

        characteristics03: null,

        characteristics04: null,

        result,

 

    },

    onLoad: function (opt) {

        var that = this;

        console.log("onLoad");

        console.log('deviceId=' + opt.deviceId);

        console.log('name=' + opt.name);

        that.setData({ deviceId: opt.deviceId });

        /**

         * 監聽設備的連接狀態

         */

        wx.onBLEConnectionStateChanged(function (res) {

            console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`)

        })

        /**

         * 連接設備

         */

        wx.createBLEConnection({

            deviceId: that.data.deviceId,

            success: function (res) {

                // success

                console.log(res);

                /**

                 * 連接成功,后開始獲取設備的服務列表

                 */

                wx.getBLEDeviceServices({

                    // 這里的 deviceId 需要在上面的 getBluetoothDevices中獲取

                    deviceId: that.data.deviceId,

                    success: function (res) {

                        console.log('device services:', res.services)

                        that.setData({ services: res.services });

                        console.log('device services:', that.data.services[1].uuid);

                        that.setData({ serviceId: that.data.services[1].uuid });

                        console.log('--------------------------------------');

                        console.log('device設備的id:', that.data.deviceId);

                        console.log('device設備的服務id:', that.data.serviceId);

                        /**

                         * 延遲3秒,根據服務獲取特征 

                         */

                        setTimeout(function () {

                            wx.getBLEDeviceCharacteristics({

                                // 這里的 deviceId 需要在上面的 getBluetoothDevices

                                deviceId: that.data.deviceId,

                                // 這里的 serviceId 需要在上面的 getBLEDeviceServices 接口中獲取

                                serviceId: that.data.serviceId,

                                success: function (res) {

                                    console.log('000000000000' + that.data.serviceId);

                                    console.log('device getBLEDeviceCharacteristics:', res.characteristics)

                                    for (var i = 0; i < 5; i++) {

                                        if (res.characteristics[i].uuid.indexOf("cd20") != -1) {

                                            that.setData({

                                                cd20: res.characteristics[i].uuid,

                                                characteristics20: res.characteristics[i]

                                            });

                                        }

                                        if (res.characteristics[i].uuid.indexOf("cd01") != -1) {

                                            that.setData({

                                                cd01: res.characteristics[i].uuid,

                                                characteristics01: res.characteristics[i]

                                            });

                                        }

                                        if (res.characteristics[i].uuid.indexOf("cd02") != -1) {

                                            that.setData({

                                                cd02: res.characteristics[i].uuid,

                                                characteristics02: res.characteristics[i]

                                            });

                                        } if (res.characteristics[i].uuid.indexOf("cd03") != -1) {

                                            that.setData({

                                                cd03: res.characteristics[i].uuid,

                                                characteristics03: res.characteristics[i]

                                            });

                                        }

                                        if (res.characteristics[i].uuid.indexOf("cd04") != -1) {

                                            that.setData({

                                                cd04: res.characteristics[i].uuid,

                                                characteristics04: res.characteristics[i]

                                            });

                                        }

                                    }

                                    console.log('cd01= ' + that.data.cd01 + 'cd02= ' + that.data.cd02 + 'cd03= ' + that.data.cd03 + 'cd04= ' + that.data.cd04 + 'cd20= ' + that.data.cd20);

                                    /**

                                     * 回調獲取 設備發過來的數據

                                     */

                                    wx.onBLECharacteristicValueChange(function (characteristic) {

                                        console.log('characteristic value comed:', characteristic.value)

                                        //{value: ArrayBuffer, deviceId: "D8:00:D2:4F:24:17", serviceId: "ba11f08c-5f14-0b0d-1080-007cbe238851-0x600000460240", characteristicId: "0000cd04-0000-1000-8000-00805f9b34fb-0x60800069fb80"}

                                        /**

                                         * 監聽cd04cd04中的結果

                                         */

                                        if (characteristic.characteristicId.indexOf("cd01") != -1) {

                                            const result = characteristic.value;

                                            const hex = that.buf2hex(result);

                                            console.log(hex);

                                        }

                                        if (characteristic.characteristicId.indexOf("cd04") != -1) {

                                            const result = characteristic.value;

                                            const hex = that.buf2hex(result);

                                            console.log(hex);

                                            that.setData({ result: hex });

                                        }

 

                                    })

                                    /**

                                     * 順序開發設備特征notifiy

                                     */

                                    wx.notifyBLECharacteristicValueChanged({

                                        deviceId: that.data.deviceId,

                                        serviceId: that.data.serviceId,

                                        characteristicId: that.data.cd01,

                                        state: true,

                                        success: function (res) {

                                            // success

                                            console.log('notifyBLECharacteristicValueChanged success', res);

                                        },

                                        fail: function (res) {

                                            // fail

                                        },

                                        complete: function (res) {

                                            // complete

                                        }

                                    })

                                    wx.notifyBLECharacteristicValueChanged({

                                        deviceId: that.data.deviceId,

                                        serviceId: that.data.serviceId,

                                        characteristicId: that.data.cd02,

                                        state: true,

                                        success: function (res) {

                                            // success

                                            console.log('notifyBLECharacteristicValueChanged success', res);

                                        },

                                        fail: function (res) {

                                            // fail

                                        },

                                        complete: function (res) {

                                            // complete

                                        }

                                    })

                                    wx.notifyBLECharacteristicValueChanged({

                                        deviceId: that.data.deviceId,

                                        serviceId: that.data.serviceId,

                                        characteristicId: that.data.cd03,

                                        state: true,

                                        success: function (res) {

                                            // success

                                            console.log('notifyBLECharacteristicValueChanged success', res);

                                        },

                                        fail: function (res) {

                                            // fail

                                        },

                                        complete: function (res) {

                                            // complete

                                        }

                                    })

 

                                    wx.notifyBLECharacteristicValueChanged({

                                        // 啟用 notify 功能

                                        // 這里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中獲取

                                        deviceId: that.data.deviceId,

                                        serviceId: that.data.serviceId,

                                        characteristicId: that.data.cd04,

                                        state: true,

                                        success: function (res) {

                                            console.log('notifyBLECharacteristicValueChanged success', res)

                                        }

                                    })

 

                                }, fail: function (res) {

                                    console.log(res);

                                }

                            })

                        }

                            , 1500);

                    }

                })

            },

            fail: function (res) {

                // fail

            },

            complete: function (res) {

                // complete

            }

        })

    },

 

    /**

     * 發送 數據到設備中

     */

    bindViewTap: function () {

        var that = this;

        var hex = 'AA5504B10000B5'

        var typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) {

            return parseInt(h, 16)

        }))

        console.log(typedArray)

        console.log([0xAA, 0x55, 0x04, 0xB1, 0x00, 0x00, 0xB5])

        var buffer1 = typedArray.buffer

        console.log(buffer1)

        wx.writeBLECharacteristicValue({

            deviceId: that.data.deviceId,

            serviceId: that.data.serviceId,

            characteristicId: that.data.cd20,

            value: buffer1,

            success: function (res) {

                // success

                console.log("success  指令發送成功");

                console.log(res);

            },

            fail: function (res) {

                // fail

                console.log(res);

            },

            complete: function (res) {

                // complete

            }

        })

 

    },

    /**

     * ArrayBuffer 轉換為  Hex

     */

    buf2hex: function (buffer) { // buffer is an ArrayBuffer

        return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');

    }

})


相關文章
6一12乌克兰xXx-7m夜趣福利-伊人幺妹综合-蝌蚪 自拍 在线播放