使用 Ionic Native BLE 向 BLE 外围设备发出写入值
Posted
技术标签:
【中文标题】使用 Ionic Native BLE 向 BLE 外围设备发出写入值【英文标题】:Issue writing value to BLE peripheral with Ionic Native BLE 【发布时间】:2018-11-18 21:26:03 【问题描述】:我目前正在使用 Ionic 编写一个小应用程序,以使用我的应用程序控制 FLUX 蓝牙灯泡。我正在使用 ionic-native/ble,到目前为止,除了写一个值之外,一切都在工作。
扫描和连接都可以正常工作。但是,当尝试为灯泡写入关闭值时,没有任何反应。
我在 android 上使用了 snoop 功能,发现 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 插件 write 而没有响应,因为不需要响应(我也尝试过仅使用 write 函数)。我传递了正确的设备 id、服务和特征,然后传递了 off 函数返回的数组缓冲区。在控制台内部没有写入错误,并给我一个 OK(200) 的结果。尽管该命令什么也没做,尽管就像我说的,如果我将相同的值传递给 nRF Connect 写入命令以获得相同的服务和特性,它会完美运行。
任何想法将不胜感激!谢谢!
【问题讨论】:
【参考方案1】:我希望您没有收到错误消息,因为数据写入正确,但灯泡只是不知道如何解释命令。 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 的属性将决定你是使用 use ble.write 还是 ble.writeWithoutResponse。连接到外围设备时返回的 JSON 包含这些详细信息。 nRF Connect 应用程序还将显示特征属性。
【讨论】:
是的,我实际上是在发布问题后发现这是我构建数组缓冲区的方式。非常感谢您的帮助!以上是关于使用 Ionic Native BLE 向 BLE 外围设备发出写入值的主要内容,如果未能解决你的问题,请参考以下文章
使用 react-native-ble-manager 获取可用蓝牙设备的列表
使用 React-native-ble-plx 配置 React-native
如何使用 react-native-ble-manager 读取通用访问服务/特征
是否可以使用 Poledia/react-native-ble-plx 将 iOS 设备变成 iBeacon?