1.在ui界面中,勾选“打开串口”,并选上的属性中checkable
2.右键选择“打开串口”转到槽函数选择
3.
void Widget::on_btn_close_clicked(bool checked)
{
if (checked)//串口未被打开
{
//1.选择端口号
serialport->setPortName(ui->cm_serialNum->currentText());
//2.配置串口参数(校验位,波特率,数据位,停止位,流控)
serialport->setBaudRate(ui->cm_botelv->currentText().toInt());
serialport->setDataBits(QSerialPort::DataBits(ui->cm_shujvwei->currentText().toUInt()));
serialport->setStopBits(QSerialPort::StopBits(ui->cm_stopwei->currentText().toUInt()));
if(ui->cm_liukong->currentText()=="None")
{
serialport->setFlowControl(QSerialPort::NoFlowControl);
}
switch (ui->cm_jiaoyanwei->currentText().toInt())
{
case 0:
serialport->setParity(QSerialPort::NoParity);
break;
case 1:
serialport->setParity(QSerialPort::EvenParity);
break;
case 2:
serialport->setParity(QSerialPort::MarkParity);
break;
case 3:
serialport->setParity(QSerialPort::OddParity);
break;
case 4:
serialport->setParity(QSerialPort::SpaceParity);
break;
default:
serialport->setParity(QSerialPort::UnknownParity);
break;
}
//3.打开串口
if(serialport->open(QIODevice::ReadWrite))//打开成功
{
qDebug()<<"serial open secusses!";
//将串口参数设置为使能
ui->cm_botelv->setEnabled(false);
ui->cm_liukong->setEnabled(false);
ui->cm_stopwei->setEnabled(false);
ui->cm_shujvwei->setEnabled(false);
ui->cm_serialNum->setEnabled(false);
ui->cm_jiaoyanwei->setEnabled(false);
ui->btn_close->setText("关闭串口");
ui->btnsend->setEnabled(true);
}else//打开失败
{
QMessageBox msgBox;
msgBox.setWindowTitle("打开串口失败");
msgBox.setText("串口被占用.");
msgBox.exec();
}
// serialState=true;
}
else//串口被打开
{
serialport->close();//关闭串口
ui->btn_close->setText("打开串口");
//将串口参数设置为使能
ui->cm_botelv->setEnabled(true);
ui->cm_liukong->setEnabled(true);
ui->cm_stopwei->setEnabled(true);
ui->cm_shujvwei->setEnabled(true);
ui->cm_serialNum->setEnabled(true);
ui->cm_jiaoyanwei->setEnabled(true);
ui->btnsend->setEnabled(false) ;
//serialState=false;
}
}