当我们在界面上想驱动一个电机的启动和停止。不是简单的设置两个按钮就可以的。通常我们还要了解这些电气的其它一些状态和一些保护措施。就是所谓的输入信号,比如合闸信号,运行信号,故障信号,过流信号,跑偏信号(皮带机用)。如果想根据电流来改变频率,还要有输出设置。这些情况在实际项目中如何处理呢?我通常喜欢写个类,代码如下:
from PyQt5.QtCore import QObject,pyqtSignal
class Motor(QObject):
start_motor_signal=pyqtSignal(int,bool)
input_signal=pyqtSignal(int,int,int)
def __init__(self,*args,**kwargs):
super(Motor, self).__init__(*args,**kwargs)
self.is_on=None
self.running = None
self.error = None
self.input_signal.connect(self.get_input_singals)
def get_input_singals(self,is_on:int,running:int,eror:int)->None:#合闸,运行,故障
self.is_on=is_on
self.running=running
self.error=eror
def start_stop_mortor(self,addr:int,val:bool):
if self.running:
return
self.start_motor_signal.emit(addr,val)
if __name__=='__main__':
def run_motor(addr,data):
if data==True:
print(f'{addr}-motor is running')
else:
print(f'{addr}-mortor in stopping')
mortor1=Motor()
mortor1.start_motor_signal.connect(run_motor)
mortor1.input_signal.emit(1,0,1)
# print(mortor1.is_on)
# print(mortor1.running)
# print(mortor1.error)
import time
import random
while True:
a=random.randint(1,10)
b=random.randint(0,1)
mortor1.start_stop_mortor(MOTOR_6,b)
time.sleep(1)