Я программирую устройство ПЛК (Moxa ioLogik E1214) и подключил порты DI к кнопкам, а катушки подключены к светодиодным индикаторам. Идея заключается в том, что при нажатии кнопки светодиод должен загореться.
Я заставил программу работать, если вы удерживаете кнопку, пока не будет выполнена функция чтения ввода. Проблема в том, что я хотел бы установить временной интервал (X секунд), и если кнопка нажата (и не удерживается) в течение этого периода, индикатор должен переключаться.
Код ниже:
import time
import logging
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)
from pprint import pprint
from pymodbus.client.sync import ModbusTcpClient as ModbusClient
moxaA = ModbusClient('XX.XX.XX.XX', port=502)
print "Press a button now"
time.sleep(2)
result = moxaA.read_input_registers(0x30, 1)
if result:
pressedBtn = result.registers[0]
if pressedBtn == 1:
moxaA.write_coil(0, 1)
else:
moxaA.write_coil(0, 0)
Как видите, я установил таймаут для чтения входных регистров. Но как я могу «прослушать» изменение входа в течение этих секунд, и не нужно удерживать кнопку нажатой, пока не будет выполнена функция чтения входных регистров?
Заранее спасибо