Основной выпуск : при получении больших данных в различных чанках. SIGNAL QLowEnergyService :: характеристикаChanged не излучает после получения нескольких порций данных. Поэтому я не могу получить полные данные. Ниже приведены подробности:
Сценарий: Центральный и периферийный случай [Я ищу центральный код]. Периферийное устройство - это мобильное устройство на базе IOS / Android. Центральный ноутбук Linux. [Bluetooth HCI версии 4.2] Central подписался на характеристики c (Свойство: Уведомить) Периферийного устройства. Общий объем передаваемых данных составляет 171520 байт (приблизительно) от периферийных устройств. Размер пакета данных составляет 91 [1 байт заголовка, 90 байт данных].
Проблема: Периферийное устройство обновляет свои характеристики c с небольшими данными.
Центральный получает пакеты данных. Поэтому после получения нескольких пакетов данных (иногда 30, 50 или 100) от периферийного устройства,
Клиент не получает от него все пакеты данных.
Проблема в QT:
/*-------------------------------------
CLIENT SIDE CODE SNIPPET
--------------------------------------*/
/*
* Device: a Class, which handles BLE communication.
* m_service: is pointer of type QLowEnergyService
*/
--> connect(m_service, &QLowEnergyService::characteristicChanged, this, &Device::CharatValueUpdated);
/*
* This function gets called when, Peripheral sends data
*/
--> void Device::CharatValueUpdated(const QLowEnergyCharacteristic &c, const QByteArray &value)
{
// Do nothing to avoid overhead
// ...................
// ...................
}
fn CharatValueUpdated (QLowEnergyCharacteristic &, QByteArray &) - это моя функция обратного вызова / слота, когда Peripheral обновляет свои характеристики c, эта функция вызывается, и клиент получает обновленные данные в параметре "value".
ISSUE : после нескольких вызовов fn "CharatValueUpdated ()" не вызывается.
его QT, который вызывает этот fn, когда получает данные с периферийной стороны.
Сигнал "QLowEnergyService :: характеристикаChanged" срабатывает случайным образом иногда через 30, 50 или 150 и внезапно прекращает излучать этот сигнал без полной передачи данных.
Примечание : тот же исходный код отлично работает на QT Windows 10.