用qt写串口通信写出打开串口关闭串口搜索串口串口收发数据
下面是一个用Qt编写的串口通信示例代码,包括打开串口、关闭串口、搜索串口和串口收发数据的功能:
#include <QCoreApplication>
#include <QtSerialPort/QSerialPort>
#include <QDebug>
QSerialPort serial;
// 打开串口
bool openSerialPort(const QString& portName)
{
serial.setPortName(portName);
serial.setBaudRate(QSerialPort::Baud9600);
serial.setDataBits(QSerialPort::Data8);
serial.setParity(QSerialPort::NoParity);
serial.setStopBits(QSerialPort::OneStop);
if (serial.open(QIODevice::ReadWrite))
{
qDebug() << "Serial port opened: " << portName;
return true;
}
else
{
qDebug() << "Failed to open serial port: " << portName;
return false;
}
}
// 关闭串口
void closeSerialPort()
{
if (serial.isOpen())
{
serial.close();
qDebug() << "Serial port closed";
}
}
// 搜索串口
QStringList getAvailableSerialPorts()
{
QStringList ports;
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
ports << info.portName();
}
return ports;
}
// 串口收发数据
void sendData(const QByteArray& data)
{
if (serial.isOpen())
{
serial.write(data);
qDebug() << "Data sent: " << data;
}
else
{
qDebug() << "Serial port is not opened";
}
}
void readData()
{
QByteArray data = serial.readAll();
qDebug() << "Data received: " << data;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 搜索串口
QStringList ports = getAvailableSerialPorts();
foreach (const QString &port, ports)
{
qDebug() << "Serial port found: " << port;
}
// 打开串口(示例中使用第一个搜索到的串口)
if (!ports.isEmpty())
{
QString portName = ports.first();
if (openSerialPort(portName))
{
// 读取串口数据
QObject::connect(&serial, &QSerialPort::readyRead, readData);
// 发送数据
QByteArray data("Hello, Serial Port!");
sendData(data);
}
}
return a.exec();
}
请注意,为了使用Qt串口库,你需要在.pro文件中添加以下内容:
QT += serialport
``
原文地址: https://www.cveoy.top/t/topic/iZ0v 著作权归作者所有。请勿转载和采集!