zoukankan      html  css  js  c++  java
  • Qt QSerialPort串口 接收数据 QIODevice::readyRead()

    QSerialPort 负责具体的串口操作。选定串口后,要先打开串口,才能设置波特率等参数。这些参数都设置好了就可以使用了。最基本的操作无非是read() 和 write()。需要注意的是这两个操作都是非阻塞的

    另外有一个重要的signal 也需要用到,那就是 void QIODevice::readyRead()

    每次串口收到数据后都会发出这个signal。我们的程序中需要定义一个slot,并将其与这个signal 相连接。这样,每次新数据到来后,我们就可以在slot中读取数据了。这时一定要将串口缓冲区中的数据全部读出来,可以利用readAll() 来实现。

    下面的代码片段给出了设置串口的例子:

    m_reader.setPort(info);
    if(m_reader.open(QIODevice::ReadWrite))
    {
            qDebug() << "m_reader.open(QIODevice::ReadWrite)";
            m_reader.setBaudRate(QSerialPort::Baud9600);
            m_reader.setParity(QSerialPort::NoParity);
            m_reader.setDataBits(QSerialPort::Data8);
            m_reader.setStopBits(QSerialPort::OneStop);
            m_reader.setFlowControl(QSerialPort::NoFlowControl);
    
            m_reader.clearError();
            m_reader.clear();
            connect(&m_reader, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
    }
    
    
    void Dialog::readyReadSlot()
    {
        qDebug() << "x";
        QByteArray arr = m_reader.readAll();
        do_something(arr);
    }
  • 相关阅读:
    day 17
    day 16
    信息系统项目管理师 教程学习 第一章
    服务器安全防护
    少有人走的路
    Python文件学习
    测试新文章
    测试
    python基础 一、 数值类型、序列类型和散列类型
    apache No input filespecified
  • 原文地址:https://www.cnblogs.com/zzzsj/p/15741617.html
Copyright © 2011-2022 走看看