Невозможно объявить последовательный порт, используя qextserialport

Я видел несколько вопросов и много гуглил, и не могу найти способ объявить объект последовательного порта, используя 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"

-1

Решение

Сообщение об ошибке генерируется компоновщиком. Это означает, что он не может найти QextSerialPort двоичные файлы библиотеки

В соответствии с Руководство по QextSerialPort QextSerailPort в Qt4 можно использовать только в Compat Mode:

Может использоваться как статическая или совместно используемая библиотека или просто интегрировать
компонент в приложении.

Самое простое решение — просто построить 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Итак, у вас есть две папки:
    • qextserialport с QextSerailPort пакет
    • extserialtest с вашим проектом Qt
  • добавить строку include (../qextserialport/src/qextserialport.pri) в extserialtest.pro
  • напишите свой код проекта: #include <qextserialport.h> а также new QextSerialPort("/dev/ttyACM0");

Проверено на Qt 4.8.3 в Linux, что оно работает из коробки.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]