QT串行端口通讯没有这样的插槽

时间:2018-10-29 13:58:20

标签: c++ qt arduino serial-port slot

目标 我一直在尝试通过COM端口将数据从Arduino发送到我的计算机,我想在调试器控制台上查看这些值。

问题 尽管我以前可以使用相同的代码结构来完成它们的设置,但我无法获取和打印值。

QObject :: connect:没有这样的插槽MainWindow :: serialData()

QObject :: connect :(接收方名称:“ MainWindow”)

mainwindow.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QDebug>

namespace Ui {
  class MainWindow;
}

 class MainWindow : public QMainWindow
{
   Q_OBJECT

public:
  explicit MainWindow(QWidget *parent = nullptr);
  ~MainWindow();
  void serialData();

  private:
  Ui::MainWindow *ui;
  QSerialPort *arduino;
  QSerialPortInfo port;
};

   #endif // MAINWINDOW_H

mainwindow.cpp文件

        #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QtSerialPort/QSerialPort>
    #include <QtSerialPort/QSerialPortInfo>
    #include <QDebug>
    #include <string>



    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);

        /*List available ports with a combo box*/
        Q_FOREACH(port, QSerialPortInfo::availablePorts())
        {
            ui->comboBox->addItem(port.portName());
        }

        arduino = new QSerialPort(this);
        arduino->setPortName("COM10");
        arduino->open(QIODevice::ReadOnly);
        arduino->setBaudRate(QSerialPort::Baud9600);
        arduino->setDataBits(QSerialPort::Data8);
        arduino->setParity(QSerialPort::NoParity);
        arduino->setStopBits(QSerialPort::OneStop);
        arduino->setFlowControl(QSerialPort::NoFlowControl);


        connect(arduino, SIGNAL(readyRead()), this, SLOT(serialData()));

    }



    MainWindow::~MainWindow()
    {
        delete ui;
        arduino->close();
    }


    void MainWindow::serialData()
    {
        QByteArray data;
        data = arduino->readAll();
        qDebug()<<data;
    }

谢谢。

0 个答案:

没有答案