2017-04-19 13 views
-1

私は自分のRaspberry Piで実行するプログラムを書いています。このpesty構文エラーを過ぎているようには見えません。ここに私のコードは次のとおりです。Pythonの 'except'構文エラー

import RPi.GPIO as GPIO, time 

GPIO.setmode(GPIO.BCM) 

GPIO.setup(14,GPIO.OUT) 

GPIO.output(14,GPIO.HIGH) 

def RCtime (PiPin): 
    measurement = 0 
    # Discharge capacitor 
    GPIO.setup(PiPin, GPIO.OUT) 
    GPIO.output(PiPin, GPIO.LOW) 
    time.sleep(0.1) 

    GPIO.setup(PiPin, GPIO.IN) 
    # Count loops until voltage across 
    # capacitor reads high on GPIO 
    while (GPIO.input(PiPin) == GPIO.LOW): 
    measurement += 1 

    return measurement 

# Main program loop 
while True: 
    print RCtime(4) # Measure timing using GPIO4 

except KeyboardInterrupt: 
    GPIO.cleanup() 

は、次のエラーを返します:

File "measure.py", line 28 
    except KeyboardInterrupt: 
     ^
SyntaxError: invalid syntax 

私は問題を見つけるように見えることはできません。誰も助けることができますか?

+3

あなたは 'try-except'ステートメントと一致する' try'部分を持っていません。 – DyZ

+0

try-exceptは同じエラーを返します。 @DYZ –

+1

コードを更新してから、新しいエラーメッセージを追加してください。あなたが今まで私たちに示したことは間違いなく間違いです。 – DyZ

答えて

0

あなたはtryブロックにあなたの関数を置く必要があります。

# Main program loop 
try: 
    while True: 
     print RCtime(4) # Measure timing using GPIO4 
except KeyboardInterrupt: 
    GPIO.cleanup() 

私はこれが動作すると思います。

0

この用語はtry ... except文と呼ばれるため、tryというキーワードが必要です。エラーを処理したい行を除いてtry ...をラップします。注意:あなたは、できるだけ少ないとしてラップする必要があります。

while True: 
    try: 
    print RCtime(4) # Measure timing using GPIO4 
    except KeyboardInterrupt: 
    break # break the while loop 
    finally: 
    GPIO.cleanup() # GPIO clean up 

編集:提案されているように、GPIOのクリーンアップは例外があります場合は、finally節内のクリーンアップ操作を置くべきかかわらず走ったしなければなりません。

+0

通常、例外を捕捉する範囲内にできるだけ少なくしたいと思いますが、この場合は**常に**クリーンアップを実行します。このようにプログラム全体をラップすることは悪い考えではありません。 – Shadow

+0

うーん、私はそれほどGPIOに慣れていないと思います... – abccd