在Ionic中将String命令发送到BLE

时间:2018-08-27 15:48:53

标签: ionic-framework bluetooth-lowenergy

im是ionic的新功能,现在我正尝试发送字符串形式的“代码”。 该字符串由十六进制中的一些数据包数据组成。 例如。 V1-FC03-2ED1-FE01

V1是序列,然后是第一个-是第一个数据包“ FC03” 该代码使用PC上的串行监视器成功发送到了我的arduino。 arduino serial monitor

现在我想使用离子通过低功耗蓝牙发送它。 我按照github上的示例进行BLE。 如果发送1或0,则有效。

这是离子代码中的功能,按下按钮后将发送到arduino

onPowerSwitchChange(event) {
console.log('onPowerSwitchChange');
let value = this.power ? 1 : 0;
let buffer = new Uint8Array([value]).buffer;
console.log('Power Switch Property ' + this.power);
this.ble.write(this.peripheral.id, LIGHTBULB_SERVICE, SWITCH_CHARACTERISTIC, buffer).then(
  () => this.setStatus('Light is ' + (this.power ? 'on' : 'off')),
  e => this.showAlert('Unexpected Error', 'Error updating power switch')
);
}

我在这里尝试更改

 let value = this.power ? 1 : 0;

 let value = "V1-FC03-2ED1-FE01";

但是编译时出现错误

Argument of type 'string[]' is not assignable to parameter of type 'ArrayBuffer'. Property 'byteLength' is
        missing in type 'string[]'.
  L68:  let value = "V1-FC03-2ED1-FE01";
  L69:  let buffer = new Uint8Array([value]).buffer;
  L70:  console.log('Power Switch Property ' + this.power);

希望有人可以帮助我解决这个问题

1 个答案:

答案 0 :(得分:0)

不确定这是否对您有帮助,因为我不是行业程序员...但是我想发送“ 2”作为字符串,结果我必须这样做:

  var data = new Uint8Array(1);
  data[0] = 50;

其中50是等于2的Uint8Array

当前,我正在尝试从BLE反向读取,但无效,因此请及时通知我们您的进度。