我正在使用QTcpSocket类在我的QT-UI和我的PLC之间进行通信。
最近我改变了我的协议,以便我可以发送大量连贯的数据块。目标是通过TCP协议发送字符串数据。
在PLC侧,我将响应的发送延迟大约30毫秒。这是PLC处理字符串所需的时间。响应是发送的,我知道在UI端发送下一个。
现在的问题是,30毫秒似乎很长。在QTcpSocket::ReadyRead
信号之前发出QTcpSocket :: disconnected信号。
有没有办法在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;
}
}
这是一个选项,但这是一种粗略的方法。
感谢任何帮助。