2013-07-12 1 views
1

Как заблокировать до завершения строки?Блокировка записи на консоль в C++ Qt Qt5.0

Мой код считывается из двух последовательных портов и записывает вывод обоих на одну консоль. Идея состоит в том, чтобы написать весь вывод из первого последовательного порта, а затем весь вывод из второго последовательного порта. Как заблокировать вторую запись на консоль до тех пор, пока первая не закончит запись на консоль?

Сон не работает. Все, что он делает, это написать первый символ первого 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].

ответ

2

Я не понимаю, почему ReadAll() дает вам отдельные символы вместо всего сообщения, но вы могли бы попробовать что-то вроде этого:

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

    if(data.isEmpty()) 
    { 
     QByteArray data2 = serial2->readAll(); 
     console->putData(data2); 
    } 
} 
+0

Проблема была с сигналами не является правильным. Они неправильно пишут в слот консоли. – Dirk