news 2026/2/22 5:20:39

Qt实现温度湿度传感器采样上位机之数据记录功能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt实现温度湿度传感器采样上位机之数据记录功能

Qt温度湿度传感器采样上位机源代码C++数据记录功能Windows上位机

在开发Windows上位机应用程序时,利用Qt框架来实现温度湿度传感器数据的采样及记录是一个相当不错的选择。今天就来和大家分享一下如何在Qt中实现这一功能。

一、项目初始化

首先,我们创建一个新的Qt Widgets Application项目。打开Qt Creator,依次选择“File” -> “New File or Project”,然后在“Application”下选择“Qt Widgets Application”,按照向导提示一步步完成项目的创建。

二、界面设计

我们需要设计一个简单的界面,用于显示传感器数据以及记录数据的相关操作按钮。在Qt Designer中,我们可以轻松地拖拽各种控件来搭建界面。

Qt温度湿度传感器采样上位机源代码C++数据记录功能Windows上位机

例如,我们可能会添加几个QLabel用于显示温度和湿度的数值,再添加一个QPushButton用于开始/停止数据记录,还需要一个QTextEdit或者QTableWidget来临时展示记录的数据(这里以QTextEdit为例)。

三、核心代码实现

1. 数据采样模拟

在实际项目中,温度湿度传感器的数据通常通过串口、I2C或者其他通信协议获取。这里我们先简单模拟一下数据的获取过程。

// 模拟获取温度数据 double getTemperature() { // 实际应用中这里会是与传感器通信获取数据的代码 return qrand() % 40 + 10; // 模拟10 - 50之间的随机温度值 } // 模拟获取湿度数据 double getHumidity() { // 实际应用中这里会是与传感器通信获取数据的代码 return qrand() % 60 + 20; // 模拟20 - 80之间的随机湿度值 }

2. 数据记录功能

接下来实现数据记录功能。我们可以将数据记录到文件中,方便后续查看和分析。

#include <QFile> #include <QDateTime> void saveDataToFile(double temperature, double humidity) { QFile file("sensor_data.txt"); if (!file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) { qWarning() << "Could not open file for writing"; return; } QDateTime currentTime = QDateTime::currentDateTime(); QString timeStr = currentTime.toString("yyyy-MM-dd hh:mm:ss"); QString dataLine = QString("%1, Temperature: %2 °C, Humidity: %3 %%\n") .arg(timeStr) .arg(temperature, 0, 'f', 2) .arg(humidity, 0, 'f', 2); file.write(dataLine.toUtf8()); file.close(); }

在这段代码中,我们首先尝试打开一个名为sensor_data.txt的文件。如果文件打开失败,我们通过qWarning输出警告信息。成功打开文件后,我们获取当前的日期和时间,并将温度、湿度数据按照一定的格式组合成一行字符串写入文件。arg函数用于格式化字符串,其中0表示不指定最小宽度,'f'表示以浮点数形式输出,2表示保留两位小数。

3. 与界面交互

