我是ble plx的新手,并且是react native,我正在从事一个项目,在这个项目中,我们应该能够连接到一个设备并改变其行为,只需编写新的特性,它就应该改变。。。我使用了我在互联网上找到的一个ble启动程序,我能够写出特征并改变行为。所以我知道外围设备可以做到,我只需要开发代码。我已经有了一些东西,但是当我写下设备的特性时,设备不会随着我们的spect而改变,设备不会做任何事情,我也不会得到任何错误,或者只是设备没有做任何事情。这里有一段代码,如果有人能帮上忙,那将是令人惊讶的!
以下是代码的主要部分:
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
但是,即使没有错误,设备也不会改变,所以这就是我的问题,我无法让设备改变行为并开始振动(仅通过写入特征)
暂无答案!
目前还没有任何答案,快来回答吧!