1

如何阻塞直到一行完成执行?

我的代码从两个串行端口读取并将两者的输出写入单个控制台。这个想法是写第一个串口的所有输出,然后是第二个串口的所有输出。如何阻止第二次写入控制台,直到第一次写入控制台完成?

睡眠不起作用。它所做的只是写入第一个 putData 的第一个字符,等待 1 秒,然后将第一个串行端口的其余部分与第二个串行端口输出混合在一起。

以下是相关方法:

void MainWindow::readData() 
{
    QByteArray data = serial->readAll();
    console->putData(data);

    Sleep(1000); //This does not work.

    QByteArray data2 = serial2->readAll();
    console->putData(data2);
}

[Win 7、Qt 5.0、Qt Creator]。

4

1 回答 1

2

我不明白为什么 readAll() 给你单个字符而不是整个消息,但你可以尝试这样的事情:

void MainWindow::readData() 
{
    QByteArray data = serial->readAll();
    console->putData(data);

    if(data.isEmpty())
    {
        QByteArray data2 = serial2->readAll();
        console->putData(data2);
    }
}
于 2013-07-13T06:30:47.323 回答