Не отрабатывает сигнал readyRead() в QSerialPort



  • Всем привет, товарищи форумчане!
    Столкнулся с такой проблемой (баг Qt или нет - не знаю):
    У меня есть слот, который по приходу пакета - получает его.
    Мой connect();

    connect(serial, &QSerialPort::readyRead, this, &eq_systems::readData);
    

    Кнопки "Подключиться к порту" у меня нету. Есть только кнопка "Write", по её нажатию я подключаюсь к порту, отправляю пакет, жду несколько секунд ответ от устройства. В любом случае, будет ответ или нет, я отключаюсь от порта.

    Так вот: если устройство ответит, то сигнал QSerialPort::readyRead(); исправно отработает. Но! Если устройство ответит больше одного раза, то при следующей отправки пакета и получения ответа - сигнал QSerialPort::readyRead(); не отработает никогда.

    Если устройство будет отвечать исправно по одному ответу на пакет, то всё будет нормально. Но вдруг баг и будет 2 ответа, то сигнал QSerialPort::readyRead(); не отработает

    Что делать в таких ситуациях?

    Слот, который принимает ответ с устройства по сигналу QSerialPort::readyRead();

    void eq_systems::readData()
    {
    	packet = serial->readAll();
    	qDebug() << "DATA: " << packet;
    }
    

    Буду очень признательный.



  • Дополню:

    У меня есть таймер и слот. Совсем другой слот. Он нужен для того, чтобы отсчитать время ожидания пакета и вывести ошибку, если пакет с ответом не пришел. Также есть слот, который работает по сигналу QSerialPort::readyRead(); вызывается он тогда, когда приходит ответ от устройства.

    Нажимаю на кнопку - подключаюсь к порту, шлю пакет, запускаю таймер. Таймер обновляет слот до тех пор, пока не придет пакет с ответом от устройства. Если пакет с ответом не пришел, значит сигнал не отработал, а значит, по логике вещей, пакет до устройства не дошел или на конце линии устройства вообще нету. Но если приходит ответ, то по сигналу QSerialPort::readyRead(); я попадаю в другой слот, где я отключаю таймер, отключаюсь от порта и пишу в статусе что всё "ок".

    Сам баг происходит тогда, когда от порта произошло отключение и я (со стороны устройства) начинаю просто слать пакеты либо куда. И вот тут самое интересное. Когда снова я отправляю пакет с программы на устройство, а устройство мне отвечает, то сигнал не отрабатывается вообще.

    Что делать, подскажите?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.