python 动态数据 展示 ,数据是由51单片机发送过来的,温度传感器。

import tkinter as tk
import randomimport seriallis=[]
for i in range(50):lis.append(i+1)
# 打开串行端口
ser = serial.Serial('COM3', 9600)  # 9600为波特率,根据实际情况进行调整# 初始化数据
lis = [random.randint(15, 35) for _ in range(50)]def update_data():global lis# 模拟数据更新# lis = [random.randint(15, 35) for _ in range(50)]try:   if ser.in_waiting > 0:  # 如果串口有数据可读           data = ser.read()  # 读取一行数据并解码为字符串ser.reset_input_buffer()tmp=(ord(data)+100)/10print("\r测到的温度是:", tmp,'°C',end=' ')lis.append(tmp)while len(lis)>50:lis.pop(0)print(lis,end=' ')except Exception as error:print(error)ser.close()  # 捕获Ctrl+C中断信号后关闭串口    print("程序已停止")passdef draw_chart(canvas, data):canvas.delete("all")  # 清除画布上的所有内容# 以下是绘图代码,与之前相同,只是增加了canvas参数margin = 40width = 600 - 2 * marginheight = 400 - 2 * marginx_scale = width / (len(data) - 1)y_scale = height / (35 - 10)canvas.create_line(margin, 400 - margin, 600 - margin, 400 - margin)  # X轴canvas.create_line(margin, 400 - margin, margin, margin)  # Y轴for i in range(len(data)):x = margin + i * x_scaleif i % 5 == 0:  # 每5个数据点标记一次canvas.create_text(x, 400 - margin + 20, text=str(i))for value in range(int(10), int(35) + 1, 5):y = 400 - margin - (value -10) * y_scalecanvas.create_line(margin - 5, y, margin, y)canvas.create_text(margin - 20, y, text=str(value))points=[]for i in range(len(data)):x = margin + i * x_scaley = 400 - margin - (data[i] - 10) * y_scalecanvas.create_oval(x - 2, y - 2, x + 2, y + 2, fill='red')points.append((x,y))# 绘制连接线for i in range(len(points) - 1):canvas.create_line(points[i], points[i+1])def update_data_and_redraw(canvas):update_data()  # 更新数据draw_chart(canvas, lis)  # 重绘图表root.after(1000, update_data_and_redraw, canvas)  # 每隔1000毫秒(1秒)调用一次该函数# 创建窗体和画布
root = tk.Tk()
root.title("动态数据展示")
canvas = tk.Canvas(root, width=600, height=400)
canvas.pack()update_data_and_redraw(canvas)  # 开始数据更新和图形重绘的循环root.mainloop()
ser.close()  # 捕获Ctrl+C中断信号后关闭串口   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/672196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时序预测 | Matlab实现基于LSTM长短期记忆神经网络的电力负荷预测模型

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 时序预测 | Matlab实现基于LSTM长短期记忆神经网络的电力负荷预测模型 LSTM(长短期记忆)是一种递归神经网络(RNN)的变体,它在序列数据建模方面表现出色。电力负荷预测是一项重要的任务,可以利用LSTM神经网络…

Damn Small Linux 停更16年后,2024 回归更新

Damn Small Linux(DSL) 发行版释出了最新的 2024 版本,并重新定义了什么叫“Damn Small”。 DSL 诞生于 2005 年,原本是尝试提供一个 50MB 大小的 LiveCD,2008 年开发停滞。 2024 年原作者 John Andrews 宣布 DSL 复活,在几乎所…

再这么烂下去,离糊就不远了。别让才华被埋没。

♥ 为方便您进行讨论和分享,同时也为能带给您不一样的参与感。请您在阅读本文之前,点击一下“关注”,非常感谢您的支持! 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 近日,胡歌凭借电视剧《繁花》荣登《环球银幕》二月…

【Django】Django日志管理

Django日志管理 Django使用Python内置的logging模块处理系统日志。 1.日志框架的组成元素 Python logging 配置由下面四部分组成: Loggers Handlers 过滤器 Formatters 1.1 Loggers logger是日志系统的入口,每个 logger都是命名了的 bucket&…

GEE数据集——美国干旱监测数据集(更新)

美国干旱监测 美国干旱监测》是每周四发布的地图,显示美国部分地区的干旱情况。该地图采用五种分级:异常干旱(D0),显示可能进入或即将摆脱干旱的地区;四级干旱:中度(D1)、…

蓝桥杯嵌入式第8届真题(完成) STM32G431

蓝桥杯嵌入式第8届真题(完成) STM32G431 题目 分析和代码 对比第六届和第七届,这届的题目在逻辑思维上确实要麻烦不少,可以从题目看出,这届题目对时间顺序的要求很严格,所以就可以使用状态机的思想来编程,拿到类似题…

