【问题标题】:Issue writing value to BLE peripheral with Ionic Native BLE使用 Ionic Native BLE 向 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 写入命令以获得相同的服务和特性,它会完美运行。

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

【问题讨论】:

    标签: android typescript ionic-framework bluetooth-lowenergy cordova-plugins


    【解决方案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 应用程序还将显示特征属性。

    【讨论】:

    • 是的,我实际上是在发布问题后发现这是我构建数组缓冲区的方式。非常感谢您的帮助!
    猜你喜欢
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多