关于【积分获取】的说明关于【附件下载】的说明
查看: 607|回复: 5

微信小程序 蓝牙实现

[复制链接]

473

主题

572

帖子

25万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
253626
发表于 2018-3-1 22:50:52 | 显示全部楼层 |阅读模式

登录后查看更多内容,推荐微信扫码快速登录

您需要 登录 才可以下载或查看,没有帐号?【建议使用下方微信快捷登录注册】

x
1.简述
  • 蓝牙适配器接口是基础库版本 1.1.0 开始支持。
  • iOS 微信客户端 6.5.6 版本开始支持,Android 客户端暂不支持
  • 蓝牙总共增加了18个api接口。
2.Api分类
  • 搜索类
  • 连接类
  • 通信类
3.API的具体使用
详细见官网:
4. 案例实现4.1 搜索蓝牙设备
  1. /**
  2. * 搜索设备界面
  3. */
  4. Page({
  5.   data: {
  6.     logs: [],
  7.     list:[],
  8.   },
  9.    onLoad: function () {
  10.     console.log('onLoad')
  11. var that = this;
  12. // const SDKVersion = wx.getSystemInfoSync().SDKVersion || '1.0.0'
  13. // const [MAJOR, MINOR, PATCH] = SDKVersion.split('.').map(Number)
  14. // console.log(SDKVersion);
  15. // console.log(MAJOR);
  16. // console.log(MINOR);
  17. // console.log(PATCH);

  18. // const canIUse = apiName => {
  19. //   if (apiName === 'showModal.cancel') {
  20. //     return MAJOR >= 1 && MINOR >= 1
  21. //   }
  22. //   return true
  23. // }

  24. // wx.showModal({
  25. //   success: function(res) {
  26. //     if (canIUse('showModal.cancel')) {
  27. //       console.log(res.cancel)
  28. //     }
  29. //   }
  30. // })
  31.      //获取适配器
  32.       wx.openBluetoothAdapter({
  33.       success: function(res){
  34.         // success
  35.         console.log("-----success----------");
  36.          console.log(res);
  37.          //开始搜索
  38.        wx.startBluetoothDevicesDiscovery({
  39.   services: [],
  40.   success: function(res){
  41.     // success
  42.      console.log("-----startBluetoothDevicesDiscovery--success----------");
  43.      console.log(res);
  44.   },
  45.   fail: function(res) {
  46.     // fail
  47.      console.log(res);
  48.   },
  49.   complete: function(res) {
  50.     // complete
  51.      console.log(res);
  52.   }
  53. })


  54.       },
  55.       fail: function(res) {
  56.          console.log("-----fail----------");
  57.         // fail
  58.          console.log(res);
  59.       },
  60.       complete: function(res) {
  61.         // complete
  62.          console.log("-----complete----------");
  63.          console.log(res);
  64.       }
  65.     })

  66.      wx.getBluetoothDevices({
  67.        success: function(res){
  68.          // success
  69.          //{devices: Array[11], errMsg: "getBluetoothDevices:ok"}
  70.          console.log("getBluetoothDevices");
  71.          console.log(res);
  72.           that.setData({
  73.           list:res.devices
  74.           });
  75.           console.log(that.data.list);
  76.        },
  77.        fail: function(res) {
  78.          // fail
  79.        },
  80.        complete: function(res) {
  81.          // complete
  82.        }
  83.      })

  84.   },
  85.   onShow:function(){


  86.   },
  87.    //点击事件处理
  88.   bindViewTap: function(e) {
  89.      console.log(e.currentTarget.dataset.title);
  90.      console.log(e.currentTarget.dataset.name);
  91.      console.log(e.currentTarget.dataset.advertisData);
  92.      
  93.     var title =  e.currentTarget.dataset.title;
  94.     var name = e.currentTarget.dataset.name;
  95.      wx.redirectTo({
  96.        url: '../conn/conn?deviceId='+title+'&name='+name,
  97.        success: function(res){
  98.          // success
  99.        },
  100.        fail: function(res) {
  101.          // fail
  102.        },
  103.        complete: function(res) {
  104.          // complete
  105.        }
  106.      })
  107.   },
  108. })
