使用 Ionic Native BLE 向 BLE 外设发出写入值



我目前正在用Ionic编写一个小应用程序,用我的应用程序控制FLUX蓝牙灯泡。我正在使用ionic-native/ble,到目前为止,除了编写值之外的所有内容都在起作用。

扫描和连接都可以正常工作。但是,当尝试注销灯泡的关闭值时,没有任何反应。

我在 android 上使用过窥探功能,发现值 CC2433 是关闭灯泡的原因,我还使用 nRF Connect 应用程序对此进行了测试,当将该值写入灯泡时,灯会关闭。请在下面找到代码,让我知道我是否在做愚蠢的事情。谢谢!

this.ble.writeWithoutResponse(
"3C:A3:08:A8:1E:C3", 
"ffe5", 
"ffe9", 
this.off())
.then(result => {
console.log(result);
}).catch(error => {
alert(JSON.stringify(error));
});
off() {
let string = "CC2433";
let array = new Uint8Array(string.length);
for (let i = 0, l = string.length; i < l; i ++) {
array[i] = string.charCodeAt(i);
}
console.log(array.buffer);
return array.buffer;
}

如您所见,我调用 ble 插件在没有响应的情况下写入,因为不需要响应(我也尝试仅使用写入函数(。我传递的设备 ID、服务和特征,它们都是正确的,然后传递 off 函数返回的数组缓冲区。在控制台内部没有写入错误,并给我一个 OK(200( 的结果。尽管该命令什么也不做,即使像我说的那样,如果我将相同的值传递给相同服务和特征的 nRF Connect 写入命令,它也能完美地工作。

任何想法将不胜感激!谢谢!

我希望你不会得到和错误,因为数据被正确写入,但灯泡只是不知道如何解释命令。CC2433 看起来像十六进制而不是字符串。试试这个:

let array = new Uint8Array([0xCC, 0x24, 0x33]);
this.ble.writeWithoutResponse(
"3C:A3:08:A8:1E:C3", 
"ffe5", 
"ffe9", 
array.buffer)
.then(result => {
console.log(result);
}).catch(error => {
alert(JSON.stringify(error));
});

特征 ffe9 的属性将决定你是使用 ble.write 还是 ble.writeWithoutResponse。连接到外围设备时返回的 JSON 包含这些详细信息。nRF 连接应用还将显示特征属性。

最新更新