当前位置: 首页 > news >正文

pyqt写个星三角降压启动方式2

星三角降压启动用可以用类进行封装,就像博图FB块那样。把逻辑都在类里完成,和外界需要交互的暴露出接口。测试过程中,发现类中直接用定时器QTimer会出现问题。然后就把定时器放到外面了。然后测试功能正常。

from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *class Motor:def __init__(self,isrun:bool=None,is_star_run:bool=None,is_tran_run:bool=None,fault:bool=None):self.is_main_run = isrunself.is_star_run = is_star_runself.is_tran_run = is_tran_run,self.fault = fault@staticmethoddef get_bool(bytes:bytearray,address:int):byte_index = address//8bit_index = address % 8return bool(bytes[byte_index]>>bit_index & 1)@staticmethoddef set_bool(bytes:bytearray,address:int,value:bool):if value not in {1,0,False,True}:raise TypeError(f"Value value:{value} is not a boolean expression.")byte_index = address // 8bit_index = address % 8index_value = 1<< bit_indexcurrent_value = Motor.get_bool(bytes,address)if current_value == value:returnif value:bytes[byte_index] += index_valueelse:bytes[byte_index] -= index_valuedef __str__(self):return f'{self.is_main_run} {self.is_star_run} {self.is_tran_run} {self.fault}'class StarMotor(QObject):def __init__(self,motor:Motor=None,tim:QTimer=None):self.interval = 3000self.timer = timself.timer.setInterval(self.interval)self.motor = motorself.startTimer()def set_interval(self,val:int):self.interval = valdef on_timer(self):print("timer is starting")self.motor.set_bool()def start(self,state,bytes,out1,out2,out3):def on_timer():self.motor.set_bool(bytes,out3,1)self.motor.set_bool(bytes,out2,0)print("三角启动")if state:if not all([self.motor.is_main_run,self.motor.is_star_run,self.motor.is_tran_run]):self.motor.set_bool(bytes,out1,1)self.motor.set_bool(bytes,out2,1)print("星启动")if self.motor.is_main_run and self.motor.is_star_run:if not self.timer.isActive():self.timer.timeout.connect(on_timer)self.timer.setSingleShot(True)self.timer.start()if self.motor.fault:self.motor.set_bool(bytes,out1,0)self.motor.set_bool(bytes,out2,0)self.motor.set_bool(bytes,out3,0)print("fault")if not state:self.motor.set_bool(bytes, out1, 0)self.motor.set_bool(bytes, out2, 0)self.motor.set_bool(bytes, out3, 0)print("stop")class Ui(QWidget):def __init__(self):super().__init__()self.resize(600,600)self.init_ui()self.state = Noneself.motor = Motor()self.timer = QTimer(self)self.timer.timeout.connect(self.on_timer_loop)self.timer.start(100)self.bytes = bytearray(1)time2 = QTimer(self)self.d = StarMotor(self.motor,time2)def on_timer_loop(self):self.d.start(self.state,self.bytes,0,1,2)print(self.bytes)def init_ui(self):self.btn = QPushButton('start',self)self.btn2 = QPushButton('stop',self)self.btn3 = QPushButton('主运行',self)self.btn4 = QPushButton('星运行',self)self.btn5 = QPushButton('三角运行',self)self.btn6 = QPushButton('故障',self)self.btn.setCheckable(True)self.btn2.setCheckable(True)self.btn3.setCheckable(True)self.btn4.setCheckable(True)self.btn5.setCheckable(True)self.btn6.setCheckable(True)self.btn.move(100,30)self.btn2.move(100,80)self.btn3.move(100,130)self.btn4.move(100,230)self.btn5.move(100,330)self.btn6.move(100,430)self.btn.clicked.connect(self.btn_click)self.btn2.clicked.connect(self.btn_click2)self.btn3.clicked.connect(self.btn_click3)self.btn4.clicked.connect(self.btn_click4)self.btn5.clicked.connect(self.btn_click5)self.btn6.clicked.connect(self.btn_click6)def btn_click(self,checked):self.state = checkeddef btn_click2(self,checked):passdef btn_click3(self,checked):self.motor.is_main_run = checkeddef btn_click4(self,checked):self.motor.is_star_run=checkeddef btn_click5(self,checked):self.motor.is_tran_run = checkeddef btn_click6(self,checked):self.motor.fault=checkedif __name__ == '__main__':import sysapp = QApplication(sys.argv)win = Ui()win.show()sys.exit(app.exec())

相关文章:

pyqt写个星三角降压启动方式2

星三角降压启动用可以用类进行封装&#xff0c;就像博图FB块那样。把逻辑都在类里完成&#xff0c;和外界需要交互的暴露出接口。测试过程中&#xff0c;发现类中直接用定时器QTimer会出现问题。然后就把定时器放到外面了。然后测试功能正常。 from PySide6.QtWidgets import …...

js可视化爬取数据生成当前热点词汇图

功能 可以爬取到很多数据&#xff0c;并且生成当前的热点词汇图&#xff0c;词越大越热门&#xff08;词云图&#xff09; 这里以b站某个评论区的数据为例&#xff0c;爬取63448条数据生成这样的图片 让我们能够更加直观的看到当前的热点 git地址 可以直接使用&#xff0c;中文…...

研发岗-面临统信UOS系统配置总结

第一步 获取root权限 配置环境等都需要用到root权限&#xff0c;所以我们先获取到root权限&#xff0c;方便下面的操作 下载软件 在UOS应用商店下载的所需应用 版本都比较低 安装node 官网下载了【arm64】的包&#xff0c;解压到指定文件夹&#xff0c;设置链接&#xff0…...

【STL详解 —— list的介绍及使用】

STL详解 —— list的介绍及使用 list的介绍list的介绍使用list的构造list iterator的使用list capacitylist element accesslist modifiers 示例list的迭代器失效 list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭…...

cocos creator开发中遇到的问题和解决方案

前言 总结一下使用cocos开发遇到的坑&#xff0c;不定期更新。 问题汇总 代码修改Position坐标不生效 首先要通过打log或者断点排除下是不是逻辑上的问题&#xff0c;还有是不是有动画相关把位置修改了。我遇到的问题是坐标修改被widget组件覆盖了。 纹理压缩包体变大 co…...

10分钟带你学会配置DNS服务正反向解析

正向解析 服务端IP客户端IP网址192.168.160.134192.168.160.135www.openlab.com 一、首先做准备工作&#xff1a; 关闭安全软件&#xff0c;关闭防火墙&#xff0c;下载bind软件 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootserver ~]# y…...

【vim 学习系列文章 19 -- 映射快捷键调用两个函数 A 和B】

请阅读【嵌入式开发学习必备专栏 之 Vim】 文章目录 映射快捷键调用两个函数 映射快捷键调用两个函数 在 Vim 中&#xff0c;如果想通过按下 gcm 来调用两个函数&#xff0c;比如 FunctionA 和 FunctionB&#xff0c;需要先定义这两个函数&#xff0c;然后创建一个映射。这个映…...

Windows安装MongoDB结合内网穿透轻松实现公网访问本地数据库

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

sgg大数据全套技术链接[plus]

写在开头&#xff1a;感谢尚硅谷&#xff0c;尚硅谷万岁&#xff0c;我爱尚硅谷 111个技术栈43个项目&#xff0c;兄弟们&#xff0c;冲&#xff01; 最近小米又又又火了一把&#xff0c;致敬所有造福人民的企业和伟大的企业家&#xff0c;致敬雷军&#xff0c;小米&#xff…...

OpenHarmony南向嵌入式:【XR806开发板指导文档】

一. 简介 芯片介绍 XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片&#xff0c;支持OpenHarmony轻量设置系统。具有集成度高、硬件设计简单、BOM成本低、安全可靠等优点。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞…...

Rust 实战练习 - 10. JSON、XML、YAML/TOML、Ini专题

配置文件 常见的配置文件有很多&#xff1a;JSON, Ini, XML, TOML, YAML … 目标&#xff1a; JSON/YAML/TOMLIniXML Rust中序列化用的最多的是 serde, 依赖它&#xff0c;有很多出色的第三方库可以使用。 其中&#xff0c;serde本身支持JSON/YAML/TOML/JSON5…多种&#…...

5.Hexo为页面标记标签和类别

Hexo的标签和类别基本上是可以在Hexo中将内容分组的两种方式 如果在网站上有一堆内容&#xff0c;有不同的博客文章 将博客文章分类为不同的类别会很有帮助 用特定的关键词为博客文章标记 如果可以同时分类和标记页面&#xff0c;会使网站用户更轻松地找到他们想要的页面类型 …...

·13·1dawwd

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…...

Docker - PostgreSQL

博文目录 文章目录 说明命令 说明 Docker Hub PostgreSQL 数据卷数据卷印射在容器内的路径postgres/var/lib/postgresql/data |容器内的路径|说明| |–|–|–| |/var/lib/postgresql/data|数据目录| 部分环境变量是否必要说明POSTGRES_PASSWORD必需设置超级用户密码POSTGRES…...

Python | Leetcode Python题解之第26题删除有序数组中的重复项

题目&#xff1a; 题解&#xff1a; class Solution:def removeDuplicates(self, nums: List[int]) -> int:if not nums:return 0n len(nums)fast slow 1while fast < n:if nums[fast] ! nums[fast - 1]:nums[slow] nums[fast]slow 1fast 1return slow...

【电控笔记4】拉普拉斯-传递函数-pid

数据标幺化 拉普拉斯变换 欧拉公式 常见s变换 s变换性质...

针对“AI+医疗”的可行方案

针对“AI医疗”的可行方案如下&#xff1a; 一、方案目标 利用AI技术&#xff0c;结合医疗数据&#xff0c;开发一套高效、准确的医疗辅助系统&#xff0c;旨在提高医疗诊断的精度、加速药物研发进程、优化疾病预测模型&#xff0c;从而辅助医生进行疾病诊断和治疗方案制定。…...

时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测

时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测 目录 时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-ESN基于麻雀搜索…...

Go——面向对象

一. 匿名字段 go支持只提供类型而不写字段名的方式&#xff0c;也就是匿名字段&#xff0c;也称为嵌入字段。 同名字段的情况 所以自定义类型和内置类型都可以作为匿名字段使用 指针类型匿名字段 二.接口 接口定义了一个对象的行为规范&#xff0c;但是定义规范不实现&#xff…...

身份证识别ocr、身份证实名认证接口文档

每一次验证背后&#xff0c;都是对用户数据安全的承诺&#xff0c;对平台信誉的坚守。翔云身份证实名认证API&#xff0c;通过身份证识别接口仅需一键上传身份证图片即可快速识别身份证信息&#xff0c;翔云实名认证接口实时联网查验证件信息的真伪。 ​PHP身份证实名认证接口…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...