Я использую этот плагин https://github.com/xabre/xamarin-bluetooth-le
Теперь я пытаюсь написать характеристику и получить ответ от устройства BLE.После отправки команды на устройство BLE, я хотел бы использовать характеристику. ValueUpdated для получения ответа.Но мой код не работает.Поэтому я хотел бы знать, как использовать характеристику. ValueUpdated и характеристику. StartUpdatesAsync ().
Шаги для воспроизведения
- Подключите устройство BLE и получите Устройство, Сервис и Характеристика
- Использовать характеристику await .WriteAsync (команда) для отправки команды на устройство BLE.
- Использовать характеристику. 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;
}