qt串口读取定长数据

qt串口读取定长数据,第1张

1、打开串口:使用QSerialPort类打开串口,设置相关参数(如波特率、数据位、停止位等)。

2、定义接收缓冲区:定义一个缓冲区用于存储接收到的数据。根据需要可以选择使用QByteArray或者char数组等。

3、设置定时器:使用QTimer类设置一个定时器,定时读取串口接收缓冲区中的数据。

4、读取数据:在定时器的槽函数中,使用QSerialPort类的read()函数从串口接收缓冲区中读取数据,并将其存储到预定义的接收缓冲区中。

5、处理数据:对接收到的数据进行解析和处理。如果接收到的数据是定长数据,则可以根据数据长度进行分包处理。

我是通过QNetworkAccessManager 、QNetworkReply、QNetworkRequest从服务器获取数据的,现在不清楚怎么获取cookies。

感谢。我是通过QNetworkAccessManager 、QNetworkReply、QNetworkRequest从服务器获取数据的,现在不清楚怎么获取cookies。

感谢。

之所以没有答案,不是这个难,而是很简单。

直接从 小对话框里面读数据就完事了。

刚写的例子:

//////////////////////dialogcpp

Dialog::Dialog(QWidget parent) :

QDialog(parent),

ui(new Ui::Dialog)

{

ui->setupUi(this);

ui->lineEditPassword->setEchoMode(QLineEdit::Password);

}

Dialog::~Dialog()

{

delete ui;

}

void Dialog::on_pushButtonLogin_clicked()

{

//获取数据

m_strUser = ui->lineEditUser->text();

m_strPassword = ui->lineEditPassword->text();

//校验数据

if(m_strUserisEmpty() || m_strPasswordisEmpty())

{

QMessageBox::information(this, QString(tr("Tips"))

,QString(tr("User name or Password is empty!")));

//等待下次按钮

}

else

{

//正确的用户名和密码

this->accept();

}

}

void Dialog::on_pushButtonQuit_clicked()

{

this->reject();

}

////////////////////////////////mainwindowcpp

#include "mainwindowh"

#include "ui_mainwindowh"

#include "dialogh"

MainWindow::MainWindow(QWidget parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

//

ui->setupUi(this);

//

Dialog pDlgLogin = new Dialog(NULL);

//以模式对话框显示

int nResult = pDlgLogin->exec();

if(nResult != QDialog::Accepted)

{

//登录错误,退出

exit(1);

}

//正常登录

//读取用户名和密码

m_strUser = pDlgLogin->m_strUser;

m_Password = pDlgLogin->m_strPassword;

//设置标签为用户名

ui->labelUserName->setText(m_strUser);

//绑定退出信号到关闭槽函数

connect(ui->action_Quit, SIGNAL(triggered()), this, SLOT(close()));

//将主窗口移到指定位置

this->move(QPoint(0,0));

//

}

MainWindow::~MainWindow()

{

delete ui;

}

供参考:

maincpp 文件

#include <QApplication>

#include "clogindialogh"

int main(int argc, char argv[])

{

    QApplication app(argc, argv);

    CLoginDialog loginDlg = new CLoginDialog();

    loginDlg->show();

    return appexec();

}

clogindialogh 文件

#ifndef CLOGINDIALOG_H

#define CLOGINDIALOG_H

#include <QDialog>

#include <QLabel>

#include <QPushButton>

#include <QComboBox>

#include <QLayout>

class CLoginDialog : public QDialog

{

    Q_OBJECT

public:

    explicit CLoginDialog(QWidget parent = nullptr);

private slots:

    void showMainWindow();

private:

    QComboBox userTypeCombo;

};

#endif // CLOGINDIALOG_H

clogindialogcpp 文件

#include "clogindialogh"

#include "cwidgetah"

#include "cwidgetbh"

CLoginDialog::CLoginDialog(QWidget parent) : QDialog(parent)

{

    QHBoxLayout lineLayout1 = new QHBoxLayout();

    lineLayout1->addWidget(new QLabel(tr("登录类型")));

    userTypeCombo = new QComboBox();

    userTypeCombo->addItem(tr("教师"),0);

    userTypeCombo->addItem(tr("学生"),1);

    lineLayout1->addWidget(userTypeCombo);

    QHBoxLayout lineLayout2 = new QHBoxLayout();

    lineLayout2->addStretch();

    QPushButton loginBt = new QPushButton(tr("登录"));

    connect(loginBt,&QPushButton::clicked,this,&CLoginDialog::showMainWindow);

    lineLayout2->addWidget(loginBt);

    QVBoxLayout mainLayout = new QVBoxLayout();

    mainLayout->addLayout(lineLayout1);

    mainLayout->addLayout(lineLayout2);

    setLayout(mainLayout);

}

void CLoginDialog::showMainWindow()

{

    if(userTypeCombo->currentData() == 0){

        CWidgetA a = new CWidgetA();

        a->show();

    }else{

        CWidgetB b = new CWidgetB();

        b->show();

    }

    close();

}

cwidgetah 文件

#ifndef CWIDGETA_H

#define CWIDGETA_H

#include <QMainWindow>

class CWidgetA : public QMainWindow

{

    Q_OBJECT

public:

    explicit CWidgetA(QWidget parent = nullptr);

};

#endif // CWIDGETA_H

cwidgetacpp 文件

#include "cwidgetah"

#include <QLabel>

CWidgetA::CWidgetA(QWidget parent) : QMainWindow(parent)

{

    setCentralWidget(new QLabel(tr("这是窗口A")));

}

cwidgetbh

#ifndef CWIDGETB_H

#define CWIDGETB_H

#include <QMainWindow>

class CWidgetB : public QMainWindow

{

    Q_OBJECT

public:

    explicit CWidgetB(QWidget parent = nullptr);

};

#endif // CWIDGETB_H

cwidgetbcpp

#include "cwidgetbh"

#include <QLabel>

CWidgetB::CWidgetB(QWidget parent) : QMainWindow(parent)

{

     setCentralWidget(new QLabel(tr("这是窗口B")));

}

以上就是关于qt串口读取定长数据全部的内容,包括:qt串口读取定长数据、qt一个登录窗体中实现和qq一样记录用户名和密码的功能 并且自动登入 求一个简单实现的demo、QT5.7中使用QNetworkReply怎么获取http返回的cookies数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9750546.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存