Android Bluetooth Gatt getValue возвращает массив размером 20 байтов - PullRequest
0 голосов
/ 03 июля 2019

Мое приложение для Android обменивается данными с микросхемой RN4871. Ранее я заставлял его работать с чипом, который был обновлен до версии прошивки 1.3.

У меня проблема с прошивкой версии 1.18, которую я должен поддерживать. При отправке определенных сообщений метод getValue onCharacteristicChange непрерывно возвращает массив размером 20 байт по 0 байт, примерно 10 раз в секунду.

Я отправил тот же пакет через приложение Serial Bluetooth того же телефона, и ответ работает, как и ожидалось.

Я попытался использовать getStringValue, результат - 20 нулевых (ASCII 0) символов

       @Override
       public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
            super.onCharacteristicChanged(gatt, characteristic);
            readCharacteristic(characteristic);
        }

        private void readCharacteristic(BluetoothGattCharacteristic characteristic) {
            byte[] messageBytes = characteristic.getValue();
            String message = StringUtils.stringFromBytes(messageBytes);
            Log.d("Status", message);
        }

Ожидаемое сообщение, которое будет напечатано, должно быть строкой, но то, что было напечатано, равно 20-nullchar ( ) * +1010 *

...