gpt4 book ai didi

c++ - 如何在 QT 中查看和存储来自设备的数据?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:42:45 24 4
gpt4 key购买 nike

enter image description here

我的 ui 与 qt 。

enter image description here

我想要什么。

我正在与我的设备进行串行通信 qt。我制作了一个 ui,我可以使用 ui 连接我的设备。我想从设备获取数据日志并使用 QTimer 在 qt 中显示。

我该怎么做?并且还想将数据保存到 csv 文件。

请帮助我,让我知道如何解决这个问题

下面是我的代码。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSerialPort/QSerialPort>
#include <QSerialPortInfo>
#include <QMessageBox>
#include <QObject>
#include <QIODevice>
#include <QDebug>
#include <QPlainTextEdit>
#include <QDateTime>

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

connect(this->mSerialport,SIGNAL(readyRead()),
this,SLOT(readSerialData()));
connect(ui->pushButton_send,
&QPushButton::clicked, [=](){
sendMsg(ui->textEdit->toPlainText());

});

}
MainWindow::~MainWindow()
{
delete mSerialport;
delete ui;
}

void MainWindow::on_pushButton_connect_clicked()
{
mSerialport->setPortName("/dev/ttyUSB0");
mSerialport->setBaudRate(QSerialPort::Baud9600);
mSerialport->setDataBits(QSerialPort::Data8);
mSerialport->setParity(QSerialPort::NoParity);
mSerialport->setStopBits(QSerialPort::OneStop);
mSerialport->setFlowControl(QSerialPort::NoFlowControl);
if (mSerialport->open(QIODevice::ReadWrite))
{ QMessageBox::information(this,tr("connect"),
"serialcommunication start");
}
else {
QMessageBox::information(this,tr("fail"),
mSerialport->errorString());
}

}

void MainWindow::on_pushButton_disconnect_clicked()
{
QMessageBox::information(this, tr("disconnect"),
"serial communication end");
mSerialport->close();
}

void MainWindow::sendMsg(const QString &msg)
{
QString str = msg;
str.append("\n");
this->mSerialport->write(str.toLatin1());

ui->comLog->insertPlainText(QDateTime::currentDateTime().
toString("yyyy-MM-dd hh:mm:ss") + " [send] " + msg + "\n");
}

void MainWindow::recvMsg(){
QByteArray msg = this->mSerialport->readAll();
ui->comLog->insertPlainText(QDateTime::currentDateTime().
toString("yyyy-MM-dd hh:mm:ss") + " [recieve] " + msg.toHex().
data() + "\n");
}

最佳答案

可以看到this example .

要将数据存储到日志文件中,可以这样写数据。

QByteArray data = serial->readAll();
QFile file("log.csv");
file.open(QIODevice::Append);
file.write(data);
file.close();

关于c++ - 如何在 QT 中查看和存储来自设备的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46270236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com