我正在使用 QTcpSocket 类在我的 QT-UI 和我的 PLC 之间进行通信。
最近我更改了协议,以便可以发送大量连贯的数据。目标是通过 TCP 协议发送字符串数据。
在 PLC 端,我将响应的发送延迟了大约 30 毫秒。那是 PLC 需要处理字符串的时间。响应是发送,我知道在 UI 端发送下一个。现在的问题是,30ms 似乎太长了。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;
}
}
这是一种选择,但它是一种粗略的方法。
任何帮助表示赞赏。