Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

小程序蓝牙

2019/09/15 前端 微信小程序
Word count: 1,163 | Reading time: 5min

提供蓝牙模块API

wx.openBluetoothAdapter(OBJECT)

​ 初始化小程序蓝牙模块

wx.closeBluetoothAdapter(OBJECT)

​ 关闭蓝牙模块,使其进入未初始化状态。

wx.getBluetoothAdapterState(OBJECT)

​ 获取本机蓝牙适配器状态

wx.onBluetoothAdapterStateChange(CALLBACK)

​ 监听蓝牙适配器状态变化事件

wx.startBluetoothDevicesDiscovery(OBJECT)

​ 开始搜寻附近的蓝牙外围设备。注意,该操作比较耗费系统资源,请在搜索并连接到设备后调用 stop 方法停止搜索。

wx.stopBluetoothDevicesDiscovery(OBJECT)

​ 停止搜寻附近的蓝牙外围设备。若已经找到需要的蓝牙设备并不需要继续搜索时,建议调用该接口停止蓝牙搜索。

wx.getBluetoothDevices(OBJECT)

​ 获取在小程序蓝牙模块生效期间所有已发现的蓝牙设备,包括已经和本机处于连接状态的设备。

wx.onBluetoothDeviceFound(CALLBACK)

​ 监听寻找到新设备的事件

wx.createBLEConnection(OBJECT)

​ 连接低功耗蓝牙设备。

wx.closeBLEConnection(OBJECT)

​ 断开与低功耗蓝牙设备的连接

wx.getBLEDeviceServices(OBJECT)

​ 获取蓝牙设备所有 service(服务)

wx.getBLEDeviceCharacteristics(OBJECT)

​ 获取蓝牙设备某个服务中的所有 characteristic(特征值)

wx.readBLECharacteristicValue(OBJECT)

​ 读取低功耗蓝牙设备的特征值的二进制数据值。注意:必须设备的特征值支持read才可以成功调用,具体参照 characteristic 的 properties 属性

wx.writeBLECharacteristicValue(OBJECT)

​ 向低功耗蓝牙设备特征值中写入二进制数据。注意:必须设备的特征值支持write才可以成功调用,具体参照 characteristic 的 properties 属性

tips: 并行调用多次读写接口存在读写失败的可能性*

wx.notifyBLECharacteristicValueChange(OBJECT)

​ 启用低功耗蓝牙设备特征值变化时的 notify 功能,订阅特征值。注意:必须设备的特征值支持notify或者indicate才可以成功调用,具体参照 characteristic 的 properties 属性

​ 另外,必须先启用notify才能监听到设备 characteristicValueChange 事件

wx.onBLEConnectionStateChange(CALLBACK)

​ 监听低功耗蓝牙连接状态的改变事件,包括开发者主动连接或断开连接,设备丢失,连接异常断开等等

wx.onBLECharacteristicValueChange(CALLBACK)

​ 监听低功耗蓝牙设备的特征值变化。必须先启用notify接口才能接收到设备推送的notification。

