










Qt 5 提供了串口操作相关的类QSerialPortInfo和QSerialPort
QSerialPortInfo 类可以监测系统的串口信息,如Com 号、设备位置、厂商信息等。
QSerialPort 类可以完成串口的具体操作,如打开或关闭串口、读写数据等。
要使用这两个类,要在Pro文件中添加模块:
QT+=serialport;
同时在程序中包含头文件
#include<QSerialPort>
#include <QSerialPortInfo>
情况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());
}
}
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();
}
}
例如:
void MainWindow::on_btnSend_clicked()
{
QByteArray data="This is Qt C++ SerialPort Data";
qDebug()<<m_port->write(data);
}
效果:

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。