反应本机 ble 管理器 BleManager.write 函数没有按预期响应


const infoConnected = () => {//Show the connected devices
BleManager.getConnectedPeripherals([]).then((results) => {
if (results.length == 0) {
console.log('No connected peripherals')
}
//for (var i = 0; i < 1;/*list2.length;*/ i++) {//once for now
console.log("Connected Device Variables:");

//FULL INFO
let deviceInfo=list2[0];
console.log(deviceInfo);
//Split INFO
console.log("peripheralId INFO:");
console.log(list2[0].id);
console.log("serviceUUID INFO:");
console.log(list2[0].advertising.serviceUUIDs);
console.log("characteristicUUID INFO:");
console.log(list2[0].id);
//write and take a promis
//const data=stringToBytesToBytes('dsadsa');
//const dataByte = convertString.UTF8.stringToBytes(data);
//const data = stringToBytes(String(12345));
//const dataByte = convertString.UTF8.stringToBytes(data);
//const data = stringToBytes("XXXXXXXXXXXXXXXXXXXXXX");

let command = ['XX', '00', 'XX', '00', '00', '00','00','00','00','00','00','00','00','00','00','00','00','00', 'XX','XX'];
let data = command.map(x => {return parseInt(x, 16);});
response=BleManager.write(
"XX:24:XX:XX:37:XX",
'XX-0000-1000-8000-XX',
'XX-0000-1000-8000-XX',
data,
)
.then(() => {
console.log(`*******************************Sent ${data}`);
})
.catch((error) => {
console.log(error);
});
console.log("*******************************Response From Slave(peripheral)="+JSON.stringify(response));
});

BleManager.read(
"4C:XX:XX:XX:XX:XX",
'XX-0000-XXXX-XXXX-XX',
'XX-0000-XXXX-XXXX-XX'
)
.then((readData) => {
// Success code
console.log("*******************************Read: " + readData);

buffer = Buffer.Buffer.from(readData); //https://github.com/feross/buffer#convert-arraybuffer-to-buffer
const sensorData=buffer.readUInt8(1, true);
console.log("*******************************Buffer read:"+ buffer);
console.log("*******************************SensorData read:"+sensorData);
//const sensorData = buffer.readUInt8(1, true);
})
.catch((error) => {
// Failure code
console.log(error);
});   

输出嘿,我是个反应迟钝的新手,我想使用写功能与我的蓝牙设备进行通信。

返回值为;来自从属(外围(的响应={"_1":0,"_2":0、"_3":null,"_4":null}

上面的功能无法与我的蓝牙设备通信,下面显示的响应是错误的。我做错了吗。感谢您的帮助:(输出

您的响应是一个未解决的承诺。您的.then块将得到响应,但由于您没有在该块中返回(或使用它(,因此无法存储或显示它。试试这个

.then(response => {
console.log(`*******************************Sent ${data}`);
console.log("*******************************Response From Slave(peripheral)="+JSON.stringify(response));
});

如果要存储响应,请考虑使用async/await语法;这是一个更简单的心理模型。

const response = await BleManager.write(
// ...
);
console.log(response);

当然,您必须将其内部的函数标记为async。

最新更新