您的位置:首页 > 编程语言 > Qt开发

QT测试小工具(串口通信)

2015-08-18 21:43 489 查看
最近手头上的一个STM32的项目需要通过串口通信控制,现在手头上的开发已经完全转到FEDORA之下。所以用QT做了一个小测试工具,直接快速创建工程,选择widget,带ui文件。其中需要用到串口,在pro文件中添加QT       += serialport,在头文件中包含:

#include <QtSerialPort/QSerialPort>

#include <QtSerialPort/QSerialPortInfo>

namespace Ui {

class Widget;

}

class Widget : public QWidget

{

    Q_OBJECT

public:

    explicit Widget(QWidget *parent = 0);

    ~Widget();

private slots:

    void on_pushButton_clicked();

private:

    Ui::Widget  *ui;

public:

    QList<QSerialPortInfo>       list;

    bool            com_open;

    QSerialPort *comport;

};

其中可以通过执行下面的程序将串口信息添加到list中。

    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())

    {

       qDebug() << "Name : " << info.portName();

       qDebug() << "Description : " << info.description();

       qDebug() << "Manufacturer: " << info.manufacturer();

       qDebug() << "Serial Number: " << info.serialNumber();

       qDebug() << "System Location: " << info.systemLocation();

       list.append(info);

    }

在按键的事件中,实现打开或关闭串口:

void Widget::on_pushButton_clicked()

{

    if (com_open)

    {

        comport->close();

        ui->pushButton->setText(QString("打开串口"));

        com_open = false;

    }

    else

    {

        QSerialPortInfo info;

        info = list.at(ui->portlist->currentIndex());//ui->portlist是一个combox

        qDebug() << "Name : " << info.portName();

        qDebug() << "Description : " << info.description();

        qDebug() << "Manufacturer: " << info.manufacturer();

        qDebug() << "Serial Number: " << info.serialNumber();

        qDebug() << "System Location: " << info.systemLocation();

        comport->setPort(info);

        //comport->setPortName(filename);

        if (comport->open(QIODevice::ReadWrite))

        {

            ui->pushButton->setText(QString("关闭串口"));

            comport->setBaudRate(QSerialPort::Baud115200,QSerialPort::AllDirections);

            comport->setDataBits(QSerialPort::Data8);

            comport->setParity(QSerialPort::NoParity);

            comport->setStopBits(QSerialPort::OneStop);

           // my_serialport->setStopBits(QSerialPort::TwoStop);

            comport->setFlowControl(QSerialPort::NoFlowControl);

            com_open = true;

        }

        else

            QMessageBox::information(this, tr("Opening com failed"), tr("Could not open file %1").arg(info.portName()));

    }

}

然后可以通过comport->write来发送串口数据。

参考:

Qt 串口类QSerialPort 使用笔记  -- blog.csdn.net/liyuanbhu/article/details/45540825

QT5 串口收发实例代码 -- http://blog.csdn.net/liang890319/article/details/13502885
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: