头文件
#include <QSerialPort>
#include <QSerialPortInfo>
private slots:
void on_pushButton_clicked();
//void read_data();
//void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
void on_comboBox_2_currentIndexChanged(QString );
private:
Ui::MainWindow *ui;
QSerialPort myport;
cpp
void MainWindow::on_pushButton_clicked() //打开串口
{
if(myport.isOpen())
{
myport.close();
ui->pushButton->setText("打开串口");
}
else
{
if(!myport.open(QIODevice::ReadWrite))
{
qDebug() << "失败\n";
return;
}
ui->pushButton->setText("关闭串口");
qDebug()<<"成功\n";
}
connect(&myport,SIGNAL(readyRead()),this,SLOT(read_data()));
}
//void MainWindow::read_data() //读取数据接受消息
//{
// QByteArray msg = myport.readAll();
// ui->textBrowser->append(msg);
//}
//void MainWindow::on_pushButton_2_clicked() //发送数据
//{
// QString msg = ui->textEdit->toPlainText();
// myport.write(msg.toUtf8());
//}
void MainWindow::on_comboBox_2_currentIndexChanged(QString ) //选择波特率
{
QString BaudRate=ui->comboBox_2->currentText();
int baudRate = BaudRate.toInt();
switch (baudRate) {
case 4800:
myport.setBaudRate(QSerialPort::Baud4800);
break;
case 9600:
myport.setBaudRate(QSerialPort::Baud9600);
break;
case 115200:
myport.setBaudRate(QSerialPort::Baud115200);
break;
default:
qDebug() << "Unknown baud rate";
break;
}
}
void MainWindow::on_pushButton_3_clicked() //搜索串口
{
QList<QSerialPortInfo> infolist = QSerialPortInfo::availablePorts();
for(int i=0;i<infolist.count();i++)
{
ui->comboBox->addItem(infolist.at(i).portName());
}
myport.setPortName(ui->comboBox->currentText());
myport.setDataBits(QSerialPort::Data8);
myport.setStopBits(QSerialPort::OneStop);
myport.setParity(QSerialPort::NoParity);
myport.setFlowControl(QSerialPort::NoFlowControl);
}
搜索串口打开串口以及设置波特率