2014-03-10 3 views
-4

я USB RFID считыватель подключены к Raspberry Pi читатель RFID является китайским брендом он действует как клавиатуры и прочитать первые 10 цифрUSB RFID считыватель + малина пи

так, что я пытаюсь сделать здесь считан с карты и сравнение с записанным номером в моем коде

#!/usr/bin/env python 
import time 
import sys 

card = '0019171125'  # Stored good card number consider using a list or a file. 
def main():    # define a main function. 
while True:    # loop until the program encounters an error. 
sys.stdin = open('/dev/tty0', 'r') 
RFID_input = input()    
if RFID_input == card:  # coppare the stored number to the input and if True execute code. 
    print "Access Granted" 
    print "Read code from RFID reader:{0}".format(RFID_input) 
else:     # and if the condition is false excecute this code. 
    print "Access Denied" 
    tty.close() 
main()      # call the main function. 

, но эта ошибка держать показывая

RFID_input = input()
^ IndentationError: unindent does not match any outer indentation level

любого предложение

+1

Вы не отступа код правильно. Весь код под 'main()' должен быть отступом, а в цикле 'while' также требуется отступ. – jayelm

+2

Я думаю, вы должны действительно прочитать учебник по python, прежде чем продолжить свой проект. – RedX

ответ

6

Питон отступы чувствительны к регистру, так что вам нужно сделать отступ код правильно:

#!/usr/bin/env python 
import time 
import sys 

card = '0019171125' 
def main(): 
    while True: 
     sys.stdin = open('/dev/tty0', 'r') 
     RFID_input = input() 
     if RFID_input == card: 
      print "Access Granted" 
      print "Read code from RFID reader:{0}".format(RFID_input) 
     else: 
      print "Access Denied" 
      tty.close() 
main() 

Обратите внимание, что tty.close() вызовет ошибку, потому что нет tty определена. Вы, вероятно, захотите закрыть там sys.stdin, хотя определенно не рекомендуется использовать sys.stdin для другого потока, когда вы могли бы напрямую читать этот поток.

Кроме того, не используйте input() для ввода пользователем, используйте raw_input.


def main(): 
    with open('/dev/tty0', 'r') as tty: 
     while True: 
      RFID_input = tty.readline() 
      if RFID_input == card: 
       print "Access Granted" 
       print "Read code from RFID reader:{0}".format(RFID_input) 
      else: 
       print "Access Denied" 
+0

он работает, но он дает «Доступ запрещен» каждый раз. Несмотря на то, что номер карты правильный – user3403710

+0

Ваш RFID-считыватель, скорее всего, добавляет символ новой строки в конец идентификатора, считываемого из тега, поэтому вам придется полосать этот символ новой строки перед по сравнению с разрешенным идентификатором. Вы можете сделать это с помощью rstrip(): 'RFID_input = tty.readline(). Rstrip()' –

0

При правильном отступа:

#!/usr/bin/env python 
import time 
import sys 

card = '0019171125'  # Stored good card number consider using a list or a file. 

def main():    # define a main function. 
    while True:   # loop until the program encounters an error. 
     sys.stdin = open('/dev/tty0', 'r') 
     RFID_input = input()    
     if RFID_input == card:  # compare the stored number to the input and if True execute code. 
      print "Access Granted" 
      print "Read code from RFID reader:{0}".format(RFID_input) 
     else:     # and if the condition is false excecute this code. 
      print "Access Denied" 

# where is tty defined?? 
      tty.close() 

if __name__ == '__main__': 
    main() 

Но все-таки у вас нет терминал определен ...

+0

Я новая программа, и этот китайский читатель rfid работает как клавиатура, но он не в RPI, кроме этого, который я нашел в эта ссылка [ссылка] (http://goo.gl/M7VMcY) Так что я пытаюсь сделать, это окружить его, если заявление для проверки авторизованной карты и сделать что-то Изображения считывателя RFID в эта ссылка [link] (http://goo.gl/LxF2ay) – user3403710

+0

и я понятия не имею, как определить tty – user3403710

Смежные вопросы