繁体   English   中英

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

[英]Issue writing value to BLE peripheral with Ionic Native BLE

我目前正在用Ionic编写一个小型应用程序,用我的应用程序控制FLUX蓝牙灯泡。 我正在使用离子本机/ ble,到目前为止,除了编写值之外,其他所有方法都有效。

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

我在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写命令,它也可以正常工作。

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

我希望您不会出错,因为数据已正确写入,但是灯泡不知道如何解释该命令。 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 Connect应用程序还将显示特征属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM