QT-串口

//获取串口信息列表

    QList<QSerialPortInfo> serialPortInfo=QSerialPortInfo::availablePorts();

    int count=serialPortInfo.count();

    for(int i=0;i<count;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));

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Qt串口通信类QSerialPort 在Qt5的的更新中,新增了串口通信的相关接口类QSerialPort,...
    Jiatian阅读 4,437评论 0 5
  • 最近帮老师做的项目中使用到了QT串口,然后首先百度了一下,发现网上的QT串口代码都是同一个版本。而且没有公开源代码...
    帅气的程小二阅读 11,499评论 3 17
  • 界面 主窗口界面设计 标题栏:直接设Window-Title属性;Window-icon属性可加图标。底部状态栏:...
    码园老农阅读 3,865评论 1 13
  • 操作系统环境为CentOS 7.1 使用VMware 10构建java环境为 jdk 8Elasticsearc...
    积微微微阅读 835评论 0 0
  • 自小喜欢画画,小的时候经常对着感兴趣的图像画啊画,小学参加过绘画比赛,高中心血来潮与同学混了混绘画艺术课,大...
    油油丹儿阅读 495评论 2 7