当前位置: 首页 > news >正文

Qt 串口通信

  • Qt 5 提供了串口操作相关的类QSerialPortInfo和QSerialPort

  • QSerialPortInfo 类可以监测系统的串口信息,如Com 号、设备位置、厂商信息等。

  • QSerialPort 类可以完成串口的具体操作,如打开或关闭串口、读写数据等。

  • 要使用这两个类,要在Pro文件中添加模块:
    QT+=serialport;

  • 同时在程序中包含头文件

    #include<QSerialPort>
    #include <QSerialPortInfo>
    

    获取所有串口设备

    • 要获取电脑中所有串口设备信息:调用QSerialPortInfo类的静态成员函数availablePorts()

    配置文件:

    情况1:如果是 CMake项目,则需要在CMakeLists.txt 中配置
    方法:打开CMakeList.txt,添加串口模块。通常,在CMake中,你需要使用find_package来找到Qt的组件,然后在链接时加上对应的库

    find_package(Qt6 COMPONENT Core Gui SerialPort REQUIRED)  #添加SerialPort
    #然后再使用Qt6库的地方,比如你的可执行目标 Qt6::SerialPort
    target_link_library(your_target Qt6::Core Qt6::Gui Qt5::SerialPort)

    情况2:如果是QMake 构建的,则使用上面方法即可 。

例:

void MainWindow::setSerialPorts()
{foreach(QSerialPortInfo info,QSerialPortInfo::availablePorts()){ui->cbSerialPorts->addItem(info.portName());}
}

设置串口参数并打开串口

  • 使用串口前需要对串口的COM号、波特率、奇偶校验等参数进行设置,具体步骤:
    1. 定义QSerialPort 类对象
    2. 设置串口的工作参数,如Com号、波特率、奇偶校验等
    3. 使用open()函数打开串口
    4. 确认串口已打开
void MainWindow::on_btnOpenSerialPort_clicked()
{//设置串口工作参数m_port->setPortName(ui->cbSerialPorts->currentText());m_port->setBaudRate(QSerialPort::Baud9600);m_port->setDataBits(QSerialPort::Data8);m_port->setParity(QSerialPort::NoParity);m_port->setStopBits(QSerialPort::OneStop);m_port->setFlowControl(QSerialPort::NoFlowControl);try{if(ui->btnOpenSerialPort->text()=="打开"){m_port->open(QIODevice::ReadWrite);if(m_port->isOpen()){ui->btnOpenSerialPort->setText("关闭");qDebug()<<"串口打开成功";}}else if(ui->btnOpenSerialPort->text()=="关闭"){m_port->close();qDebug()<<"串口成功关闭";}}catch(std::exception ex){qDebug()<<ex.what();}
}

串口的读写

  • QSerialPort 类的父类QIODevice提供了共有的write()、read()、readAll()等函数.
  • QSerialPort 类继承了这些函数,从而实现串口数据的读写操作

例如:

void MainWindow::on_btnSend_clicked()
{QByteArray data="This is Qt C++ SerialPort Data";qDebug()<<m_port->write(data);
}

效果:
image

http://www.jsqmd.com/news/370702/

相关文章:

  • 权威榜单揭晓:2025年优质权威的土耳其移民中介推荐TOP3排行榜 - 行业观察日记
  • 使用WinDbg调试器分析内核对象:深入ALPC端口与句柄追踪
  • synchronized
  • 从课堂到高薪岗:2026高职大数据技术专业考证避坑+推荐清单
  • 翻译助手重磅上线,您的高效翻译新选择
  • 基于微信小程序的博物馆知识科普服务闯关平台设计与实习 三端 web pc
  • 导师严选!千笔AI,好评如潮的AI论文网站
  • 坑:两次操作,使用ACE的gettimeofday(),获取时间戳,时间戳一致,写入时序库失败。
  • Claude Code从小白到大神的10000字终极指南
  • 2026深圳美国留学中介机构推荐:三大本土靠谱美国留学中介机构盘点 - 品牌2025
  • ceph t版本的ratelimit
  • 2026年深圳公司搬家服务评测推荐:告别搬迁烦恼,高效省心之选排行榜 - 品牌推荐
  • web worker和service worker
  • 使用AI辅助构建编程体系
  • “声”临其境网站分享
  • 写作压力小了!8个AI论文工具测评:MBA毕业论文与科研写作必备指南
  • 推拉窗怎么选?盘点当前市场主流品牌,慕莎尼奥门窗/门窗/断桥铝门窗/铝门窗/平移断桥提升窗,推拉窗采购排行 - 品牌推荐师
  • BUUCTF刷题MISC[十二] (105-112)
  • python企业财务支付费用管控平台vue
  • 1553B通讯总线的1188校验字
  • 二分查找和二分答案
  • 效率直接起飞!千笔,人气爆表的AI论文网站
  • python乡镇社区节能环保管理系统vue
  • springboot+vue电商平台商城可视化沙箱支付 优惠卷
  • python家庭超市管理系统设计与实现
  • 剪映专业版字幕功能详解与声音文字提取教程
  • 2026年,银川展厅 售楼部装修找哪家?优先推荐宁夏镹臻 专业工装省心落地 - 宁夏壹山网络
  • Linux关机命令
  • python企业申报评审管理系统vue
  • 以智为擎,全栈统管 ——北京智和信通2025年度工作总结