У меня есть малиновый pi, который я использую для контроля ввода из портов GPIO, для этого мне нужно запустить бесконечный цикл.Выполнять команду только один раз внутри бесконечного цикла
Когда я получаю LOW
на моем входе, я хочу выполнить системную команду usint subprocess.call
. Проблема в том, что он выполняет эту команду до тех пор, пока вход принимает LOW
. Я попробовал это, чтобы он выполнялся только один раз, но я не могу заставить его работать.
while 1:
if (GPIO.input(11) != GPIO.HIGH):
puerta_abierta = 1
if(puerta_abierta == 1):
call(["mpg123", "file.mp3"])
puerta_abierta = 0
else:
puerta_abierta = 0
Это решение будет вызывать mpg123 каждый раз, когда вход идет HIGH, а затем LOW снова, потому что он сбрасывает puerta_abierta. Не уверен, что это хорошо или плохо, потому что, как работает исходный код, но нарушает запрос плакатов о том, что mpg123 вызывается только один раз. – tdelaney
Да, это так. Когда я написал код, я знал это. И я думаю, что это то, чего хочет искатель. – Sheng
Мне нравится (и одобряю) ваш ответ, но хотелось бросить в качестве предостережения для оригинального плаката, если это не было очевидно. – tdelaney