Приложение C ++ Tinyb для считывания температуры дает постоянные показания, которые не отражают фактическое изменение температуры - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь прочитать значения температуры с датчика температуры BLE (диск с темпом bluemaestro)

Я занимаюсь разработкой на c ++ с использованием библиотеки tinyb intel, которая требует bluez.

Соответствующий фрагмент кода:

using Iter = std::vector<std::unique_ptr<tinyb::BluetoothDevice>>::const_iterator;
while (true)
{
    for (Iter it = sensor_tag_array.begin(); it != sensor_tag_array.end(); ++it)
    {
        std::string address_ = (*it)->get_address();

        std::map<uint16_t, std::vector<uint8_t>> mfg__ = (*it)->get_manufacturer_data();
        for (auto it : mfg__)
        {
            if (it.second.empty())
                logger_->error("{}, {} :Empty mfg for : {}", __FILENAME__, __func__, bleMap[address_].sensor_name);
            else
            {
                if (it.second.front() == 23)
                {
                    battery_lvl = it.second[1];
                    first_byte = it.second[6];
                    second_byte = it.second[7];
                    temperature = convert_to_actual(first_byte, second_byte) / 10.0;
                    std::cout << "\nTemperature is for : " << bleMap[address_].sensor_name << " : " << temperature << "\n";
                }
            }
        }
}

Это правильно давало правильные значения времени до сих пор.Но вдруг он начал печатать одно постоянное чтение при каждом перезапуске приложения.Какое бы значение температуры не было прочитано при запуске приложения, оно повторяется в течение всего времени выполнения приложения.Я использовал приложение утилиты tempo, чтобы убедиться, что датчик на самом деле сообщает правильные значения в реальном времени.

Я попытался переустановить ОС (Ubuntu 18.04.1), пробовал несколько версий bluez (5.48 доустановлено, 5.39 и 5.37), но проблема все еще существует.

Я также изменил частоту рекламы в устройстве bluemaestro.

Как решить эту проблему?

...