python中的中断函数

python中的中断函数,python,interrupt,modbus,Python,Interrupt,Modbus,我正在使用modbus协议与我的程序通信。当从机从寄存器1上的主机获得信号时,他启动该功能 def main(): #Create the server server = modbus_rtu.RtuServer(serial.Serial(PORT)) server.start() slave_1 = server.add_slave(1) slave_1.add_block('0', cst.HOLDING_REGISTERS, 0, 2)

我正在使用modbus协议与我的程序通信。当从机从寄存器1上的主机获得信号时,他启动该功能

def main():

    #Create the server
    server = modbus_rtu.RtuServer(serial.Serial(PORT))
    server.start()

    slave_1 = server.add_slave(1)
    slave_1.add_block('0', cst.HOLDING_REGISTERS, 0, 2)
    slave_1.set_values('0', 0, 0)         #set value on the begining
    slave_1.set_values('0', 1, 0)         #set value on the begining

    while True:

        register_1 = slave_1.get_values('0', 0, 1)
        register_2 = slave_1.get_values('0', 1, 1)


        if register_1[0] == 1:

            time.sleep(3)
            slave_1.set_values('0', 0, 1)
            time.sleep(3)
            slave_1.set_values('0', 0, 0)
我想在我改变寄存器2的状态几秒钟后停止这个函数,在这段时间之后,它应该回到停止时的位置。 这应该是立即,所以我不能检查这是正常的“如果”。 它应该类似于在arduino中断


问题:如何创建此中断?

不幸的是,我不知道任何类似于arduino中中断的python函数

如果要停止此程序,请使用:

    if register_1[0] == 1:

        for i in range(300): #for 300ms
            if register_2[0] == 1:
                __STOP_PROGRAM__
            time.sleep(0.1) #sleep 1ms
        slave_1.set_values('0', 0, 1)
        for i in range(300): #for 300ms
            if register_2[0] == 1:
                __STOP_PROGRAM__
            time.sleep(0.1) #sleep 1ms
        slave_1.set_values('0', 0, 0)
它不是即时的,但是如果您需要更精确的,您可以在
range()
中增加一个值,在
time.sleep()中减少一个值