记一次使用gophish开展的钓鱼演练

这周接到客户要求,组织一次钓鱼演练,要求是发送钓鱼邮件钓取用户账号及个人信息。用户提交后,跳转至警告界面,以此来提高客户单位针对钓鱼邮件的防范意识。 与客户沟通后得知他们企业内部是由邮箱网关的,那么就意味着…

正点原子--STM32基本定时器学习笔记(1)

目录 1. 定时器概述 1.1 软件定时原理 1.2 定时器定时原理 1.3 定时器分类 1.4 定时器特性表 1.5 基本、通用、高级定时器的功能整体区别 2. 基本定时器简介 3. 基本定时器框图 时钟树分析 这部分是笔者对基本定时器的理论知识进行学习与总结!主要记录学习…

UsernamePasswordAutheticationFilter源码解读和实践

UsernamePasswordAuthenticationFilter的目录 一、概述(重点)二、标红小步骤解读2.1 步骤1(标红1)2.1.1 AbstractAuthenticationProcessingFilter2.1.2 UsernamePasswordAuthenticationFilter 2.3 步骤2 和 步骤3(标红…

【SpringBoot篇】解决Redis分布式锁的 误删问题 和 原子性问题

文章目录 🍔Redis的分布式锁🛸误删问题🎈解决方法🔎代码实现 🛸原子性问题🌹Lua脚本 ⭐利用Java代码调用Lua脚本改造分布式锁🔎代码实现 🍔Redis的分布式锁 Redis的分布式锁是通过利…

synchronized 浅读解析 一

引言 在学习synchronized前,我们实际上是需要先了解Java对象在jvm中的储存结构,在了解了它的实际储存方式后,再对后边的锁学习会有一个更好更深入的理解。 一、对象结构 我们为什么要知道什么是对象头 在学习synchronized的时候&#xff0c…

破除Github API接口的访问次数限制

破除Github API接口的访问次数限制 1、Github介绍2、Github API接口2.1 介绍2.2 使用方法 3、Github API访问限制3.1 访问限制原因3.2 访问限制类别 4、Github API访问限制破除4.1 限制破除原理4.2 限制破除示例 1、Github介绍 Github,是一个面向开源及私有软件项目…

提升你的PHP开发效率:探索JetBrains PhpStorm 2022的全新特性

在当今快速发展的软件开发领域,选择一个强大且高效的开发工具对于提升开发效率、保证代码质量至关重要。对于PHP开发者来说,JetBrains PhpStorm一直是市场上最受欢迎的IDE之一。随着JetBrains PhpStorm 2022的发布,这款工具带来了一系列创新功…

MybatisPlus快速入门及常见设置

目录 一、快速入门 1.1 准备数据 1.2 创建SpringBoot工程 1.3 使用MP 1.4 获取Mapper进行测试 二、常用设置 2.1 设置表映射规则 2.1.1 单独设置 2.1.2 全局设置 2.2 设置主键生成策略 2.2.1 为什么会有雪花算法? 2.2.2 垂直分表 2.2.3 水平分表 2.…

JavaScript流程控制详解之顺序结构和选择结构

流程控制 流程控制,指的是控制程序按照怎样的顺序执行 在JavaScript中,共有3种流程控制方式 顺序结构选择结构循环结构 顺序结构 在JavaScript中,顺序结构是最基本的结构,所谓的顺序结构,指的是代码按照从上到下、…

上海亚商投顾:沪指涨超3% 深成指和创指双双飙涨超6%

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 今日A股三大指数一改近期低迷状态,早盘小幅低开后一路高歌猛进集体大涨,沪指涨超3%&am…

锁(二)队列同步器AQS

一、队列同步器AQS 1、定义 用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。是实现锁的关键。 2、实现 同步器的设计是基于模板方法模式的,也就是说&#…

如何安装x11vnc并结合cpolar实现win远程桌面Deepin

文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂&#xff…

11.0 Zookeeper watcher 事件机制原理剖析

zookeeper 的 watcher 机制,可以分为四个过程: 客户端注册 watcher。服务端处理 watcher。服务端触发 watcher 事件。客户端回调 watcher。 其中客户端注册 watcher 有三种方式,调用客户端 API 可以分别通过 getData、exists、getChildren …

GLSL ES 1.0

GLSL ES 概述 写在前面 程序是大小写敏感的每一个语句都应该以英文分号结束一个shader必须包含一个main函数,该函数不接受任何参数,并且返回voidvoid main() { }数据值类型 GLSL支持三种数据类型: 整型浮点型:必须包含小数点&…