Считывание температуры с Bluetooth-датчика температуры nRF 51822 с телефона Android - PullRequest
0 голосов
/ 06 июня 2019

У меня есть этот температурный датчик Bluetooth https://www.aliexpress.com/item/nRF51822-Bluetooth-4-0-BLE-SOC-Temperature-Atmospheric-Pressure-Acceleration-Sensor-Module-Gyroscope-Light-Sensor-MPU6050/32859423925.html?spm=a2g0s.9042311.0.0.e3534c4dT9GRz3, и я пытаюсь прочитать температуру из него.Я могу подключиться к нему, получить услуги через

BluetoothGatt.getService(UUID.fromString("6e400001-b5a3-f393-e0a9-e50e24dcca9e")

и получить характеристики через

BluetoothGattCharacteristic mReadCharacteristic = mCustomService.getCharacteristic(UUID.fromString("6e400005-b5a3-f393-e0a9-e50e24dcca9e"));

результат:

mReadCharacteristic = {BluetoothGattCharacteristic@5322} 
 mDescriptors = {ArrayList@5326}  size = 1
 mInstance = 20
 mKeySize = 16
 mPermissions = 0
 mProperties = 16
 mService = {BluetoothGattService@5295} 
 mUuid = {UUID@5327} "6e400005-b5a3-f393-e0a9-e50e24dcca9e"
 mValue = null
 mWriteType = 2

Затем я вызываю mBluetoothGatt.readCharacteristic (mReadCharacteristic) и надеюсь получить данные через BluetoothGattCallback, но readCharacteristic всегда возвращает false

if ((characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_READ) == 0) {
    return false;
}

properties = 16 PROPERTY_READ = 5 Что я делаю не так?

1 Ответ

0 голосов
/ 06 июня 2019

Свойства - это битовая маска, операции которой поддерживает характеристика. Как показано на https://developer.android.com/reference/android/bluetooth/BluetoothGattCharacteristic.html, 16 означает уведомление и не читать, поэтому характеристика не может быть прочитана. Может, вам стоит попробовать зарегистрироваться для получения уведомлений?

...