Arduino 和 QtSerialPort 始终打开错误

Posted

技术标签:

【中文标题】Arduino 和 QtSerialPort 始终打开错误【英文标题】:Arduino and QtSerialPort opening always false 【发布时间】:2013-10-30 05:05:37 【问题描述】:

我正在尝试将 arduino 与 qt 5.1 的 qserialport 连接,但是如果有人知道另一种方法或其他库或使其工作的建议,方法 open 总是返回 false 值,请让我知道 XD 我不知道源代码有什么问题

#include "mainwindow.h"
#include "ui_mainwindow.h"



MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

    ui->setupUi(this);
    this->serial = new QSerialPort(this);
    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) 
           qDebug() << "Name        : " << info.portName();
           qDebug() << "Description : " << info.description();
           qDebug() << "Manufacturer: " << info.manufacturer();

           this->serial->setPort(info);

    
       if(this->serial->open(QIODevice::ReadWrite))

        serial->setBaudRate(QSerialPort::Baud9600);
        serial->setDataBits(QSerialPort::Data8);
        serial->setParity(QSerialPort::NoParity);
        serial->setStopBits(QSerialPort::OneStop);
        serial->setFlowControl(QSerialPort::NoFlowControl);
        QObject::connect(&serial,SIGNAL(readyRead()),this,SLOT(serialReceived()));
    else
           qDebug() << "Couldn't open port";

    



MainWindow::~MainWindow()

    delete ui;


void MainWindow::serialReceived()
    serial->readAll();

【问题讨论】:

最后一个info 传递是否正确?检查 serial->errorString() 是否包含错误详细信息。 您正在对系统上的所有串行端口进行迭代,您确定只有一个吗? 【参考方案1】:

试试这个:

main.cpp

#include <QtSerialPort/QtSerialPort>
#include <iostream>

int main()

    QSerialPort serialPort;
    serialPort.setPortName("yourportpath"); // Hard code it for a test
    if (!serialPort.open(QIODevice::ReadOnly)) 
        std::cout << "Error: " << serialPort.error() << std::endl;
        return 1;
    

    return 0;

【讨论】:

以上是关于Arduino 和 QtSerialPort 始终打开错误的主要内容,如果未能解决你的问题,请参考以下文章

QtSerialport 连接不一致问题

你好,可以请教一下arduino uno板子连接SD卡的问题吗?我始终连接不上,不知道是怎么回事

串行数据包丢失 - QTSerialPort

连接到键盘的 Arduino 引脚 4 始终为高电平,导致键盘无法正常工作

在串行端口(QtSerialPort)读取传入字节的连续流

串行丢包 - QTSerialPort