xamarin形式:如何获取蓝牙LE通知

时间:2019-03-05 00:13:47

标签: c# xamarin xamarin.forms bluetooth bluetooth-lowenergy

我使用此插件https://github.com/xabre/xamarin-bluetooth-le

现在,我正在尝试编写特征并从BLE设备获得响应。 将命令发送到BLE设备后,我想使用feature.ValueUpdated获得响应。 但是我的代码不起作用。因此,我想知道如何使用feature.ValueUpdated和Characteristics.StartUpdatesAsync()。

复制步骤

  1. 连接BLE设备并获取设备,服务和特征
  2. 使用等待特征.WriteAsync(command)将命令发送到BLE设备
  3. 使用character.ValueUpdated并等待character.StartUpdatesAsync()从BLE设备获取响应。

预期的行为: 事件特性.ValueUpdated应该被调用,我可以获得响应。

实际行为: 特性。不调用ValueUpdated。

配置: **插件版本:2.0.0-pre1 **平台:iOS 12.1 / Android 7.1 **设备:iPhone XR /华硕Android

public int SendCommand(byte[] command)
{
    if (device == null || service == null || characteristic == null)
    {
        return 1;
    }

    var result1 = WriteCharacteristic(command);

    receive_data = GetResponse().Result;

    if (receive_data == null || receive_data[1] != 0x00)
    {
        return 1;
    }

    return 0;
}

private async Task<bool> WriteCharacteristic(byte[] command)
{
    await characteristic.WriteAsync(command);
    return true;
}

private async Task<byte[]> GetResponse()
{
    byte[] bytes = new byte[20];

    characteristic.ValueUpdated += (o, args) =>
    {
        bytes = args.Characteristic.Value;
    };

    await characteristic.StartUpdatesAsync();

    return bytes;
}

0 个答案:

没有答案