PyQt5——QTimer提高精度至毫秒级别,时间误差自动补偿

2024-04-24 07:38

本文主要是介绍PyQt5——QTimer提高精度至毫秒级别,时间误差自动补偿,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在实现定时采集气象传感器的数据。在软件实现方面,用PyQt5框架的QTimer实现定时读取传感器信息,但在做测试实验的过程中发现QTimer的精度误差太大,原计划每1秒读一次数据,随着时间的延长,无法实现精确度为1s的读取。

因此在网上找到了解决办法。下面给出python代码以及测试结果。

代码:

from PyQt5.QtCore import QTimer
import datetime as dt
from PyQt5.QtCore import Qt
from PyQt5.QtCore import QThreadclass QThreadSensorData(QThread):def __init__(self):super().__init__()self.timerPrin()def timerPrin(self):self.timer = QTimer(self) self.timer.setTimerType(Qt.PreciseTimer)  # 关键的一步,取消默认的精度设置self.timer.timeout.connect(self.printTime)  # 打印当前的时间self.timer.start(1000.00)  # 定时为1秒触发def printTime(self):print(dt.datetime.now())if __name__ == "__main__":import sysfrom PyQt5.QtWidgets import QApplicationapp = QApplication(sys.argv)data = QThreadSensorData()data.start()sys.exit(app.exec_())

测试结果:

2020-03-11 22:07:27.401657
2020-03-11 22:07:28.402388
2020-03-11 22:07:29.402548
2020-03-11 22:07:30.402515
2020-03-11 22:07:31.402232
2020-03-11 22:07:32.402093
2020-03-11 22:07:33.402350
2020-03-11 22:07:34.401576
2020-03-11 22:07:35.401716
2020-03-11 22:07:36.401798
2020-03-11 22:07:37.402517
2020-03-11 22:07:38.401717
2020-03-11 22:07:39.401757
2020-03-11 22:07:40.401661
2020-03-11 22:07:41.402510
2020-03-11 22:07:42.402466
2020-03-11 22:07:43.401694
2020-03-11 22:07:44.402286
2020-03-11 22:07:45.401995
2020-03-11 22:07:46.401936
2020-03-11 22:07:47.401721
2020-03-11 22:07:48.401690
2020-03-11 22:07:49.402235
2020-03-11 22:07:50.402019
2020-03-11 22:07:51.402400
2020-03-11 22:07:52.402513
2020-03-11 22:07:53.402245
2020-03-11 22:07:54.401553
2020-03-11 22:07:55.402231
2020-03-11 22:07:56.401617

刚开始的毫秒为:.401,运行29秒后,毫秒为.401,即使在中间出现了.402,通过设置

self.timer.setTimerType(Qt.PreciseTimer)

实现了误差自动补偿,实现了每秒读取数据的功能。

参考资料:

[1] hong_chase, Qt学习笔记-定时器的应用及精度设置, 2017.09, CSDN.

这篇关于PyQt5——QTimer提高精度至毫秒级别,时间误差自动补偿的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/931136

相关文章

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

键盘快捷键:提高工作效率与电脑操作的利器

键盘快捷键:提高工作效率与电脑操作的利器 在数字化时代,键盘快捷键成为了提高工作效率和优化电脑操作的重要工具。无论是日常办公、图像编辑、编程开发,还是游戏娱乐,掌握键盘快捷键都能带来极大的便利。本文将详细介绍键盘快捷键的概念、重要性、以及在不同应用场景中的具体应用。 什么是键盘快捷键? 键盘快捷键,也称为热键或快捷键,是指通过按下键盘上的一组键来完成特定命令或操作的方式。这些快捷键通常涉及同

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

如何提高 GitHub 的下载速度

如何提高 GitHub 的下载速度 文章目录 如何提高 GitHub 的下载速度1. 注册账号2. 准备好链接3. 创建仓库4. 在码云上下载代码5. 仓库更新了怎么办 一般来说,国内的朋友从 GitHub 上面下载代码,速度最大是 20KB/s,这种龟速,谁能忍受呢? 本文介绍一种方法——利用“码云”,可以大大提高下载速度,亲测有效。 1. 注册账号 去“码云”注册一

【Python篇】PyQt5 超详细教程——由入门到精通(终篇)

文章目录 PyQt5超详细教程前言第9部分:菜单栏、工具栏与状态栏9.1 什么是菜单栏、工具栏和状态栏9.2 创建一个简单的菜单栏示例 1:创建带有菜单栏的应用程序代码详解: 9.3 创建工具栏示例 2:创建带有工具栏的应用程序代码详解: 9.4 创建状态栏示例 3:创建带有状态栏的应用程序代码详解: 9.5 菜单栏、工具栏与状态栏的结合示例 4:完整的应用程序界面代码详解: 9.6 总结

Shell脚本实现自动登录服务器

1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]]thenhostNum=`cat ./serverList.txt | wc -l`e

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env

以后写代码都是AI自动写了,Cursor+Claude-3.5-Sonnet,Karpathy 点赞的 AI 代码神器。如何使用详细教程

Cursor 情况简介 AI 大神 Andrej Karpathy 都被震惊了!他最近在试用 VS Code Cursor +Claude Sonnet 3.5,结果发现这玩意儿比 GitHub Copilot 还好用! Cursor 在短短时间内迅速成为程序员群体的顶流神器,其背后的原因在于其默认使用 OpenAI 投资的 Claude-3.5-Sonnet 模型,这一举动不仅改变了代码生成

在 Qt Creator 中,输入 /** 并按下Enter可以自动生成 Doxygen 风格的注释

在 Qt Creator 中,当你输入 /** 时,确实会自动补全标准的 Doxygen 风格注释。这是因为 Qt Creator 支持 Doxygen 以及类似的文档注释风格,并且提供了代码自动补全功能。 以下是如何在 Qt Creator 中使用和显示这些注释标记的步骤: 1. 自动补全 Doxygen 风格注释 在 Qt Creator 中,你可以这样操作: 在你的代码中,将光标放在