我正在做一个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
如何解决这个问题? 有什么建议?我无法找到标识错误的位置?
答案 0 :(得分:1)
首先,您应该将每个级别缩进四个空格,例如,请参阅here。
其次,您必须在每个 if
,while
,for
之后缩进一个级别。我的猜测是您的上一个代码块应该看起来像:
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"
但很难说出你的确切意图。