SSH上的Python-事件检测不起作用

时间:2018-10-06 11:11:35

标签: python-3.x ssh raspberry-pi

我正在Pi上远程运行Python脚本来控制电机。这是脚本-

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False) 

GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) 

GPIO.setup(11,GPIO.OUT)
GPIO.setup(13,GPIO.OUT)
GPIO.setup(15,GPIO.OUT)

def button_callback(channel):
    print("Button was pushed!")
    GPIO.output(15,GPIO.LOW)  # assuming this is the connection to the enable pin on your motor controller board
    exit()

# Start motor
GPIO.output(11,GPIO.HIGH)
GPIO.output(13,GPIO.LOW)
GPIO.output(15,GPIO.HIGH)

GPIO.add_event_detect(10,GPIO.RISING,callback=button_callback) 

message = input("Press enter to quit\n\n") 

GPIO.cleanup()

当我从Pi命令行运行脚本时,它可以正常工作,即按下开关时电机停止。

但是,当从Linux计算机通过SSH命令运行时,按下开关时电机不会停止。

这是Shell脚本中包含的SSH命令-

#!/bin/bash
ssh pi@192.168.1.12 "sudo python /home/pi/motor.py"

任何人都可以给我一个想法,为什么我不希望通过SSH表现出脚本的行为,并在可能的情况下提供解决方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

我已经使用其他代码解决了这个问题

import RPi.GPIO as GPIO
import time
from time import sleep

GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False) 


GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) 

GPIO.setup(11,GPIO.OUT)
GPIO.setup(13,GPIO.OUT)
GPIO.setup(15,GPIO.OUT)


# Start motor
GPIO.output(11,GPIO.HIGH)
GPIO.output(13,GPIO.LOW)
GPIO.output(15,GPIO.HIGH)


while True:
    input_state = GPIO.input(10)
    if input_state == True:
        GPIO.output(15,GPIO.LOW)
        time.sleep(30)

message = input("Press enter to quit\n\n") 

GPIO.cleanup()

GPIO.cleanup() 

我仍然想知道为什么以前的代码不起作用。无论如何问题暂时解决了!

谢谢