1,界面
2,相关文件
3,文件源码
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QSerialPort>
#include<QString>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
QSerialPort *serialPort;//定义初始化串口量
~Widget();
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
main.cpp//一般在QT里面不用动它
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
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;
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
serialNamePort<<info.portName();
}
ui->Serial->addItems(serialNamePort);
serialPort = new QSerialPort(this);
connect(serialPort,SIGNAL(readyRead()),this,SLOT(serialPortReadyRead_SLOT()));//关联信号准备读显示的槽函数
}
Widget::~Widget()
{
delete ui;
}
void Widget::serialPortReadyRead_SLOT()
{
QString buf;
buf = QString(serialPort->readAll());
ui->showData->appendPlainText(buf);
}
void Widget::on_OpenBt_clicked()
{
QSerialPort::BaudRate BaurdRateCd;//初始化串口的量
QSerialPort::DataBits DataBit;
QSerialPort::StopBits StopBit;
QSerialPort::Parity CheckBit;
if(ui->BaurdRateCd->currentText()=="4800"){
BaurdRateCd=QSerialPort::Baud4800;
}else if(ui->BaurdRateCd->currentText()=="9600"){
BaurdRateCd=QSerialPort::Baud9600;
}else if(ui->BaurdRateCd->currentText()=="115200"){
BaurdRateCd=QSerialPort::Baud115200;
}
if(ui->DataBit->currentText()=="6"){
DataBit=QSerialPort::Data6;
}else if(ui->DataBit->currentText()=="8"){
DataBit=QSerialPort::Data8;
}
if(ui->StopBit->currentText()=="1"){
StopBit=QSerialPort::OneStop;
}else if(ui->StopBit->currentText()=="1.5"){
StopBit=QSerialPort::OneAndHalfStop;
}else if(ui->StopBit->currentText()=="2"){
StopBit=QSerialPort::TwoStop;
}
if(ui->CheckBit->currentText()=="none"){
CheckBit=QSerialPort::NoParity;
}
serialPort->setPortName(ui->Serial->currentText());
serialPort->setBaudRate(BaurdRateCd);
serialPort->setDataBits(DataBit);
serialPort->setStopBits(StopBit);
serialPort->setParity(CheckBit);
//显示串口是否打开成功
if(serialPort->open(QIODevice::ReadWrite)==true)
{
QMessageBox::information(this,"NOTICE","SUCCESSFUL");
}else if(serialPort->open(QIODevice::ReadWrite)==false)
{
QMessageBox::critical(this,"NOTICE","failure");
}
}
void Widget::on_CloseBt_clicked()
{
serialPort->close();
}
void Widget::on_SendBt_clicked()
{
serialPort->write(ui->SendWin->text().toLocal8Bit().data());
}
void Widget::on_ClearBt_clicked()
{
ui->showData->clear();
}