本博客参考B站北京迅为视频(侵删)
Form.h
#ifndef FORM_H
#define FORM_H
#include <QWidget>
namespace Ui {
class Form;
}
class Form : public QWidget
{
Q_OBJECT
public:
explicit Form(QWidget *parent = nullptr);
~Form();
private:
Ui::Form *ui;
};
#endif // FORM_H
Widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QSerialPort>
#include<QString>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
QSerialPort*serialport;
private slots:
void on_openBt_clicked();
void on_clockBt_clicked(bool checked);
void serialPortReadyRead_Slot();
void on_SendBt_clicked();
void on_ClearBt_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
Form .cpp
#ifndef FORM_H
#define FORM_H
#include <QWidget>
namespace Ui {
class Form;
}
class Form : public QWidget
{
Q_OBJECT
public:
explicit Form(QWidget *parent = nullptr);
~Form();
private:
Ui::Form *ui;
};
#endif // FORM_H
form.cpp
#include "form.h"
#include "ui_form.h"
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
}
Form::~Form()
{
delete ui;
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include<QSerialPortInfo>
#include<QMessageBox>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QStringList serialNamePort;
serialport=new QSerialPort(this);
foreach(const QSerialPortInfo &Info,QSerialPortInfo::availablePorts()){
serialNamePort<<Info.portName();
}
ui->SeialCb->addItems(serialNamePort);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_openBt_clicked()
{
QSerialPort::BaudRate baudRate;
QSerialPort::DataBits dataBits;
QSerialPort::StopBits stopBits;//&QSerialPort::readyRead
QSerialPort::Parity checkBits;
connect(serialport,SIGNAL(readyRead()),this,SLOT(serialPortReadyRead_Slot()));
if(ui->backrate->currentText()=='4800')
{
baudRate= QSerialPort::Baud4800;
}else if(ui->backrate->currentText()=='9600')
{
baudRate= QSerialPort::Baud9600;
}else if(ui->backrate->currentText()=="115200")
{
baudRate= QSerialPort::Baud115200;
}
if(ui->dataCb->currentText()=="5")
{
dataBits=QSerialPort::Data5;
}else if(ui->dataCb->currentText()=="6")
{
dataBits=QSerialPort::Data6;
}
else if(ui->dataCb->currentText()=="7")
{
dataBits=QSerialPort::Data7;
}
else if(ui->dataCb->currentText()=="8")
{
dataBits=QSerialPort::Data8;
}
if(ui->stopCb->currentText()=="1")
{
stopBits=QSerialPort::OneStop;
}else if(ui->stopCb->currentText()=="1.5")
{
stopBits=QSerialPort::OneAndHalfStop;
}else if(ui->stopCb->currentText()=="2")
{
stopBits=QSerialPort::TwoStop;
}
if(ui->checkCb->currentText()=="none")
{
checkBits=QSerialPort::NoParity;
}
serialport->setPortName(ui->SeialCb->currentText());
serialport->setBaudRate(baudRate);
serialport->setDataBits(dataBits);
serialport->setStopBits(stopBits);
serialport->setParity(checkBits);
if(serialport->open(QIODevice::ReadWrite)==true)
{
QMessageBox::information(this,"提示","成功");
}
else
{
QMessageBox::information(this,"提示","失败");
}
}
void Widget::serialPortReadyRead_Slot()
{
QString buff;
buff=QString(serialport->readAll());
ui->ReceTextEdit->appendPlainText(buff);
}
void Widget::on_clockBt_clicked(bool checked)
{
serialport->close();
}
void Widget::on_SendBt_clicked()
{
serialport->write(ui->SendBt->text().toLocal8Bit().data());
}
void Widget::on_ClearBt_clicked()
{
ui->ReceTextEdit->clear();
}
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
B站入口:https://www.bilibili.com/video/BV1tp4y1i7EJ?p=10