#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 так же, как с обслуживанием батареи.
- Сканируйте доступные устройства, даже лучше, если вы используете фильтр только для поиска устройств, предлагающих услугу UART
adapter.DeviceDiscovered = (s,a) => deviceList.Add(a.Device);
await adapter.StartScanningForDevicesAsync(new[] { Guid.Parse("49535343-FE7D-4AE5-8FA9-9FAFD205E455"));
- Подключитесь к устройству
try
{
await _adapter.ConnectToDeviceAsync(device);
}
catch(DeviceConnectionException e)
{
// ... could not connect to device
}
- Получите услугу 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"));
- Включите уведомления о характеристике 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
- обнаружение устройств
- подключение/отключение
- откройте для себя услуги
- откройте для себя характеристики
- смотрите подробные характеристики
- чтение/запись и регистрация уведомлений о характеристике