100编程书屋_孔夫子旧书网
1.首先看一下我设计的界面(我这里比较简单,大家可根据自己的需求进行设计)
(界面设计的过程中,每一个控件的名称最好进行修改,便于后续控件太多不好区分,给控件命名的时候一定要就针对性,一下明白这个控件是干什么的。)
2.首先看一下准备工作。在pro文件中添加串口需要的文件
3.widget.h文件 (看看代码一睹为快)
#ifndef WIDGET_H#define WIDGET_H#include <QSerialPort>#include <QWidget>namespace Ui {class Widget;}class Widget : public QWidget{Q_OBJECTpublic:QSerialPort *serialport;explicit Widget(QWidget *parent = nullptr);~Widget();private slots://打开串口槽函数void on_port_openBt_clicked();//关闭串口槽函数void on_port_closeBt_clicked();//自定义的槽函数的声明void serialreadtext();//数据发送槽函数void on_data_sendBt_clicked();//数据接受区和数据发送区清空槽函数void on_rev_clearBt_clicked();private:Ui::Widget *ui;};#endif // WIDGET_H 4.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){ serialport = new QSerialPort(this); //创建一个串口对象ui->setupUi(this);//这样我们就获取到 可用的串口名字了QStringList m_serialPortName;foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts()){m_serialPortName << info.portName();}//添加串口到conbox控件中ui->port_comboBox->addItems(m_serialPortName);//接收数据需要自己关联槽函数connect(serialport,SIGNAL(readyRead()),this , SLOT(serialreadtext()));}Widget::~Widget(){delete ui;}//读数据void Widget::serialreadtext(){QString buffer;buffer=QString(serialport->readAll());ui->revEdit->appendPlainText(buffer);}void Widget::on_port_openBt_clicked(){QSerialPort::BaudRate baudRate;QSerialPort::DataBits dataBits;QSerialPort::Parity parity;QSerialPort::StopBits stopbits;//波特率if(ui->rate_comboBox->currentText()=="115200"){baudRate=QSerialPort::Baud115200;}else if(ui->rate_comboBox->currentText()=="9600"){baudRate=QSerialPort::Baud9600;}else {baudRate=QSerialPort::Baud4800;}//数据位if(ui->data_comboBox->currentText()=="8"){dataBits=QSerialPort::Data8;}else if(ui->data_comboBox->currentText()=="7"){dataBits=QSerialPort::Data7;}else if(ui->data_comboBox->currentText()=="6"){dataBits=QSerialPort::Data6;}else if (ui->data_comboBox->currentText()=="5"){dataBits=QSerialPort::Data5;}//停止位if(ui->stop_comboBox->currentText()=="1"){stopbits= QSerialPort::OneStop;} else if(ui->stop_comboBox->currentText()=="2"){stopbits= QSerialPort::TwoStop;}else if(ui->stop_comboBox->currentText()=="1.5"){stopbits= QSerialPort::OneAndHalfStop;}//校验位if(ui->cheak_comboBox->currentText()=="None"){parity=QSerialPort::NoParity;}//1.配置端口号serialport->setPortName(ui->port_comboBox->currentText());//2.配置波特率serialport->setBaudRate(baudRate);//设置数据位serialport->setDataBits(dataBits);//设置校验位serialport->setParity(parity);//停止位serialport->setStopBits(stopbits);if(serialport->isOpen())//如果串口已经打开了 先给他关闭了{serialport->clear();serialport->close();}if(serialport->open(QIODevice::ReadWrite)==true){QMessageBox::information(this ,"提示","串口打开成功");}else{QMessageBox::critical(this ,"提示","串口打开失败");}}
//关闭串口void Widget::on_port_closeBt_clicked(){QMessageBox::information(this ,"提示","串口关闭成功");serialport->close();}//发送数据void Widget::on_data_sendBt_clicked(){serialport->write(ui->sendEdit->text().toLocal8Bit().data());}
//清空接受区void Widget::on_rev_clearBt_clicked(){ui->revEdit->clear();}
5.好啦,完成上面的步骤,一个简单的串口调试助手就完成了,大家快行动起来吧。