Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 与QSerialPort的基本通信_C++_Qt_Serial Port - Fatal编程技术网

C++ 与QSerialPort的基本通信

C++ 与QSerialPort的基本通信,c++,qt,serial-port,C++,Qt,Serial Port,我正在尝试在QT中安装一些基本的串行通信 我从QSerialPortInfo获得COM19端口,我通过Arduino成功地与端口通话。但是,我无法通过QT获得任何反馈 #include "mainwindow.h" #include <QApplication> #include <QDebug> #include <QTextStream> #include <QFile> #include <QtSerialPort/QSerialPor

我正在尝试在QT中安装一些基本的串行通信 我从QSerialPortInfo获得COM19端口,我通过Arduino成功地与端口通话。但是,我无法通过QT获得任何反馈

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <QTextStream>
#include <QFile>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
        qDebug() << "Name  :" << info.portName();
        qDebug() << "Description  :" << info.description();
        qDebug() << "Manufactuer :"  << info.manufacturer();

        QSerialPort serial;
        serial.setPort(info);

        if(serial.open(QIODevice::ReadWrite))
            qDebug() << serial.errorString();

            serial.write("M114 \n");

            qDebug() << serial.readAll();

            serial.close();
            // Now we need to send and receive commands

            serial.setPortName("COM19");
            serial.setBaudRate(QSerialPort::Baud57600);
            serial.setDataBits(QSerialPort::Data8);
            serial.setParity(QSerialPort::NoParity);
            serial.setStopBits(QSerialPort::OneStop);
            serial.setFlowControl(QSerialPort::NoFlowControl);

            if(serial.open(QIODevice::ReadWrite)){
                qDebug() << "opened";
              }else{
                qDebug() << "Not opened";
            }
           qDebug() << serial.errorString();

            serial.write("M114 \n");
            qDebug() << serial.readAll();

            serial.close();


    }





    MainWindow w;
    w.show();

    return a.exec();
}
有没有关于我做错了什么的想法


我的想法是向设备发送命令,然后将它们读回控制台

代码看起来有点混乱。您打开了所有可用的端口,然后试图做一些错误的事情

注意:您使用的GUI应用程序与shell应用程序类似。这是错误的

尝试:

#包括“mainwindow.h”
#包括
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
QSerialPort系列;
serial.setPortName(“COM19”);
if(serial.open(QIODevice::ReadWrite)){
//现在串行端口已打开,请尝试设置配置
如果(!serial.setBaudRate(QSerialPort::Baud57600))

qDebug()从第十个端口开始,他的名字将是\\。\COM10

您可以在设备管理器中将端口重新分配给其他号码

Name  : "COM19" 
Description  : "USB Serial (Communication Class, Abstract Control Model)" 
Manufactuer : "PJRC.COM, LLC." 
"Unknown error" 
"" 
opened 
"The handle is invalid." 
"" 
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <QTextStream>
#include <QFile>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QSerialPort serial;
    serial.setPortName("COM19");

    if(serial.open(QIODevice::ReadWrite)){
        //Now the serial port is open try to set configuration
        if(!serial.setBaudRate(QSerialPort::Baud57600))
            qDebug()<<serial.errorString();

        if(!serial.setDataBits(QSerialPort::Data8))
            qDebug()<<serial.errorString();

        if(!serial.setParity(QSerialPort::NoParity))
            qDebug()<<serial.errorString();

        if(!serial.setStopBits(QSerialPort::OneStop))
            qDebug()<<serial.errorString();

        if(!serial.setFlowControl(QSerialPort::NoFlowControl))
            qDebug()<<serial.errorString();

        //If any error was returned the serial il corrctly configured

        serial.write("M114 \n");
        //the serial must remain opened

        if(serial.waitForReadyRead(100)){
            //Data was returned
            qDebug()<<"Response: "<<serial.readAll();
        }else{
            //No data
            qDebug()<<"Time out";
        }

        //I have finish alla operation
        serial.close();
    }else{
        qDebug()<<"Serial COM19 not opened. Error: "<<serial.errorString();
    }

    MainWindow w;
    w.show();

    return a.exec();
}