首页 > 解决方案 > Python over SSH - 事件检测不起作用

问题描述

我在 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 命令行运行脚本时,它工作正常,即按下开关时电机停止。

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

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

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

谁能给我一个想法,为什么脚本没有通过 SSH 表现得像我想要的那样,如果可能的话,请提供解决方案。

谢谢!

标签: python-3.xsshraspberry-pi

解决方案


我已经使用不同的代码解决了这个问题

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() 

我仍然很想知道为什么以前的代码不起作用。反正问题暂时解决了!

谢谢


推荐阅读