qt串口发送16进制
时间: 2025-07-06 15:48:10 浏览: 8
### 使用 Qt 进行串口通信并发送十六进制数据
对于使用 Qt 实现串口通信以及发送十六进制数据的需求,可以利用 `QSerialPort` 类来完成这一功能。下面是一个简单的例子展示如何配置串口参数并通过它发送特定格式的数据。
#### 配置项目文件(`.pro`)
为了能够正常使用 QSerialPort 模块,在项目的 `.pro` 文件中添加如下内容:
```qmake
QT += serialport
```
这会确保编译器链接必要的库以便于访问串口资源[^1]。
#### 主程序代码实现
接下来是具体的 C++ 代码片段用于创建应用程序窗口并且定义槽函数处理按钮点击事件从而触发向指定端口写入二进制流的操作:
```cpp
#include <QCoreApplication>
#include "mainwindow.h"
#include <QSerialPort>
#include <QSerialPortInfo>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), serial(new QSerialPort(this))
{
setupUi(this);
connect(sendButton, &QPushButton::clicked,
this, &MainWindow::onSendButtonClicked);
}
void MainWindow::setupSerialPort()
{
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
qDebug() << "Name:" << info.portName();
qDebug() << "Description:" << info.description();
qDebug() << "Manufacturer:" << info.manufacturer();
}
// 设置串口号、波特率等属性
serial->setPortName("/dev/ttyUSB0"); // 或者其他有效的设备路径
serial->setBaudRate(QSerialPort::Baud9600); // 可选不同的速率
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
if(serial->open(QIODevice::ReadWrite)){
qDebug()<<"Opened Serial Port";
}else{
qCritical()<<"Failed to open serial port.";
}
}
void MainWindow::onSendButtonClicked()
{
QByteArray hexString = "AABBCCDD"; // 十六进制字符串表示形式
QByteArray byteArray;
for(int i=0; i<hexString.length(); ++i){
bool ok;
char ch = static_cast<char>(hexString.mid(i,2).toInt(&ok,16));
if(ok){
byteArray.append(ch);
++i; // 跳过下一个字符因为已经读取两位作为一字节
}
}
int bytesWritten = serial->write(byteArray);
qDebug()<<bytesWritten<<"byte(s) were sent!";
}
```
上述代码展示了怎样初始化串口设置,并通过解析给定的十六进制字符串转换成字节数组再调用 `serial->write()` 方法将其传输出去的过程[^2]。
阅读全文
相关推荐















