xamarin формы: как получить Bluetooth LE Уведомить - PullRequest
0 голосов
/ 05 марта 2019

Я использую этот плагин https://github.com/xabre/xamarin-bluetooth-le

Теперь я пытаюсь написать характеристику и получить ответ от устройства BLE.После отправки команды на устройство BLE, я хотел бы использовать характеристику. ValueUpdated для получения ответа.Но мой код не работает.Поэтому я хотел бы знать, как использовать характеристику. ValueUpdated и характеристику. StartUpdatesAsync ().

Шаги для воспроизведения

  1. Подключите устройство BLE и получите Устройство, Сервис и Характеристика
  2. Использовать характеристику await .WriteAsync (команда) для отправки команды на устройство BLE.
  3. Использовать характеристику. Value.ValueUpdated и ожидание .StartUpdatesAsync () для получения ответа от устройства BLE.

Ожидаемое поведение: Должен быть вызван признак события. ValueUpdated, и я могу получить ответ.

Фактическое поведение: характеристика. Не вызывается признак.

Конфигурация: ** Версия плагина:2.0.0-pre1 ** Платформа: iOS 12.1 / Android 7.1 ** Устройство: iPhone XR / Asus 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;
}
...