无法使用 qextserialport 声明串口

Can't declare serial port using qextserialport

本文关键字:声明 串口 qextserialport      更新时间:2023-10-16

我看到了几个问题,谷歌了很多,我找不到一种方法来声明一个串口对象使用qextserialport,为了读写/从arduino。我尝试了用户在如何使用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"

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

根据QextSerialPort Manual, Qt4中的QextSerailPort只能在Compat Mode:

下使用

可以用作静态库或共享库,也可以简单地集成

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

include(pathToQesp/compat/qextserialport.pri)

您不需要QT += extserialport,因为在比较模式下它不被用作Qt模块。


最简单的方法

  • 创建新文件夹;点击:mkdir test && cd test
  • git clone https://github.com/qextserialport/qextserialport
  • 在这个文件夹中创建一个新的Qt项目,例如名称为extserialtest,这样你就有两个文件夹:
    • qextserialport with QextSerailPort package
    • extserialtest与您的Qt项目
  • include (../qextserialport/src/qextserialport.pri)行添加到extserialtest.pro
  • 写你的项目代码:#include <qextserialport.h>new QextSerialPort("/dev/ttyACM0");

在Linux的Qt 4.8.3上验证,它可以开箱即用