2016-11-08 47 views
0

目前我正在使用Raspberry Pi和Arduino。對於某些情況下的Arduino,如果我們開始運行腳本,它將運行,直到我們手動停止它們。如何運行帶有Raspberry Pi的python腳本,直到我們手動停止它

我想知道在使用Python時是否還有一種方法可以與Raspberry Pi做同樣的事情。對於樹莓派,當我使用時,

sudo python myprogramme.py 

它運行我的代碼只是一次,然後停止。有沒有一種方法可以使用命令行多次運行相同的代碼,直到我們手動停止它們爲止(例如,在MATLAB中,我們必須使用crtl + z來停止正在運行的腳本)? (這可能是通過使用循環,但我想知道如果我們可以做到這一點,而不使用循環。)希望我的查詢是有道理的。 我的做法是將連續的信息從傳感器發送到我的系統。

+0

也許裏面的Arduino,有一個循環。你可以在你的Python代碼中包含一個簡單的while循環,它可以吐出一個你可以殺死的PID。 – ToonZ

+0

@ToonZ(https://github.com/ControlEverythingCommunity/BMP280/blob/master/Python/BMP280.py)這是我使用的時刻的代碼。在這種情況下,不要把線索置於True語句的位置。 – John

回答

0

根據您的意見。 ..當你按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() 
+0

非常感謝。最後它工作。 – John

+0

有沒有辦法在python中的輸出之間使用空格? (通過使用諸如換行符之類的東西)。 – John

+0

打印已經可以換行了。如果你想放在使用os.linesep之間。如果您想在總線上的輸出之間放置太空,請將其發送到您的巴士上。 –

0

你可以把你的代碼while語句

while True 
    <your logic here> 

這將永遠運行下去,直到你按下ctrl-C

或者你可以做

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

(https://github.com/ControlEverythingCommunity/BMP280/blob/master/Python/BMP280.py)這是我使用的時刻的代碼。在這種情況下,不要把線索置於True語句的位置。 – John

+0

最小的努力解決方案是將它放在導入之後並縮進後面的所有內容。 –

+0

有沒有辦法在python中的輸出之間使用空格? (通過使用諸如換行符之類的東西)。 – John

相關問題