示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
// pages/bluetooth/bluetooth.js
Page({
data:{},
onLoad:function(options){
// 页面初始化 options为页面跳转所带来的参数
},
//初始化蓝牙适配器
openBluetooth:function(){
wx.openBluetoothAdapter({
success: function(res){
console.log(res.errMsg)
// success
wx.showToast({
title:"初始化蓝牙适配器成功",
duration:2000
})
},
})
},
//关闭蓝牙模块
closeBluetooth:function(){
wx.openBluetoothAdapter()

wx.closeBluetoothAdapter({
success: function(res){
// success
console.log("success"+res)
}
})
},
//获取本机蓝牙适配器状态
getBluetoothAdapterState:function(){
wx.getBluetoothAdapterState({
success: function(res){
// success
console.log("res:"+res)
console.log("errMsg:"+res.errMsg)
}
})
},
//监听蓝牙适配器状态变化事件
onBluetoothAdapterStateChange:function(){
wx.onBluetoothAdapterStateChange(function(res) {
console.log(`adapterState changed, now is`, res)
})
},
// 开始搜寻附近的蓝牙外围设备
startBluetoothDevicesDiscovery:function(){
wx.startBluetoothDevicesDiscovery({
success: function (res) {
console.log(res)
}
})
},
// 停止搜寻附近的蓝牙外围设备
stopBluetoothDevicesDiscovery:function(){
wx.stopBluetoothDevicesDiscovery({
success: function (res) {
console.log(res)
}
})
},
//获取所有已发现的蓝牙设备
getBluetoothDevices:function(){
wx.getBluetoothDevices({
success: function(res){
// success
console.log(res)
},
})
},
//监听寻找到新设备的事件
onBluetoothDeviceFound:function(){
wx.onBluetoothDeviceFound(function(res) {
// callback
console.log(res)
})
},
//根据 uuid 获取处于已连接状态的设备
getConnectedBluetoothDevices:function(){
wx.getConnectedBluetoothDevices({
success: function (res) {
console.log(res)
}
})
},
//连接低功耗蓝牙设备
createBLEConnection:function(){
wx.createBLEConnection({
deviceId: 'AC:BC:32:C1:47:80',
success: function(res){
// success
console.log(res)
},
fail: function(res) {
// fail
},
complete: function(res) {
// complete
}
})
},
//断开与低功耗蓝牙设备的连接
closeBLEConnection:function(){
wx.closeBLEConnection({
deviceId: 'AC:BC:32:C1:47:80',
success: function (res) {
console.log(res)
}
})
},
//监听低功耗蓝牙连接的错误事件,包括设备丢失,连接异常断开等等
onBLEConnectionStateChanged:function(){
wx.onBLEConnectionStateChanged(function(res) {
console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`)
})
},
//获取蓝牙设备所有 service(服务)
getBLEDeviceServices:function(){
wx.getBLEDeviceServices({
deviceId: '48:3B:38:88:E3:83',
success: function(res){
// success
console.log('device services:', res.services.serviceId)
},
fail: function(res) {
// fail
},
complete: function(res) {
// complete
}
})
},
//获取蓝牙设备所有 characteristic(特征值)
getBLEDeviceCharacteristics:function(){
wx.getBLEDeviceCharacteristics({
deviceId: '48:3B:38:88:E3:83',
serviceId: 'serviceId',
success: function(res){
// success
},
fail: function(res) {
// fail
},
complete: function(res) {
// complete
}
})
}
})

Author: Mrli

Link: https://nymrli.top/2018/09/20/小程序蓝牙API/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
带表头的单链表应用——多项式
NextPost >
电信路由器上网
CATALOG
  1. 1. 提供蓝牙模块API
    1. 1.1. wx.openBluetoothAdapter(OBJECT)
    2. 1.2. wx.closeBluetoothAdapter(OBJECT)
    3. 1.3. wx.getBluetoothAdapterState(OBJECT)
    4. 1.4. wx.onBluetoothAdapterStateChange(CALLBACK)
    5. 1.5. wx.startBluetoothDevicesDiscovery(OBJECT)
    6. 1.6. wx.stopBluetoothDevicesDiscovery(OBJECT)
    7. 1.7. wx.getBluetoothDevices(OBJECT)
    8. 1.8. wx.onBluetoothDeviceFound(CALLBACK)
    9. 1.9. wx.createBLEConnection(OBJECT)
    10. 1.10. wx.closeBLEConnection(OBJECT)
    11. 1.11. wx.getBLEDeviceServices(OBJECT)
    12. 1.12. wx.getBLEDeviceCharacteristics(OBJECT)
    13. 1.13. wx.readBLECharacteristicValue(OBJECT)
    14. 1.14. wx.writeBLECharacteristicValue(OBJECT)
    15. 1.15. wx.notifyBLECharacteristicValueChange(OBJECT)
    16. 1.16. wx.onBLEConnectionStateChange(CALLBACK)
    17. 1.17. wx.onBLECharacteristicValueChange(CALLBACK)
  2. 2.
  3. 3. 示例代码如下: