Я создаю учебник для учеников старших классов.
Использование Node-RED У меня есть Raspberry Pi, который запускает скрипт, написанный на python.Я пытаюсь завершить скрипт Python из node-RED, передавая KeyInterrupt (CTRL + C), чтобы скрипт завершился корректно и очистился GPIO для следующего запуска.
Я могу запустить скрипт простохорошо, используя блок EXEC в node-RED и передавая "sudo python Documents / python / blinker.py" в терминал.Проблема в том, что я не работаю напрямую в терминале, я не могу просто использовать CTRL + C для выхода из цикла while.Есть ли способ передать CTRL + C на терминал от узла-RED?
Я прикрепил код Python для тех, кто заинтересован:
import RPi.GPIO as GPIO
import time
pwmPin = 18
ledPin = 23
butPin = 17
dc = 95
GPIO.setmode(GPIO.BCM)
GPIO.setup(ledPin, GPIO.OUT)
GPIO.setup(pwmPin, GPIO.OUT)
pwm = GPIO.PWM(pwmPin, 50)
GPIO.setup(butPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.output(ledPin, GPIO.LOW)
pwm.start(dc)
print("Press CTRL+C to exit")
try:
while 1:
if GPIO.input(butPin):
pwm.ChangeDutyCycle(dc)
GPIO.output(ledPin, GPIO.LOW)
else:
pwm.ChangeDutyCycle(100-dc)
GPIO.output(ledPin, GPIO.HIGH)
time.sleep(0.075)
GPIO.output(ledPin, GPIO.LOW)
time.sleep(0.075)
except keyboardInterrupt:
pwm.stop()
GPIO.cleanup()
Я пытался использовать kill и killallкоманды, и это завершает приложение, но GPIO.cleanup () тогда не запускается, и все выходы, которые были включены, останутся включенными.
Я также попытался передать «echo $ '\ cc' | ./blinker.py ", но получите сообщение об ошибке.
/bin/sh: 1: Documents/python/blinker.py: Permission denied echo: write error: Broken pipe
Любая помощь приветствуется