python IndentationError

时间:2016-08-06 19:50:25

标签: python raspberry-pi raspberry-pi2 rfid

我正在做一个Raspberry Pi项目,机器人会在它关闭时检测到并贴上RFID标签。但我似乎有一些错误。这是我的代码:

 import time     
 import MFRC522      
 import signal     
 import socket     
 import RPi.GPIO as GPIO    
 from subprocess import call    

 #RFID   
 MIFAREReader = MFRC522.MFRC522()   

 cardA = [6, 100, 18, 73,57]     
 cardB = [242, 231, 88, 100, 41]   
 cardC = [54, 6, 9, 73, 112]   

 def end_read(signal, frame):    
          global continue_reading     
          continue_reading = False    
          print "Ctrl +C captured, ending read."   
          MIFAREReader.GPIO_CLEEN()   

  signal.signal(signal.SIGINT, end_read) 
 GPIO.setmode(GPIO.BCM)   

 GPIO_TRIGGER = 18   
 GPIO_ECHO = 23   

 MLEFT = 4   
 MRIGHT = 25   
 e1 = 17   
 e2 = 10 

 GPIO.setwarnings(False)   
 GPIO.setup(GPIO_TRIGGER, GPIO.OUT)   
 GPIO.setup(GPIO_ECHO,GPIO.IN)   

 GPIO.output(GPIO_TRIGGER, False)   

 time.sleep(0.5) 

 def sonar(n):   
          GPIO.output(GPIO_TRIGGER,True)   
          time.sleep(0.00001)   
          GPIO.output(GPIO_TRIGGER, False) 

          start = time.time()   

          while GPIO.input(GPIO_ECHO)==0: 
               start = time.time() 

          while GPIO.input(GPIO_ECHO)==1:   
               stop = time.time()   

          elapsed = stop - start  

          distance = elapsed * 34000   

          distance = distance / 2   

          return distance  

 GPIO.setup(MLEFT, GPIO.OUT)   
 GPIO.setwarnings(False)   
 GPIO.setup(MRIGHT, GPIO.OUT)   
 GPIO.setwarnings(False)   
 GPIO.setup(e1, GPIO.OUT)   
 GPIO.setwarnings(False)   
 GPIO.setup(e2, GPIO.OUT)   
 GPIO.setwarnings(False)  
 time(1)   

 while True:   
          continue_reading = True   
          time.sleep(0.3)   
          distance = sonar(0)   
          print distance   
          if(12.9<distance<16.9)   
          GPIO.output(e1, 0)   
          GPIO.output(e2, 0)   
          while continue_reading:
          print "read"    
          (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)   

我得到了这个输出:

print "read"  
    ^
IndentationError: expected an indented block  

如何解决这个问题? 有什么建议?我无法找到标识错误的位置?

1 个答案:

答案 0 :(得分:1)

首先,您应该将每个级别缩进四个空格,例如,请参阅here

其次,您必须在每个 ifwhilefor之后缩进一个级别。我的猜测是您的上一个代码块应该看起来像:

while True:
    continue_reading = True
    time.sleep(0.3)
    distance = sonar(0)
    print distance
    if(12.9<distance<16.9)
        GPIO.output(e1, 0)
        GPIO.output(e2, 0)
    while continue_reading:
        print "read" 

但很难说出你的确切意图。