Qt TcpSockets: время ожидания сигнала SIGNAL отключено

Я использую класс QTcpSocket для связи между моим QT-UI и моим ПЛК.

Недавно я изменил свои протоколы, чтобы я мог отправлять большие связные куски данных. Целью является отправка строковых данных по TCP-протоколу.

На стороне ПЛК я задерживаю отправку ответа примерно на 30 мсек. Это время, необходимое ПЛК для обработки строки. Ответ отправлен, и я знаю со стороны пользовательского интерфейса, чтобы отправить следующий. Проблема сейчас в том, что 30 мс кажутся длинными. Сигнал QTcpSocket::disconnected испускается до QTcpSocket::ReadyRead сигнал.

Есть ли способ изменить, когда QTcpSocket::disconnected испускается? Например, чтобы установить тайм-аут на 40 мсек.

Я старался tcpSocket->waitForReadyRead(100) что также приводит к излучению отключенного сигнала.

tcpSocket->setSocketOption(QAbstractSocket::KeepAliveOption, 1); результата тоже не было.

Единственный способ, о котором я могу думать прямо сейчас, - это немедленная отправка ответа и реализация пользовательской функции ожидания до отправки следующей строки.

void WaitMS(int DurationMS)
{
    QTime tWait;
    tWait.start();

    while(true){
        QCoreApplication::processEvents();
        if(tWait.elapsed()> DurationMS)
            break;
    }
}

Это вариант, но это грубый метод.

Любая помощь приветствуется.

0 ответов

Другие вопросы по тегам