Delphi FMX BluetoothLE - Ошибка записи характеристики

Я пишу приложение для Android и iOS, которое взаимодействует через BLE с Adafruit Bluefruit LE UART Friend, используя сервис Nordic UART и характеристики TxD/RxD.

TxGattCharact: TBluetoothGattCharacteristic;
SelectedDevice: TBluetoothLEDevice;

TxGattCharact.SetValueAsString(myString, True); // UTF8 required
if BluetoothLE1.WriteCharacteristic(SelectedDevice, TxGattCharact) then
  ... // everything just fine
else
  Log('Writing Characteristic denied or unsuccessfull');

Мне пришлось разбить строку на куски не более 20 символов в соответствии с правилом BLE. Это работает в 90% случаев. Однако иногда WriteCharacteristic не работает.

Есть ли способ понять причину и возможные действия для предотвращения этого? Могу ли я сбросить буферы BLE, чтобы очистить все перед отправкой другой строки?

Заранее спасибо за вашу помощь


person Bob Baudewyns    schedule 26.09.2017    source источник


Ответы (1)


Одна вещь, которую нужно проверить, это то, что UART включен в модуле Nordic — я столкнулся с проблемой, похожей на эту, потому что иногда UART каким-то образом отключался. Вы можете использовать приложение Nordic Toolbox (для iOS или Android), чтобы проверить это. Вам также может понадобиться убедиться, что устройство все еще подключено, прежде чем пытаться писать на него (проверьте свойство TBluetoothLEDevice.IsConnected).

person ByteArts    schedule 07.10.2017