微信小程序 蓝牙的实现实例代码
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 搜索蓝牙设备
// 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
},complete: function(res) {
// complete
}
})
},})
4.2连接 获取数据
})
/**
* 顺序开发设备特征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,characteristicId: that.data.cd02,characteristicId: that.data.cd03,complete: function (res) {
// complete
}
})
wx.notifyBLECharacteristicValueChanged({
// 启用 notify 功能
// 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取
deviceId: that.data.deviceId,characteristicId: that.data.cd04,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,0xB5])
var buffer1 = typedArray.buffer
console.log(buffer1)
wx.writeBLECharacteristicValue({
deviceId: that.data.deviceId,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('');
}
})
5.效果展示
发送校验指令。获取结果
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:https://www.f2er.com/weapp/38323.html