Похоже на эту проблему
Чтение / запись пользовательских характеристик с устройства BLE
Интересно узнать, почему мне нужно записать код команды на устройство BLE, прежде чем получать с него данные?
Я сделал это, даже не знаю почему.
Вот часть моего кода (почти то же самое из проблемы выше)
Я должен проверить документ от поставщика! Убедитесь, что команды верны
byte [] arrayOfByte = new byte[8];
arrayOfByte [0] = (byte) 0x51;
arrayOfByte [1] = (byte) 0x26;
arrayOfByte [2] = (byte) 0x00;
arrayOfByte [3] = (byte) 0x00;
arrayOfByte [4] = (byte) 0x00;
arrayOfByte [5] = (byte) 0x01;
arrayOfByte [6] = (byte) 0xA3;
arrayOfByte [7] = ((byte)(arrayOfByte[0] + arrayOfByte[1] + arrayOfByte[2] + arrayOfByte[3] + arrayOfByte[4] + arrayOfByte[5] + arrayOfByte[6]& 0xFF ));
Char.setValue(arrayOfByte);
boolean result = gatt.writeCharacteristic(Char);
После этого он вызовет обратный вызов
onCharacteristicWrite
и
onCharacteristicChanged
В обоих случаях у меня есть оператор if / else, чтобы удостовериться, что статус
BluetoothGatt.GATT_SUCCESS
когда я пытаюсь получить данные от
onCharacteristicChanged
Я получаю значение, которое записываю в него.
То, что я сделал, это ...
Получить данные в соответствии с документом SIG.
Однако мне нужно получить данные из пользовательской характеристики.
Чтобы получить другие данные, такие как предыдущие, а не последние.
Что я пытаюсь сделать, это (шаг за шагом)
- Сканирование устройства BLE.
- Используйте Gatt connect с устройством.
- Получить правильную характеристику (фильтр по uuid) и установить индикатор или свойство уведомления.
- Запишите команду (байтовый массив) для характеристики
- Получить данные в функции обратного вызова (используйте характеристику.getvalue ())
onCharacteristicChange
Большое спасибо!