Как взаимодействовать с прозрачной службой UART BLE в xamarin

#xamarin.forms #bluetooth-lowenergy #uart #bluetooth-gatt

Вопрос:

Я пытаюсь создать приложение с помощью xamarin, которое может взаимодействовать с чипом rn4870. Этот чип BLE использует прозрачные сервисы UART. Я новичок в Bluetooth, поэтому самое большее, что я читаю для связи с устройством ble, — это сканировать устройство, подключать его, искать нужную услугу, получать характеристики и писать,читать или уведомлять.

Но, самый пример, который я читал, с устройством сердечного ритма o smartwath , служба определена, например, услуга для батареи, поэтому я могу получить услугу, затем характеристику и прочитать ее. Но с прозрачным сервисом UART я получаю 49535343-FE7D-4AE5-8FA9-9FAFD205E455 услугу передачи данных, а затем получаю характеристики TX 49535343-1E4D-4BD9-BA61-23C647249616 и RX 49535343-8841-43F4-A8D4-ECBE34729BB3 , но я не знаю, как общаться.

Также я использую плагин BLE xamarin, с помощью этого плагина я не вижу никакой конкретной функции или документации, в которой я мог бы использовать функциональность клиента/сервера.

https://github.com/xabre/xamarin-bluetooth-le

Итак, если у кого-нибудь есть идея, как или какому шагу я должен следовать, чтобы общаться с ним, и если вы знаете, как я мог бы это сделать с помощью xamarin, я буду признателен.

Заранее спасибо.

Ответ №1:

Вы можете обращаться с прозрачной службой UART так же, как с обслуживанием батареи.

  1. Сканируйте доступные устройства, даже лучше, если вы используете фильтр только для поиска устройств, предлагающих услугу UART
 adapter.DeviceDiscovered  = (s,a) => deviceList.Add(a.Device);
await adapter.StartScanningForDevicesAsync(new[] { Guid.Parse("49535343-FE7D-4AE5-8FA9-9FAFD205E455"));
 
  1. Подключитесь к устройству
 try
{
    await _adapter.ConnectToDeviceAsync(device);
}
catch(DeviceConnectionException e)
{
    // ... could not connect to device
}
 
  1. Получите услугу UART и обе характеристики
 var TX = await connectedDevice.GetServiceAsync(Guid.Parse("49535343-1E4D-4BD9-BA61-23C647249616"));
var RX = await connectedDevice.GetServiceAsync(Guid.Parse("49535343-8841-43F4-A8D4-ECBE34729BB3"));
 
  1. Включите уведомления о характеристике TX, чтобы получать ответы и начинать запись в характеристику RX
 TX.ValueUpdated  = (o, args) =>
{
    // Do something with the received value
    var bytes = args.Characteristic.Value;
};

await TX.StartUpdatesAsync();

await RX.WriteAsync(bytes);
 

Если вы хотите проверить соединение и процедуру связи, вы можете использовать универсальное приложение для сканирования BLE, такое как nRF Connect. Используйте его для поиска вашего устройства, и с его помощью вы сможете читать, записывать и активировать уведомления.

Существует также пример приложения, использующего ваш плагин xamarin, который предлагает эту функциональность:

  • проверьте статус ble
  • обнаружение устройств
  • подключение/отключение
  • откройте для себя услуги
  • откройте для себя характеристики
  • смотрите подробные характеристики
  • чтение/запись и регистрация уведомлений о характеристике