无法使用qextserialport声明串口

时间:2015-09-27 22:54:14

标签: c++ qt serial-port qextserialport

我已经看过几个问题并且搜索了很多问题,我无法找到使用qextserialport声明串口对象的方法,以便读取和写入arduino。我尝试了用户在How to write on serial port using Qextserialport中所做的事情,但编译器给出了以下错误:

undefined reference to `QextSerialPort::QextSerialPort(QString const&, QextSerialPort::QueryMode, QObject*)'

以下是我使用的代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QtExtSerialPort/qextserialport.h>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_BTN_Connect_clicked()
{

    int index=ui->Selector_Port->currentIndex();
    QextSerialPort *port = new QextSerialPort("/dev/ttyACM0");
}

为什么会出现此错误?我使用的是Debian 8.2和QT 4.8.6

修改 添加行后:

CONFIG += qesp_linux_udev
QT += extserialport

到项目文件中,我遇到以下错误:

"Project MESSAGE: Warning: unknown QT: extserialport"

1 个答案:

答案 0 :(得分:4)

错误消息由链接器生成。这意味着它无法找到QextSerialPort库二进制文件。

根据Qt4中的QextSerialPort Manual QextSerailPort,只能在比较模式中使用:

  

可以用作静态或共享库,也可以简单地集成   组件进入应用程序。

最简单的解决方案就是与您的主项目一起构建QextSerailPort。只需将其包含在项目文件(.pro)中:

include(pathToQesp/compat/qextserialport.pri)

您不需要QT += extserialport,因为在 Compat Mode 中它不用作Qt模块。

最简单的HowTo

  • 创建一个新文件夹;去吧:mkdir test && cd test
  • git clone https://github.com/qextserialport/qextserialport
  • 在此文件夹中创建一个新的Qt项目,例如名称为extserialtest,因此您有两个文件夹:
    • qextserialportQextSerailPort
    • extserialtest与您的Qt项目
  • 将行include (../qextserialport/src/qextserialport.pri)添加到extserialtest.pro
  • 编写您的项目代码:#include <qextserialport.h>new QextSerialPort("/dev/ttyACM0");

在Linux上的Qt 4.8.3中验证它开箱即用。