项目中有这样一个需求就是通过蓝牙连接设备,并传输一些数据给设备,并接收设备回传过来的信息,经过探索,下面整理了一下我的经验分享给大家。
在uniapp
开发中,可以使用uni-app
提供的uni.bluetoothAdapter
API来实现。这些API允许你管理蓝牙适配器状态、搜索蓝牙设备、连接设备、传输数据等。
1. 开启蓝牙适配器
首先,你需要调用uni.openBluetoothAdapter
来开启蓝牙模块。
javascript
uni.openBluetoothAdapter({
success: function (res) {
console.log('蓝牙模块初始化成功');
},
fail: function (err) {
console.error('蓝牙模块初始化失败', err);
}
});
2. 获取已搜索到的蓝牙设备
你可以使用uni.getBluetoothDevices
来获取已搜索到的蓝牙设备列表。
javascript
uni.getBluetoothDevices({
success: function (res) {
console.log('已搜索到的蓝牙设备列表', res.devices);
},
fail: function (err) {
console.error('获取蓝牙设备失败', err);
}
});
3. 搜索附近的蓝牙设备
使用uni.startBluetoothDevicesDiscovery
来搜索附近的蓝牙设备。
javascript
uni.startBluetoothDevicesDiscovery({
success: function (res) {
console.log('开始搜索附近的蓝牙设备');
},
fail: function (err) {
console.error('搜索蓝牙设备失败', err);
}
});
4. 连接蓝牙设备
找到目标设备后,可以使用uni.createBLEConnection
来连接设备。
javascript
uni.createBLEConnection({
deviceId: '目标设备的deviceId', // 设备的deviceId,在搜索到的设备列表中获取
success: function (res) {
console.log('蓝牙设备连接成功');
},
fail: function (err) {
console.error('蓝牙设备连接失败', err);
}
});
5. 传输数据(读写)
连接成功后,你可以使用uni.writeBLECharacteristicValue
来写入数据,使用uni.notifyBLECharacteristicValueChange
来监听数据变化。
javascript
// 写入数据到蓝牙设备
uni.writeBLECharacteristicValue({
deviceId: '目标设备的deviceId', // 设备的deviceId,在搜索到的设备列表中获取
serviceId: '服务UUID', // 服务的UUID,例如 '0000fff0-0000-1000-8000-00805f9b34fb'
characteristicId: '特征UUID', // 特征的UUID,例如 '0000fff3-0000-1000-8000-00805f9b34fb'
value: new Uint8Array([1, 2, 3, 4]), // 要写入的数据,格式为Uint8Array或ArrayBuffer等二进制数据格式
success: function (res) {
console.log('写入数据成功');
},
fail: function (err) {
console.error('写入数据失败', err);
}
});
6. 断开连接和关闭蓝牙适配器(可选)
使用uni.closeBLEConnection
来断开与蓝牙设备的连接,使用uni.closeBluetoothAdapter
来关闭蓝牙模块。
javascript
// 断开连接
uni.closeBLEConnection({
deviceId: '目标设备的deviceId', // 设备的deviceId,在搜索到的设备列表中获取
success: function (res) {
console.log('断开蓝牙设备连接成功');
},
fail: function (err) {
console.error('断开蓝牙设备连接失败', err);
}
});
javascript
// 关闭蓝牙模块
uni.closeBluetoothAdapter({
success: function (res) {
console.log('关闭蓝牙模块成功');
},
fail: function (err) {
console.error('关闭蓝牙模块失败', err);
}
});
在开发的过程中记得将蓝牙权限打开哟