···
// 连接蓝牙
uni.createBLEConnection({
deviceId: BleData.deviceId,
success: (res) => {
console.log("连接成功", res)
OpenPopup('message','success','蓝牙连接成功');
BleData.bleState = true;
// 监听蓝牙连接状态
uni.onBLEConnectionStateChange((res)=>{
console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`)
BleData.bleState = res.connected;
if(!BleData.bleState){
OpenPopup('alertDialog','error','蓝牙已断开,是否重连!');
}
});
// 获取所有的服务
uni.getBLEDeviceServices({
deviceId: BleData.deviceId,
success(res) {
console.log('服务:', res);
if(res.services[0].isPrimary){
//验证服务ID并连接
for (let index = 0; index < res.services.length; index++) {
if(res.services[index].uuid == "0000FFF0-0000-1000-8000-00805F9B34FB"){
BleData.serviceId = res.services[index].uuid;
}
}
}
// 获取特征码
uni.getBLEDeviceCharacteristics({
deviceId:BleData.deviceId,
serviceId:BleData.serviceId,
success(res) {
console.log('特征:', res);
for (let index = 0; index < res.characteristics.length; index++) {
if(res.characteristics[index].properties.notify == true){
BleData.notifyId = res.characteristics[index].uuid;
// 监听接收数据
uni.notifyBLECharacteristicValueChange({
state: true,
deviceId:BleData.deviceId,
serviceId:BleData.serviceId,
characteristicId:BleData.notifyId,
success(res) {
console.log("开启 notify 功能成功...,notifyId:",BleData.notifyId)
// 必须先启用 notifyBLECharacteristicValueChange 接口才能接收到设备推送
uni.onBLECharacteristicValueChange(res => {
ReceiveBleData(res.value);
})
},
fail(err) {
console.log("监听失败,发生错误", err);
console.log("this.characteristicId", BleData.notifyId);
}
})
continue;
}
if((res.characteristics[index].properties.write == true) || (res.characteristics[index].properties.writeNoResponse == true)){
BleData.writeId = res.characteristics[index].uuid;
continue;
}
}
}
})
}
})
},
fail: (error) => {
console.log("连接失败", error)
// uni.showToast({title: '蓝牙连接失败,请稍后重试',icon:"none",duration: 2000});
OpenPopup('alertDialog','error','蓝牙连接失败,请重试!');
}
})
···
···
//发送的代码
const SendDataToBle = (uin8ArrData) => {
if(!BleData.bleState){
OpenPopup('message','warn','蓝牙未连接');
return 'err';
}
// var typedArray = new Uint8Array([1,1,2,3,4]);
//向低功耗蓝牙设备指定特征值写入二进制数据
uni.writeBLECharacteristicValue({
deviceId:BleData.deviceId,
serviceId:BleData.serviceId,
characteristicId:BleData.writeId,
writeType:BleData.writeType,
value: uin8ArrData.buffer,
success(res) {
console.log('send ok', res.errMsg)
},
fail(res){
console.log('send err', res.errMsg)
}
});
return 'ok';
}
···
8***@qq.com (作者)
原生的小程序没有问题
2025-09-11 12:00
DCloud_UNI_JBB
回复 8***@qq.com: 发一下你写的uniapp的代码和原生微信小程序测试的代码
2025-09-11 12:02