Я разрабатываю приложение для Android с BLE. Требование этого приложения заключается в обновлении изменения напряжения в конкретном оборудовании с различными входами.Android BLE: проблема с длиной сообщения
Поэтому я пишу символы в BLE как 8-битный вход. Каждое битовое значение содержит свои собственные представления. На основе каждого запроса аппаратное обеспечение будет реагировать и предоставлять различные комбинации выходных данных. Вывод содержит 24 байта информации. Каждая позиция байта представляет собой различное значение. например: позиция 1 & 2 представляют ток, 3 & 4 представляют напряжение и т. д. Моя проблема здесь, я получаю вывод как 4 части. Каждое сообщение содержит 6 байтов. Можно ли получить одно и то же в одном сообщении?
Реализация
public void writeCharacteristic(BluetoothGattCharacteristic characteristic) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) { //Check that we have access to a Bluetooth radio
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
int test = characteristic.getProperties(); //Get the properties of the characteristic
if ((test & BluetoothGattCharacteristic.PROPERTY_WRITE) == 0 && (test & BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE) == 0) { //Check that the property is writable
return;
}
DebugLogs.writeToFile("BLE MODULE Before Write " + characteristic);
if (mBluetoothGatt.writeCharacteristic(characteristic)) { //Request the BluetoothGatt to do the Write
Log.v(TAG, "****************WRITE CHARACTERISTIC SUCCESSFULL**" + characteristic); //The request was accepted, this does not mean the write completed
DebugLogs.writeToFile("BLE MODULE AFTER Write SUCCESS " + characteristic);
} else {
Log.d(TAG, "writeCharacteristic failed"); //Write request was not accepted by the BluetoothGatt
DebugLogs.writeToFile("BLE MODULE AFTER Write FAIL " + characteristic);
}
}
И ответ получает в обратный вызов Гатт
@Override
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
Log.w(TAG, "**ACTION_DATA_AVAILABLE**" + characteristic.getUuid());//Indication or notification was received
broadcastUpdate(BLEConstants.ACTION_DATA_AVAILABLE, characteristic); //Go broadc
аст намерения с характерными данными }
Хорошо, спасибо за ваш ответ. – Nithinjith
Я думаю, что спецификация BLE допускает максимум 512 байтов для характеристики, можете ли вы указать мне раздел спецификации, в котором указано, что ограничение на 20 байтов или ограничение на андроид? –
Я считаю, что вы можете получить большие пакеты, если вы измените размер MTU, но только если оба устройства могут это поддержать. Кроме того, я думаю, что увеличение MTU просто заставляет его разбивать его на несколько пакетов за кулисами. [Вот еще информация] (https://community.nxp.com/thread/332030) и [здесь спецификация Android для изменения MTU.] (Https://developer.android.com/reference/android/ bluetooth/BluetoothGatt.html # requestMtu% 28int% 29) – Seth