我们需要将数据采样和记录功能与界面上的按钮等控件关联起来。假设我们有一个QPushButton用于开始/停止记录数据,在mainwindow.cpp中的MainWindow构造函数里进行如下关联:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->startRecordButton, &QPushButton::clicked, this, &MainWindow::startStopRecord); } void MainWindow::startStopRecord() { static bool isRecording = false; if (!isRecording) { ui->startRecordButton->setText("Stop Record"); isRecording = true; QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, [this]() { double temperature = getTemperature(); double humidity = getHumidity(); ui->temperatureLabel->setText(QString("Temperature: %1 °C").arg(temperature, 0, 'f', 2)); ui->humidityLabel->setText(QString("Humidity: %1 %%").arg(humidity, 0, 'f', 2)); saveDataToFile(temperature, humidity); ui->dataTextEdit->append(QString("Time: %1, Temperature: %2 °C, Humidity: %3 %%") .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")) .arg(temperature, 0, 'f', 2) .arg(humidity, 0, 'f', 2)); }); timer->start(5000); // 每5秒获取并记录一次数据 } else { ui->startRecordButton->setText("Start Record"); isRecording = false; } }

startStopRecord函数中,我们使用一个静态变量isRecording来跟踪当前是否正在记录数据。当按钮第一次被点击时,按钮文本变为“Stop Record”,同时创建一个QTimer,并将其timeout信号连接到一个匿名函数。在这个匿名函数中,我们获取模拟的温度和湿度数据,更新界面上显示温度和湿度的QLabel,调用saveDataToFile函数将数据保存到文件,并且在QTextEdit中追加显示最新的数据记录。QTimer设置为每5000毫秒(即5秒)触发一次timeout信号,实现定时采样和记录。当按钮再次被点击时,按钮文本变回“Start Record”,并停止记录。

通过以上步骤,我们就利用Qt完成了一个简单的温度湿度传感器采样上位机的数据记录功能,能够在Windows系统上稳定运行。当然,在实际应用中,还需要根据具体的传感器通信协议来准确获取真实的数据,这只是一个基础的框架示例。希望这篇博文能给你在相关开发工作中带来一些帮助和启发。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/19 4:39:20

腾讯优图Youtu-2B开箱体验:低显存环境下的全能对话AI

腾讯优图Youtu-2B开箱体验&#xff1a;低显存环境下的全能对话AI 1. 引言&#xff1a;轻量级大模型的现实需求 随着大语言模型&#xff08;LLM&#xff09;在各类应用场景中的广泛落地&#xff0c;算力成本与部署门槛成为制约其普及的关键因素。尤其是在边缘设备、个人工作站…

作者头像 李华
网站建设 2026/2/8 21:01:53

Z-Image-Turbo部署痛点:网络中断导致下载失败?镜像免下载解法

Z-Image-Turbo部署痛点&#xff1a;网络中断导致下载失败&#xff1f;镜像免下载解法 1. 背景与问题引入 在当前AI图像生成技术快速发展的背景下&#xff0c;Z-Image-Turbo作为阿里巴巴通义实验室开源的高效文生图模型&#xff0c;凭借其卓越性能迅速成为开发者和创作者关注的…

作者头像 李华
网站建设 2026/2/20 9:59:49

HY-MT1.5-1.8B企业应用案例:跨境电商翻译解决方案

HY-MT1.5-1.8B企业应用案例&#xff1a;跨境电商翻译解决方案 随着全球电商市场的持续扩张&#xff0c;多语言内容的高效、准确翻译成为企业出海的关键能力。在商品描述、用户评论、客服对话等场景中&#xff0c;传统翻译服务常面临延迟高、成本大、术语不一致等问题。为此&am…

作者头像 李华
网站建设 2026/2/18 21:09:14

Qwen2.5-0.5B性能监控:推理过程中的指标跟踪

Qwen2.5-0.5B性能监控&#xff1a;推理过程中的指标跟踪 1. 技术背景与应用场景 随着大语言模型在实际业务中的广泛应用&#xff0c;对模型推理过程的性能监控变得愈发重要。Qwen2.5-0.5B-Instruct 作为阿里开源的小参数量级指令调优模型&#xff0c;在轻量化部署和快速响应方…

作者头像 李华
网站建设 2026/2/18 19:07:15

构建智能移动端AI应用|基于AutoGLM-Phone-9B的推理优化实践

构建智能移动端AI应用&#xff5c;基于AutoGLM-Phone-9B的推理优化实践 1. 引言&#xff1a;移动端多模态AI的挑战与机遇 随着移动设备算力的持续提升&#xff0c;将大语言模型&#xff08;LLM&#xff09;部署至终端侧已成为AI落地的重要趋势。然而&#xff0c;传统大模型在…

作者头像 李华
网站建设 2026/2/21 12:38:40

Qwen3-4B-Instruct-2507性能分析:不同精度推理对比

Qwen3-4B-Instruct-2507性能分析&#xff1a;不同精度推理对比 1. 技术背景与问题提出 随着大模型在实际业务场景中的广泛应用&#xff0c;推理效率与资源消耗之间的平衡成为工程落地的关键挑战。Qwen3-4B-Instruct-2507作为通义千问系列中面向高效部署的40亿参数非思考模式模…

作者头像 李华