QT-串口

//获取串口信息列表

    QList serialPortInfo=QSerialPortInfo::availablePorts();

    int count=serialPortInfo.count();

    for(int i=0;i

    {

        ui->cboxSerialPort->addItem(serialPortInfo.at(i).portName());

    }

bool MainWindow::getSerialPortConfig()

{

    //获取串口配置

    mPortName=ui->cboxSerialPort->currentText();

    mBaudRate=ui->cboxBaudRate->currentText();

    mParity=ui->cBoxParity->currentText();

    mDataBits=ui->cboxDataBits->currentText();

    mStopBits=ui->cboxStopBits->currentText();

    //配置串口

    //波特率

    mSerialPort.setPortName(mPortName);

    if("9600"==mBaudRate)

    {

        mSerialPort.setBaudRate(QSerialPort::Baud9600);

    }

    else if("115200"==mBaudRate)

    {

        mSerialPort.setBaudRate(QSerialPort::Baud115200);

    }

    else if("4800"==mBaudRate)

    {

        mSerialPort.setBaudRate(QSerialPort::Baud4800);

    }

    //校验位

    if("None"==mParity)

    {

        mSerialPort.setParity(QSerialPort::NoParity);

    }

    else if("Mark"==mParity)

    {

        mSerialPort.setParity(QSerialPort::MarkParity);

    }

    else if("Even"==mParity)

    {

        mSerialPort.setParity(QSerialPort::EvenParity);

    }

    else if("Odd"==mParity)

    {

        mSerialPort.setParity(QSerialPort::OddParity);

    }

    //数据位

    if("5"==mDataBits)

    {

        mSerialPort.setDataBits(QSerialPort::Data5);

    }

    else if("6"==mDataBits)

    {

        mSerialPort.setDataBits(QSerialPort::Data6);

    }

    else if("7"==mDataBits)

    {

        mSerialPort.setDataBits(QSerialPort::Data7);

    }

    else if("8"==mDataBits)

    {

        mSerialPort.setDataBits(QSerialPort::Data8);

    }

    //停止位

    if("1"==mStopBits)

    {

        mSerialPort.setStopBits(QSerialPort::OneStop);

    }

    else if("1.5"==mStopBits)

    {

        mSerialPort.setStopBits(QSerialPort::OneAndHalfStop);

    }

    else

    {

        mSerialPort.setStopBits(QSerialPort::TwoStop);

    }

    return mSerialPort.open(QSerialPort::ReadWrite);

}

//发送数据

void MainWindow::on_btnSend_clicked()

{

    if(mIsOpen)

    {

        mSerialPort.write(ui->textEditSend->toPlainText().toStdString().c_str());

    }

}

//串口接收

void MainWindow::on_SerialPort_readyRead()

{

    if(mIsOpen)

    {

        QByteArray recvData=mSerialPort.readAll();

        ui->textEditReceive->append(QString(recvData));

    }

}

你可能感兴趣的:(QT-串口)