ui界面:
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QSerialPort>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
QSerialPort *serialPort;
private slots:
void on_openBt_clicked();
void on_closeBt_clicked();
void serialPortReadyRead_Slot();
void on_sendBt_clicked();
void on_clearBt_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QSerialPortInfo>
#include <QMessageBox>
#include <QString>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QStringList serialNamePort;
serialPort = new QSerialPort(this);//新建串口
connect(serialPort,SIGNAL(),this,SLOT(serialPortReadyRead_Slot()));//链接串口发生信号时,触发槽函数,在槽函数中进行串口信息读取并显示在接受框
foreach (const QSerialPortInfo &info,QSerialPortInfo::availablePorts()){
serialNamePort<<info.portName();
}
ui->serialCb->addItems(serialNamePort);//搜索可用串口并添加到serialCb可选框内
}
Widget::~Widget()
{
delete ui;
}
void Widget::serialPortReadyRead_Slot()
{
QString buf;
buf = QString(serialPort->readAll());
ui->recvEdit->appendPlainText(buf);
}
void Widget::on_openBt_clicked()//该函数进行打开串口操作,在此完成数据位,波特率等串口信息的设置
{
QSerialPort::BaudRate baudRate;
QSerialPort::DataBits dateBits;
QSerialPort::StopBits stopBits;
QSerialPort::Parity checkBits;
if(ui->boundrateCb->currentText() == "4800"){
baudRate = QSerialPort::Baud4800;
}else if(ui->boundrateCb->currentText() == "9600"){
baudRate = QSerialPort::Baud4800;
}else if(ui->boundrateCb->currentText() == "115200"){
baudRate = QSerialPort::Baud115200;
}
if(ui->dateCb->currentText() == "5"){
dateBits = QSerialPort::Data5;
}else if(ui->dateCb->currentText() == "6"){
dateBits = QSerialPort::Data6;
}else if(ui->dateCb->currentText() == "7"){
dateBits = QSerialPort::Data7;
}else if(ui->dateCb->currentText() == "8"){
dateBits = 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->serialCb->currentText());
serialPort->setBaudRate(baudRate);
serialPort->setDataBits(dateBits);
serialPort->setStopBits(stopBits);
serialPort->setParity(checkBits);
if(serialPort->open(QIODevice::ReadWrite) == true){
QMessageBox::information(this,"提示","成功");
}
else {
QMessageBox::critical(this,"提示","失败");
}
}
void Widget::on_closeBt_clicked()
{
serialPort->close();
}
void Widget::on_sendBt_clicked()
{
serialPort->write(ui->sendEdit->text().toLocal8Bit().data());
}
void Widget::on_clearBt_clicked()
{
ui->recvEdit->clear();
}
补充:串口助手选择好串口并打开后,就和该串口上的信息进行交互,在该串口上读取信息和 往该串口上发送信息。