如何在离子应用程序中通过BLE发送TLV命令

时间:2019-01-24 13:30:39

标签: ionic-framework bluetooth-lowenergy

我正在开发一个应用程序(Ionic),该应用程序通过BLE(https://ionicframework.com/docs/native/ble/)与树莓进行通讯。 我想向Raspberry发送命令并获取结果。唯一的限制是使用TLV(标记长度值)格式发送命令:     -标签:命令标识符     -长度:命令数据长度(0至18)     -值:命令数据

我不知道该怎么做。

自动取款机我有一些代码。

首先,我搜索周围的所有设备:

this.ble.scan([], 5).subscribe(
  device => this.onDeviceDiscovered(device), 
  error => this.scanError(error)
);

然后我从此设备获取信息:

this.ble.connect(device.id).subscribe(
  peripheral => this.onConnected(peripheral),
  peripheral => this.onDeviceDisconnected(peripheral)
);

然后...现在怎么办? 我正在尝试使用此功能:ble.write(device_id, service_uuid, characteristic_uuid, data, success, failure);

我得到了device_id,service_uuid,characters_uuid。但是我不知道如何传递数据。

我正在尝试类似的方法:

SendCommand() {
  let data: {
    RANDOM: 1,
    Lenght: 1,
    Value: 1
  };

  let binary_string = btoa(JSON.stringify(data));
  let len = binary_string.length;
  let aBuff = new Uint8Array(len);
  for (let i = 0; i < len; i++)
    aBuff[i] = binary_string.charCodeAt(i);

  this.ble.write(this.peripheral.id, this.peripheral.services, this.peripheral.characteristic, aBuff.buffer)
    .then(res => {
      console.log("OK");
      console.log(res)
    })
    .catch(err => {
      console.log("KO");
      console.log(err)
    });
}

但是什么也没发生。

感谢您的帮助:D

0 个答案:

没有答案