• 8811阅读
  • 4回复

串口调试,接受数据多了就会卡死。怎么解决? [复制链接]

上一主题 下一主题
离线ltaor
 
只看楼主 倒序阅读 楼主  发表于: 2010-09-21
— 本帖被 XChinux 执行加亮操作(2010-09-21) —
关键词: load串口
写了个程序要用串口接收数据,然后实时显示。


void MainWindow::readMyCom()
{
    QByteArray temp = myCom->readAll();

    if(ui->sciDataCheckBox->checkState()==Qt::Checked)
    {
        if(ui->checkBoxHex->checkState()==Qt::Checked)
        {
        //    ui->rceiveMsgText->textCursor().insertText("\r\n");
        //加上这个换行就不会卡。为什么呢?
            ui->rceiveMsgText->textCursor().insertText(temp.toHex());
        }else
        ui->rceiveMsgText->textCursor().insertText(temp);
        ui->rceiveMsgText->moveCursor(QTextCursor::End);
    }
}
这样效率会不会很底啊!
接收了两三页数据后程序就会慢慢卡死了。 请问有什么方法解决。

[ 此帖被ltaor在2010-09-21 21:30重新编辑 ]
离线xiangjie329

只看该作者 1楼 发表于: 2010-09-21
多线程
离线ltaor
只看该作者 2楼 发表于: 2010-09-21
我用的用的是qextserialport 类,读数据已经是多线程了啊!难道显示数据也再开个线程?
在这载的别人做的好像也有这个问题啊!
离线dbzhang800

只看该作者 3楼 发表于: 2010-09-21
引用楼主ltaor于2010-09-21 18:08发表的 串口调试,接受数据多了就会卡死。怎么解决? :
       写了个程序要用串口接收数据,然后实时显示。要有两种显示方式。
我一个是用QTextEdit, 一用的是QTableWidget.
但是都会接收了两三页数据后程序就会慢慢卡死了。 请问有什么方法解决。

串口问题先不说,你选择这两个widget都不是好的选择:
1. 用 QPlainTextEdit 取代你的 QTextEdit
2. 用QTableView取代你的QTableWidget
离线ltaor
只看该作者 4楼 发表于: 2010-09-21
谢谢楼上,我试试看。
快速回复
限100 字节
 
上一个 下一个