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;
}
}
Это вариант, но это грубый метод.
Любая помощь приветствуется.