qt工程文件
1)FirstQt.pro -->工程文件
2)mainwindow.h -->头文件
3)main.cpp -->c++文件,qt主界面程序。(不要动)
4)mainwindow.cpp -->界面程序
5)mainwindow.ui -->界面文件
QT头文件
#include <QString> //字符串类型头文件
#include <QDebug> //调试输出语句头文件
mainwindow.cpp:
mserial = new QSerialPort;
if(mserial!=NULL)
{
qDebug()<<tr("扫描存在的串口");
foreach (const QSerialPortInfo &info,QSerialPortInfo::availablePorts() )
{
QSerialPort ser;
ser.setPort(info);
/* 判断端口是否能打开 */
if(ser.open(QIODevice::ReadWrite))
{
ui->combobox->addItem(ser.portName());
qDebug()<<tr("Port:")+ser.portName()+tr("\r\n");
ser.close();
}
}
}
int com_num = 0;
void MainWindow::on_pushButton_clicked()
{
com_num++;
if(com_num == 1)
{
//设置串口名称
mserial->setPortName(ui->combobox->currentText());
//设置波特率
mserial->setBaudRate(ui->baud_com->currentText().toInt());
//设置数据位数
mserial->setDataBits(QSerialPort::Data8);
//设置奇偶校验
mserial->setParity(QSerialPort::NoParity);
//设置停止位
mserial->setStopBits(QSerialPort::OneStop);
//设置流控制
mserial->setFlowControl(QSerialPort::NoFlowControl);
mserial->setReadBufferSize(1024);
//打开串口
if(mserial->open(QIODevice::ReadWrite)==true)
{
QObject::connect(mserial,&QSerialPort::readyRead,this,serialrecvmsevent);
qDebug("open seccess\n");
ui->pushButton->setText("关闭串口");
}
else
{
qDebug("open false\n");
com_num = 0;
}
}
if(com_num > 1)
{
if(mserial->isOpen())
{
qDebug("close seccess\n");
mserial->close();
ui->pushButton->setText("打开串口");
com_num = 0;
}
}
}
void MainWindow::serialrecvmsevent()
{
QByteArray buffer;
buffer = mserial->readAll();
if(!buffer.isEmpty())
{
buffer.clear();
}
}
*.pro:
QT += core gui printsupport serialport
mainwindow.h:
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
public:
QSerialPort *mserial;
知识兔