您当前的位置: 首页 >  qt

龚建波

暂无认证

  • 5浏览

    0关注

    312博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Qt串口通信,QSerialPort的使用

龚建波 发布时间:2019-02-16 17:11:12 ,浏览量:5

前言

Qt写上位机时,串口通信是个常用功能,在Qt4的时候有第三方模块QextSerialPort,到了Qt5.1官方提供了QSerialPort模块。

目录

前言

获取串口信息:QSerialPortInfo

串口IO操作:QSerialPort

实例操作

补充:16进制文本(如“0A 13 EF”)转16进制数据(如0x0A 0x13 0xEF)

使用该模块需要在pro文件中添加:QT += serialport 

主要使用两个类:QSerialPort和QSerialPortInfo

获取串口信息:QSerialPortInfo

获取串口名列表

QStringList slist;
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
   //检测是否可用
   f(!info.isBusy())
       slistsetBaudRate(115200);   //波特率
serialIo->setDataBits(QSerialPort::Data8);     //数据位
serialIo->setParity(QSerialPort::NoParity);    //校验位
serialIo->setStopBits(QSerialPort::OneStop);   //停止位
serialIo->setFlowControl(QSerialPort::NoFlowControl);//流控制一般没用

//[2]串口开启
if(serialIo->open(QIODevice::ReadWrite)){
    qDebug()write(send_data);
    qDebug()setDataBits(databit);
        serialIo->setParity(parity);
        serialIo->setStopBits(stopbit);
        serialIo->setFlowControl(flowcontrol);//这个我一般没用
        if(serialIo->open(QIODevice::ReadWrite)){
            qDebug()setEnabled(enabled);
    ui->boxDataBits->setEnabled(enabled);
    ui->boxParity->setEnabled(enabled);
    ui->boxStopBits->setEnabled(enabled);
    ui->boxFlowControl->setEnabled(enabled);
}

void MainWidget::sendData()
{
    //注意收发的编码问题,我一般只是发命令吗和字节数据,没怎么发字符串,用latin1就行了
    const QByteArray send_data=ui->textSend->toPlainText().toUtf8();
    if(send_data.size()isOpen()){
        serialIo->write(send_data);
        qDebug()            
关注
打赏
1655829268
查看更多评论
0.1410s