0

我正在使用 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;
    }
}

这是一种选择,但它是一种粗略的方法。

任何帮助表示赞赏。

4

0 回答 0