QT避免数据串口数据读取不完整(QT系列13)

有时候QT在串口读取的数据会不完整,或者一次的数据会分两次读取。
出现这种情况一般是串口读取数据太快了,让读取函数延时一段时间就可以有效的避免串口数据读取不完整的情况。
延时可以选择用定时器,但那种方式需要定义信号与槽,比较麻烦,这里直接调用QTime来进行延时。


//头文件引用
#include <QTime>
//读取函数的信号与槽连接
connect(serial,SIGNAL(readyRead()),this,SLOT(ReadData()));

//读取函数
void MainWindow::socket_Read_Data()
{
    QTime time;
        time.start();
        while(time.elapsed() < 1000)             //等待时间流逝1000ms
            QCoreApplication::processEvents();   //处理事件
    QByteArray buffer;
    QString str;
    //读取缓冲区数据
    buffer = socket->readAll();
    if(!buffer.isEmpty())
    {
        str+=tr(buffer);

    }buffer.clear();//清空传递所用的字符串,避免下次数据错误
}


//处理成一个函数
void MainWindow::delayms(int num)
{
    QTime time;
            time.start();
            while(time.elapsed() < num)             //等待时间流逝num ms
                QCoreApplication::processEvents();   //处理事件
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值