2016-11-08 20 views
0

現在、私は現時点でRaspberry PiとArduinoの両方で作業しています。 Arduinoの場合、スクリプトの実行を開始すると、手動で停止するまでスクリプトが実行されます。私たちが手動で停止するまで、Raspberry PiでPythonスクリプトを実行する方法

ラズベリーパイと一緒にPythonで使用する方法があるのだろうかと思います。ラズベリーパイのために、私が使用すると、それは私のコードを一度実行して停止します。

sudo python myprogramme.py 

手動で停止するまで、同じコードをコマンドラインで何度も実行できる方法はありますか(たとえば、MATLABでは、実行中のスクリプトを停止するためにcrtl + zを使用する必要があります)。 (ループを使用することで可能かもしれませんが、私たちがループを使用せずにできるかどうか疑問に思っています)。 私の主張は、センサーからシステムに連続した情報を送信することです。

+0

おそらくArduinoの内部で、ループがあります。 Pythonコードにシンプルで真のループを含めることができます。これは、killを実行できるPIDに基づいて実行されます。 – ToonZ

+0

@ToonZ(https://github.com/ControlEverythingCommunity/BMP280/blob/master/Python/BMP280.py)これは私が現時点で使用しているコードです。この場合、真のステートメントを置く場所はどこにありませんか。 – 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

あなたは、CTRL-C

を打つまで、これが永遠に実行するwhile文に

while True 
    <your logic here> 

をあなたのコードを置くことができ、代わりにあなたのコメントによると

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)これは私が現在使用しているコードです。この場合、真のステートメントを置く場所はどこにありませんか。 – John

+0

最小限の努力のソリューションは、インポート直後に配置し、後続のすべてをインデントすることです。 –

+0

pythonで出力間にスペースを使用する方法はありますか? (改行のようなものを使って)。 – John

関連する問題