我的用户界面使用qt。
我想要的东西。
我在与我的设备的串行通信qt。我做了一个用户界面,我可以使用用户界面连接我的设备。我想从设备获取数据日志并使用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");
}
您的实际问题是什么?从设备读取?使用QTimer?显示数据?请避免包含不必要的信息。见[问]。 – m7913d