python-3.x - 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 表现得像我想要的那样,如果可能的话,请提供解决方案。
谢谢!
解决方案
我已经使用不同的代码解决了这个问题
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()
我仍然很想知道为什么以前的代码不起作用。反正问题暂时解决了!
谢谢
推荐阅读
- google-maps-api-3 - 离线可视化 PowerBI 地图上的经纬度 GPS 点?
- javascript - Stretch to fit the entire screen without keeping aspect ratio and without scrollbars
- python - 'TypeError: 'datetime.datetime' object is not iterable' 尝试将日期列表与单个日期进行比较时
- python - 如何让弹跳球环绕 x 轴
- c# - 在控制台应用程序中重用我的 ASP.NET Core MVC 应用程序中的代码:如何进行数据库连接
- augmented-reality - A-FRAME:如何显示 SVG 动画
- c# - 实体框架 DbContext 过滤的计数查询使用变量非常慢
- python-3.x - 射线标准输出到哪里去了?
- android - 协程、异步 DiffUtil 和不一致检测错误
- java - 为什么 inc/dec 通道不做任何事情?