我的 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");
}