当前位置: 首页 > 知识库问答 >
问题:

编译代码时“没有匹配的调用函数”。[QTSerialPort打开读取]

庄飞
2023-03-14

这里是自学成才的新手程序员,请原谅我的错误。我试图让程序发送/读取串行数据,但读取部分有问题。我能够从下拉菜单中选择通信端口,并传输我需要的内容。当我开始使用大量在线示例对接收端进行编码时,它无法编译,我似乎无法找出原因。如果我完全复制QT示例中的代码,它可能会工作,但它不会做我想做的事情(即使用组合框下拉选项卡进行选择)

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QApplication>
#include <QWidget>
#include <QSerialPort>
#include <QSerialPortInfo>


QString commPort;
QSerialPort serial;
QByteArray charBuffer;

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

    foreach (const QSerialPortInfo &serialPortInfo, QSerialPortInfo::availablePorts()) //populates the combo box with all availble comm ports.
        {
        ui->comboBox->addItem(serialPortInfo.portName());
        commPort=serialPortInfo.portName();
        }
}

MainWindow::~MainWindow()
{
    delete ui;
    serial.close();
}

void MainWindow::on_comboBox_activated(const QString &commPort) //selects the chosen comm port.
{
    ui->report->setText(commPort);
}

void MainWindow::openSerialPort()
{

    serial.setPortName(commPort);

    if(serial.open(QIODevice::ReadWrite))
     {
         qDebug("Serial Opened");
         ui->report->setStyleSheet("QLabel{background-color:'green';}");
         serial.setBaudRate(QSerialPort::Baud9600);
         serial.setDataBits(QSerialPort::Data8);
         serial.setParity(QSerialPort::NoParity);
         serial.setStopBits(QSerialPort::OneStop);
         serial.setFlowControl(QSerialPort::NoFlowControl);
         connect(serial, &QSerialPort::readyRead, this,&MainWindow::readSerial);
//^^That is the part that fails to compile

     }
     else
     {
         ui->report->setStyleSheet("QLabel{background-color:'red';}");
         qDebug ("Serial NOT Opened");
         qDebug() << serial.error();
         qDebug() << serial.errorString();
     }

}

void MainWindow::on_connectButton_pressed()
{
    openSerialPort();
}

void MainWindow::readSerial()
{
qDebug()<<("serial works");
}

*more code follows, but not needed....

“连接(串行、,

我试图阅读QObject和QSerialPort库帮助信息,但SIGNAL和SLOT的东西对这个amatuer来说太混乱了。我还在线获取了部分示例并粘贴以尝试修复它,...没有骰子。

共有1个答案

叶恩
2023-03-14

您必须传递发件人的指针。

连接(const QObject*发送方,const char*信号,const QObject*接收方,const char*方法,Qt::ConnectionType类型)

连接(const QObject*sender,const char*信号,const char*方法,Qt::ConectionType类型)

连接(const QObject*发送方,pointertomberfunction信号,const QObject*接收方,pointertomberfunction方法,Qt::ConnectionType类型)

connect(常量QObject*发送器、指针ToMemberFunction信号、函子函子)

connect(常量QObject*发送方,指针ToMemberFunction信号,常量QObject*上下文,Functor Functor,Qt::ConnectionType类型)

更改:

connect(serial, &QSerialPort::readyRead, this,&MainWindow::readSerial);

connect(&serial, &QSerialPort::readyRead, this,&MainWindow::readSerial);
 类似资料:
  • 我试图将一个向量元组转换成一个向量元组(反之亦然)。调用函数时遇到问题。当我用一个参数调用它时,我得到一个错误: prog。cpp:在函数“int main()”中: prog。cpp:44:24:错误:调用“tuple_transpose(std::tuple)”时没有匹配函数 这是一个演示,其中包含错误:http://ideone.com/7AWiQQ#view_edit_box 我做错了什么

  • 我是c语言的新手。当我运行代码时,出现以下错误:( 大Sorting.cpp:在函数int main(int, const char**)中:大Sorting.cpp:13: 22:错误:没有匹配函数调用std::向量 这是我的代码

  • 我已经用google的nacl编译器编译了一些Qt代码,但是ncval验证器不能运行它。许多例子中的一个: 以下是相关代码: 编译为: 在49b检查调用指令:这是验证器无法理解的。到底是什么会导致编译器发出一条调用自身中间的指令?有办法解决这个问题吗?我用-g-O0-fno-inline编译过。编译器错误?

  • 我将< code>cucumber-groovy与基于maven的框架一起使用,但找不到stepDefinitions的粘合点。获取在特征文件中没有匹配的粘合代码。这是cucumber专家项目。我已经将特征文件夹转换为“源文件夹”。 错误: 这是我的测试跑步者CucumberOptions:

  • 我只是想习惯基本的复制构造函数。 我假设我正确地放置了复制构造函数。 但是当我试图编译时,我不断地得到错误“没有匹配的构造函数来初始化B” 我有点困惑。

  • 我是Cassandra的新手,我正在尝试创建一个用户定义的聚合,但一直停留在函数创建上。 表中数据为- 我正在编写的函数将计算特定主机的表中有多少行。如果我为聚合提供test_host1,理想的结果将是3。 在下面找到函数的代码- 在cqlsh上执行此操作时,我得到以下错误- InvalidRequest:code=2200[无效查询]message=“无法从Java源代码org.apache.c