RxAndroidBle - Написать характеристику и получать уведомления - Уведомления не получены

Я сознательно пишу этот ответ на старый вопрос с этим в виду, потому что другие ответы мне не помогли.

Я получил Illegal Instruction: 4, пока запустив двоичный файл в той же системе, на которой я его скомпилировал, поэтому -mmacosx-version-min не помогло.

Я использовал gcc в Code Blocks 16 в Mac OS X 10.11.

Тем не менее, отключить все флаги компилятора Code Blocks для оптимизации. Поэтому посмотрите на все флаги, установленные в блоке Code Block (щелкните правой кнопкой мыши на Project -> «Build Properties») и отключите все флаги, которые вам не нужны, особенно -s и флаги -O для оптимизации , Это сделало это для меня.

0
задан Stijn 26 February 2019 в 11:03
поделиться

1 ответ

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

D/BluetoothGatt: setCharacteristicNotification() - uuid: e3ba1526-2785-005b-6676-d476eabca48e enable: true
D/RxBle#ConnectionOperationQueue: STARTED  DescriptorWriteOperation(82308959)
D/RxBle#BluetoothGatt$1: onDescriptorWrite descriptor=00002902-0000-1000-8000-00805f9b34fb status=0
D/RxBle#ConnectionOperationQueue: FINISHED DescriptorWriteOperation(82308959) in 91 ms
D/RxBle#ConnectionOperationQueue: STARTED  CharacteristicWriteOperation(85617269)
D/RxBle#BluetoothGatt$1: onCharacteristicWrite characteristic=e3ba1527-2785-005b-6676-d476eabca48e status=0
E/Interval_start_timestamp: write 1548979200
D/RxBle#ConnectionOperationQueue: FINISHED CharacteristicWriteOperation(85617269) in 92 ms

Сначала установите уведомление, затем записывайте характеристику и не сообщайте о каких-либо ошибках. В этой ситуации я думаю, что проблема связана с допущениями и будет дважды проверяться, если:

  1. Правильный UUID используется для характеристики уведомления / индикации
  2. Правильный UUID используется для характеристики, которая должны инициировать уведомления
  3. Значение, которое записывается в характеристику, которая должно инициировать уведомления, является правильным (например, если не было допущено никакой ошибки в преобразовании ByteUtils.toByteArray(timestamp), т.е. порядком байтов)
0
ответ дан Dariusz Seweryn 26 February 2019 в 11:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: