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

2024-04-14 00:12

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

java读取excel文件为base64实现方式

《java读取excel文件为base64实现方式》文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意... 目录使用 Apache POI 读取 Excel 并转换为 Base64使用 EasyExcel 处

Spring Boot中获取IOC容器的多种方式

《SpringBoot中获取IOC容器的多种方式》本文主要介绍了SpringBoot中获取IOC容器的多种方式,包括直接注入、实现ApplicationContextAware接口、通过Spring... 目录1. 直接注入ApplicationContext2. 实现ApplicationContextA

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日