基本的串口设置非可执行代码或完整代码仅供个人参考使用:
//头文件所需
#include<QtSerialPort/QSerialPort>
#include<QtSerialPort/QSerialPortInfo>
private:
QSerialPort MainSerial;
//cpp
//打开串口函数
void MainWindow::on_openPortBtn_toggled(bool checked)
{
if(checked==true)
{
if(MainSerial.isOpen())
{
MainSerial.close()
}
else{
if(ui->comboBox->count()!=0)
{
MainSerial.setPortName(ui->conbBox->currentText());
MainSerial.setBaudRate(ui->conbBox_boter->currentText().toInt);//设置波特率和读写方向
MainSerial.setDataBits(QSerialPort::Data8); //数据位为8位
MainSerial.setFlowControl(QSerialPort::HardwareControl);//无流控制
MainSerial.setParity(QSerialPort::NoParity); //设置校验位
MainSerial.setStopBits(QSerialPort::OneStop); //一位停止位
MainSerial.setReadBufferSize(1024);//设置缓冲区
MainSerial.open(QIDevice::ReadWrite);
if( MainSerial.isopen())
{
QOBject::connect(&MainSerial,&QSerialPort::readRead,this,&MainWindow::readyReadSlot);
//与接收函数相连
加个已经打开的提示
}
else{
//打开失败
}
}
else{
//打开失败无串口
}
}
}
else
{ if(ui.openPortBtn->text()==tr("重新扫描"))
{
scanport();//查找串口函数}
}
else if(ui->openPortBtn->text()==("关闭串口")
{
MainSerial.close();//提示关闭串口
}
//提示打开串口
}
}
//查找串口函数
void MainWindow::scanport()
{
if(&MainSerial!=NULL)
{
foreach(const QSerialPortInfo &info ,QSerialPortInfo::availablePorts())
{ QSerialPort serial;
serial.setPort(info);
//判断是否可以打开
if(serial.open(QIODevice::ReadWrite))
{
int isHaveItemInList =0;
for (int i=0;i<comnum;i++)
{
if(ui->comboBox->itemData(i)==serial.portName())
{ comnum++;
}
}
if(comnum==0)
{
ui->comboBox->addItem(serial.portName())
comnum++;
}
serial.close();
}}
else{
//失败提示
}
//成功提示
}
//接收函数