问题描述
我是 Ble-Plx 和 React-Native 的新手,我正在做一个项目,我们应该能够连接到设备并改变行为,只需编写新特性,它就会改变......我使用了我在互联网上找到的 Ble Starter,我能够编写特征并更改行为。所以我知道外设可以做到,我只需要开发代码。我已经有了一些东西,但是当我写下特性时,设备并没有像我们所看到的那样改变,设备什么也不做,我也没有收到任何错误或其他东西 只是设备什么都不做。这是一段代码,如果有人可以提供帮助,那就太棒了!
这是代码的主要部分:
import { BleManager } from 'react-native-ble-plx';
const manager = new BleManager();
const Example=()=>{
useEffect(() => {
manager.onStateChange((state) => {
const subscription = manager.onStateChange((state) => {
if (state === 'PoweredOn') {
scanAndConnect();
subscription.remove();
}
},true);
return () => subscription.remove();
});
},[manager])
function scanAndConnect() {
console.log('Escanear')
manager.startDeviceScan(null,null,async(error,device)=>{
console.log(device.id)
if(device.id ==='D1:42:78:C8:AB:FB' || device.id ==='D1:42:BF:F1:D9:3C'){
manager.stopDeviceScan()
console.log("ID del dispositivo: ",device.id)
console.log("Nombre del dispositivo: ",device.name)
console.log("RRSI del dispositivo: ",device.RSSi)
console.log("MTU del dispositivo: ",device.mtu)
device.connect()
.then((device) => {
const services = device.discoverAllServicesAndcharacteristics()
console.log(services)
})
.catch((error) => {
// Handle errors
console.log(error)
});
}
if (error) {
console.log(error)
return
}
})
}
const writeChar=async()=> {
var text = (Buffer.from("AA0100000200").toString('base64'));
manager.writeCharacteristicWithoutResponseForDevice(
'D1:42:BF:F1:D9:3C','aae0','aae1',text,)
.then(() => {
console.log("Write: " + text);
})
.catch((error) => {
console.log(error);
});
}
这是 CONSOLE.LOG 返回给我的内容。
D1:42:BF:F1:D9:3C
LOG ID del dispositivo: D1:42:BF:F1:D9:3C
LOG Nombre del dispositivo: Bluetrum-MX
LOG RRSI del dispositivo: -73
LOG MTU del dispositivo: 23
LOG {"_U": 0,"_V": 0,"_W": null,"_X": null}
LOG Write: QUEwMTAwMDAwMjAw
但是即使没有错误设备也不会改变所以这是我的问题,我无法让设备改变行为并开始振动(仅通过编写特征)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)