目标 我一直在尝试通过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;
}
谢谢。