复制代码
4.2连接 获取数据
  1. /**
  2. * 连接设备。获取数据
  3. */
  4. Page({
  5.     data: {
  6.         motto: 'Hello World',
  7.         userInfo: {},
  8.         deviceId: '',
  9.         name: '',
  10.         serviceId: '',
  11.         services: [],
  12.         cd20: '',
  13.         cd01: '',
  14.         cd02: '',
  15.         cd03: '',
  16.         cd04: '',
  17.         characteristics20: null,
  18.         characteristics01: null,
  19.         characteristics02: null,
  20.         characteristics03: null,
  21.         characteristics04: null,
  22.         result,

  23.     },
  24.     onLoad: function (opt) {
  25.         var that = this;
  26.         console.log("onLoad");
  27.         console.log('deviceId=' + opt.deviceId);
  28.         console.log('name=' + opt.name);
  29.         that.setData({ deviceId: opt.deviceId });
  30.         /**
  31.          * 监听设备的连接状态
  32.          */
  33.         wx.onBLEConnectionStateChanged(function (res) {
  34.             console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`)
  35.         })
  36.         /**
  37.          * 连接设备
  38.          */
  39.         wx.createBLEConnection({
  40.             deviceId: that.data.deviceId,
  41.             success: function (res) {
  42.                 // success
  43.                 console.log(res);
  44.                 /**
  45.                  * 连接成功,后开始获取设备的服务列表
  46.                  */
  47.                 wx.getBLEDeviceServices({
  48.                     // 这里的 deviceId 需要在上面的 getBluetoothDevices中获取
  49.                     deviceId: that.data.deviceId,
  50.                     success: function (res) {
  51.                         console.log('device services:', res.services)
  52.                         that.setData({ services: res.services });
  53.                         console.log('device services:', that.data.services[1].uuid);
  54.                         that.setData({ serviceId: that.data.services[1].uuid });
  55.                         console.log('--------------------------------------');
  56.                         console.log('device设备的id:', that.data.deviceId);
  57.                         console.log('device设备的服务id:', that.data.serviceId);
  58.                         /**
  59.                          * 延迟3秒,根据服务获取特征
  60.                          */
  61.                         setTimeout(function () {
  62.                             wx.getBLEDeviceCharacteristics({
  63.                                 // 这里的 deviceId 需要在上面的 getBluetoothDevices
  64.                                 deviceId: that.data.deviceId,
  65.                                 // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取
  66.                                 serviceId: that.data.serviceId,
  67.                                 success: function (res) {
  68.                                     console.log('000000000000' + that.data.serviceId);
  69.                                     console.log('device getBLEDeviceCharacteristics:', res.characteristics)
  70.                                     for (var i = 0; i < 5; i++) {
  71.                                         if (res.characteristics[i].uuid.indexOf("cd20") != -1) {
  72.                                             that.setData({
  73.                                                 cd20: res.characteristics[i].uuid,
  74.                                                 characteristics20: res.characteristics[i]
  75.                                             });
  76.                                         }
  77.                                         if (res.characteristics[i].uuid.indexOf("cd01") != -1) {
  78.                                             that.setData({
  79.                                                 cd01: res.characteristics[i].uuid,
  80.                                                 characteristics01: res.characteristics[i]
  81.                                             });
  82.                                         }
  83.                                         if (res.characteristics[i].uuid.indexOf("cd02") != -1) {
  84.                                             that.setData({
  85.                                                 cd02: res.characteristics[i].uuid,
  86.                                                 characteristics02: res.characteristics[i]
  87.                                             });
  88.                                         } if (res.characteristics[i].uuid.indexOf("cd03") != -1) {
  89.                                             that.setData({
  90.                                                 cd03: res.characteristics[i].uuid,
  91.                                                 characteristics03: res.characteristics[i]
  92.                                             });
  93.                                         }
  94.                                         if (res.characteristics[i].uuid.indexOf("cd04") != -1) {
  95.                                             that.setData({
  96.                                                 cd04: res.characteristics[i].uuid,
  97.                                                 characteristics04: res.characteristics[i]
  98.                                             });
  99.                                         }
  100.                                     }
  101.                                     console.log('cd01= ' + that.data.cd01 + 'cd02= ' + that.data.cd02 + 'cd03= ' + that.data.cd03 + 'cd04= ' + that.data.cd04 + 'cd20= ' + that.data.cd20);
  102.                                     /**
  103.                                      * 回调获取 设备发过来的数据
  104.                                      */
  105.                                     wx.onBLECharacteristicValueChange(function (characteristic) {
  106.                                         console.log('characteristic value comed:', characteristic.value)
  107.                                         //{value: ArrayBuffer, deviceId: "D8:00:D2:4F:24:17", serviceId: "ba11f08c-5f14-0b0d-1080-007cbe238851-0x600000460240", characteristicId: "0000cd04-0000-1000-8000-00805f9b34fb-0x60800069fb80"}
  108.                                         /**
  109.                                          * 监听cd04cd04中的结果
  110.                                          */
  111.                                         if (characteristic.characteristicId.indexOf("cd01") != -1) {
  112.                                             const result = characteristic.value;
  113.                                             const hex = that.buf2hex(result);
  114.                                             console.log(hex);
  115.                                         }
  116.                                         if (characteristic.characteristicId.indexOf("cd04") != -1) {
  117.                                             const result = characteristic.value;
  118.                                             const hex = that.buf2hex(result);
  119.                                             console.log(hex);
  120.                                             that.setData({ result: hex });
  121.                                         }

  122.                                     })
  123.                                     /**
  124.                                      * 顺序开发设备特征notifiy
  125.                                      */
  126.                                     wx.notifyBLECharacteristicValueChanged({
  127.                                         deviceId: that.data.deviceId,
  128.                                         serviceId: that.data.serviceId,
  129.                                         characteristicId: that.data.cd01,
  130.                                         state: true,
  131.                                         success: function (res) {
  132.                                             // success
  133.                                             console.log('notifyBLECharacteristicValueChanged success', res);
  134.                                         },
  135.                                         fail: function (res) {
  136.                                             // fail
  137.                                         },
  138.                                         complete: function (res) {
  139.                                             // complete
  140.                                         }
  141.                                     })
  142.                                     wx.notifyBLECharacteristicValueChanged({
  143.                                         deviceId: that.data.deviceId,
  144.                                         serviceId: that.data.serviceId,
  145.                                         characteristicId: that.data.cd02,
  146.                                         state: true,
  147.                                         success: function (res) {
  148.                                             // success
  149.                                             console.log('notifyBLECharacteristicValueChanged success', res);
  150.                                         },
  151.                                         fail: function (res) {
  152.                                             // fail
  153.                                         },
  154.                                         complete: function (res) {
  155.                                             // complete
  156.                                         }
  157.                                     })
  158.                                     wx.notifyBLECharacteristicValueChanged({
  159.                                         deviceId: that.data.deviceId,
  160.                                         serviceId: that.data.serviceId,
  161.                                         characteristicId: that.data.cd03,
  162.                                         state: true,
  163.                                         success: function (res) {
  164.                                             // success
  165.                                             console.log('notifyBLECharacteristicValueChanged success', res);
  166.                                         },
  167.                                         fail: function (res) {
  168.                                             // fail
  169.                                         },
  170.                                         complete: function (res) {
  171.                                             // complete
  172.                                         }
  173.                                     })

  174.                                     wx.notifyBLECharacteristicValueChanged({
  175.                                         // 启用 notify 功能
  176.                                         // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取
  177.                                         deviceId: that.data.deviceId,
  178.                                         serviceId: that.data.serviceId,
  179.                                         characteristicId: that.data.cd04,
  180.                                         state: true,
  181.                                         success: function (res) {
  182.                                             console.log('notifyBLECharacteristicValueChanged success', res)
  183.                                         }
  184.                                     })

  185.                                 }, fail: function (res) {
  186.                                     console.log(res);
  187.                                 }
  188.                             })
  189.                         }
  190.                             , 1500);
  191.                     }
  192.                 })
  193.             },
  194.             fail: function (res) {
  195.                 // fail
  196.             },
  197.             complete: function (res) {
  198.                 // complete
  199.             }
  200.         })
  201.     },

  202.     /**
  203.      * 发送 数据到设备中
  204.      */
  205.     bindViewTap: function () {
  206.         var that = this;
  207.         var hex = 'AA5504B10000B5'
  208.         var typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) {
  209.             return parseInt(h, 16)
  210.         }))
  211.         console.log(typedArray)
  212.         console.log([0xAA, 0x55, 0x04, 0xB1, 0x00, 0x00, 0xB5])
  213.         var buffer1 = typedArray.buffer
  214.         console.log(buffer1)
  215.         wx.writeBLECharacteristicValue({
  216.             deviceId: that.data.deviceId,
  217.             serviceId: that.data.serviceId,
  218.             characteristicId: that.data.cd20,
  219.             value: buffer1,
  220.             success: function (res) {
  221.                 // success
  222.                 console.log("success  指令发送成功");
  223.                 console.log(res);
  224.             },
  225.             fail: function (res) {
  226.                 // fail
  227.                 console.log(res);
  228.             },
  229.             complete: function (res) {
  230.                 // complete
  231.             }
  232.         })

  233.     },
  234.     /**
  235.      * ArrayBuffer 转换为  Hex
  236.      */
  237.     buf2hex: function (buffer) { // buffer is an ArrayBuffer
  238.         return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
  239.     }
  240. })
复制代码
5.效果展示
发送校验指令。获取结果
下载地址:


回复

使用道具 举报

0

主题

33

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2018-3-27 00:40:28 | 显示全部楼层
感谢楼主无私奉献分享
回复

使用道具 举报

0

主题

93

帖子

97

积分

注册会员

Rank: 2

积分
97
发表于 2018-3-31 11:39:49 | 显示全部楼层

好 学习学习
回复

使用道具 举报

0

主题

88

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2018-3-31 15:46:27 | 显示全部楼层
学习了 感谢分享
回复

使用道具 举报

0

主题

9

帖子

99

积分

注册会员

Rank: 2

积分
99
发表于 2018-4-4 10:31:16 | 显示全部楼层
感谢楼主的无私奉献  
回复

使用道具 举报

0

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2018-4-8 12:49:55 | 显示全部楼层
感谢楼主的无私奉献  
回复

使用道具 举报

0

主题

40

帖子

40

积分

新手上路

Rank: 1

积分
40
发表于 2018-12-18 15:53:10 | 显示全部楼层
真的很牛皮,我喜欢,要滚去学习啦!
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条



QQ|Archiver|手机版|小黑屋|小程序大全|小程序开发者论坛-汇集最优质源码、开发者教程、小程序资源

GMT+8, 2019-3-23 03:17 , Processed in 0.198243 second(s), 11 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表