【问题标题】:How to run a python script with Raspberry Pi until we stop it manually如何使用 Raspberry Pi 运行 python 脚本,直到我们手动停止它
【发布时间】:2017-03-22 02:11:55
【问题描述】:

目前我正在使用 Raspberry Pi 和 Arduino。对于 Arduino 在某些情况下,如果我们开始运行脚本,那么它将一直运行,直到我们手动停止它们。

我想知道在将 Raspberry Pi 与 Python 一起使用时,是否有办法对 Raspberry Pi 做同样的事情。对于树莓派,当我使用时,

  sudo python myprogramme.py 

它只运行一次我的代码,然后就停止了。有没有办法我们可以用命令行多次运行相同的代码,直到我们手动停止它们(例如,在 MATLAB 中,我们必须使用 crtl+z 来停止正在运行的脚本)? (使用循环可能是可能的,但我想知道我们是否可以在不使用循环的情况下做到这一点。)希望我的查询有意义。 我这样做的目的是将传感器的连续信息发送到我的系统。

【问题讨论】:

  • 可能在 Arduino 内部,有一个循环。你可以在你的 Python 代码中包含一个简单的 while true 循环,它可以吐出一个 PID,你可以根据它来执行 kill。
  • @ToonZ (github.com/ControlEverythingCommunity/BMP280/blob/master/Python/…) 这是我目前使用的代码。在这种情况下,不知道在哪里放置 while True 语句。

标签: python linux ubuntu automation raspberry-pi


【解决方案1】:

根据您的 cmets ...当您按 CTRL+C 时,脚本会获得键盘中断,您可以正常关闭。

您的代码:

import smbus
import time

while True:
    try:
        # Get I2C bus
        bus = smbus.SMBus(1)

        # BMP280 address, 0x76(118)
        # Read data back from 0x88(136), 24 bytes
        b1 = bus.read_i2c_block_data(0x76, 0x88, 24)
        # ... and the rest of your code. 
        # add a short sleep here at the end...
        sleep(0.1)
    except KeyboardInterrupt:
    # quit
        sys.exit()

【讨论】:

  • 有没有办法在 python 的输出之间使用空格? (通过使用换行符之类的东西)。
  • 打印已经放了一个换行符。如果你想在使用 os.linesep 之间插入。如果您想在总线上的输出之间放置一个空格,请将其发送到您的总线上。
【解决方案2】:

你可以把你的代码放在一个while语句中

while True
    <your logic here>

这将永远运行,直到您按 ctrl-C

你也可以这样做

my_bool = True
while my_bool
    <your logic here>
    my_bool = <check for input>

【讨论】:

  • (github.com/ControlEverythingCommunity/BMP280/blob/master/Python/…) 这是我目前使用的代码。在这种情况下,不知道在哪里放置 while True 语句。
  • 最省力的解决方案是将其放在导入之后并缩进后面的所有内容。
  • 有没有办法在 python 的输出之间使用空格? (通过使用换行符之类的东西)。
猜你喜欢
  • 2021-05-03
  • 2015-05-26
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多