【问题标题】:booting to py script and then ending启动到 py 脚本然后结束
【发布时间】:2019-02-07 14:14:38
【问题描述】:

我已使用此"instructable" method 在启动时运行我的脚本,该脚本运行良好,但我无法在 Pi 运行时结束程序。我只是在 Raspbian 中使用 GUI。

我按照描述尝试了 pygame 模块,但没有任何反应。

我认为应该出现一个 shell,我可以在其中看到已执行的程序,如果需要,ctrl+c 可以结束。

我没有结束条件。也许有人会建议一种方法? 脚本是:

import RPi.GPIO as IO
import time
import random

IO.setwarnings(False)
IO.setmode(IO.BCM)
IO.setup(26, IO.OUT)
IO.setup(16, IO.OUT)
IO.setup(13, IO.OUT)
IO.setup(27, IO.OUT)
IO.setup(18, IO.OUT)
IO.setup(17, IO.OUT)
IO.setup(4, IO.IN)

def pattern1():
    (IO.output(26, True), IO.output(16, True), IO.output(27, True), IO.output(18, True), IO.output(13, False), IO.output(17, False), time.sleep(0.75), IO.output(16, True), IO.output(13, True), IO.output(18, True), IO.output(17, True), IO.output(26, False), IO.output(27, False), time.sleep(0.75), IO.output(13, True), IO.output(27, True), IO.output(17, True), IO.output(26, True), IO.output(16, False), IO.output(18, False), time.sleep(0.75))
def pattern2():
    (IO.output(26, True), IO.output(16, True), IO.output(27, True), IO.output(18, True), IO.output(13, True), IO.output(17, True), time.sleep(0.5))
def pattern_off():
    (IO.output(26, False), IO.output(16, False), IO.output(13, False), IO.output(27, False), IO.output(18, False), IO.output(17, False))
def pattern_flasher_x_3():
    (pattern_off(), time.sleep(0.5), pattern2(), time.sleep(0.5), pattern_off(), time.sleep(0.5), pattern2(), time.sleep(0.5), pattern_off(), time.sleep(0.5), pattern2(), time.sleep(0.5))

try:
    while True:
        if IO.input(4)==1:
            for i in range(50):
                pattern1()
            for i in range(1):
                pattern_flasher_x_3()
            else:
                pattern_off()
    while False:
        pattern_off()


finally:
    IO.cleanup()

【问题讨论】:

  • 你是如何启动 Pi 的?它是使用 gui 加载 Raspian,从终端开始还是运行“无头”,以便您通过 ssh 访问它?
  • 你的脚本是什么?停止条件是什么?您需要告诉我们更多信息。
  • 没有停止条件。在启动后使用 launcher.sh 运行之前,我只需 cntrl+c 即可结束它。

标签: python kill boot


【解决方案1】:

我环顾四周,发现有一个辅助输入来触发“退出”是可行的。 在 while True 和 while False 部分我添加了:

if IO.input(25) == True:
    quit()

【讨论】:

    【解决方案2】:

    当我在 Linux 上启动时运行脚本并想要停止它们时,答案是在终端中使用命令 top 来查找进程,然后使用 sudo kill [processnumber] 停止它。障碍是找到你的过程。它很可能被命名为 Python。与任何涉及 sudo 的命令一样,要非常小心 - 不建议杀死随机进程;-)。

    我还建议安装 htop,因为界面更漂亮。

    如果可以管理,添加退出触发器似乎是一个更好的解决方案

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      • 2022-10-18
      • 2020-08-29
      相关资源
      最近更新 更多