-         

Ergebnis 1 bis 1 von 1

Thema: RFID Modul

  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9

    RFID Modul

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Heyho,

    ich habe mir am Wochenende dieses RFID Modul bestellt:

    http://www.watterott.com/de/Electron...ID-Card-Reader

    Die ersten Tests sind auch erfolgreich gewesen.
    Ich verwende das UART-Protokoll des Moduls und lese es über ein Python Programm aus:

    Code:
    import serial
    import sys
    import time
    import string
    from operator import xor
    
    
    # UART
    ID= ""
    Zeichen = 0
    
    
    Checksumme = 0
    Tag = 0 
    
    
    # Flags
    Startflag = "\x02"
    Endflag = "\x03"
    
    
    # User ID
    User = ""
    Daniel = "03003C00B08F"
    
    
    # UART oeffnen
    UART = serial.Serial("/dev/ttyAMA0", 9600)
    UART.open()
    
    
    while True:
    
    
        # Variablen loeschen
        Checksumme = 0
        Checksumme_Tag = 0
        ID = ""
        
        # Zeichen einlesen
        Zeichen = UART.read() 
    
    
        # Uebertragungsstart signalisiert worden?
        if Zeichen == Startflag:
    
    
            # ID zusammen setzen 
            for Counter in range(13):
            
                Zeichen = UART.read() 
                ID = ID + str(Zeichen)
                
            # Endflag aus dem String loeschen
            ID = ID.replace(Endflag, "" );
            
            # Checksumme berechnen
            for I in range(0, 9, 2):
                Checksumme = Checksumme ^ (((int(ID[I], 16)) << 4) + int(ID[I+1], 16))
            Checksumme = hex(Checksumme)
            
            # Tag herausfiltern
            Tag = ((int(ID[1], 16)) << 8) + ((int(ID[2], 16)) << 4) + ((int(ID[3], 16)) << 0)
            Tag = hex(Tag)
            
            # User herausfinden
            if ID in Daniel:
                User = "Daniel"
            else:
                User = "Unbekannt"
    
    
            # Ausgabe der Daten
            print "------------------------------------------"
            print "Datensatz: ", ID
            print "Tag: ", Tag
            print "ID: ", ID[4:10]
            print "Checksumme: ", Checksumme
            print "------------------------------------------"
            print "User: ", User
    Eine Ausgabe sieht dann so aus:



    - - - Aktualisiert - - -

    So hab das Programm noch mal erweitert.
    Unter /home/pi/Desktop/Sicherheit gibt es nun eine Datei "ID.txt" wo User-IDs mit Namen aufgeführt sind.
    Dies sieht so aus:

    Daniel:3C00B0
    Hans:27B7C1

    Das aktuelle Python Programm öffnet diese Datei, ließt sie aus und speichert die Einträge in einem Dictionary.
    Sobald eine Karte ausgelesen wurde durchsucht das Programm dieses Dictionary nach der ID der Karte und gibt anschließend den User aus.
    Das klappt schon wunderbar. Ich habe zwei Karten, denen ich den User "Hans" und "Daniel" zugewiesen habe.
    Das Programm erkennt die beiden Benutzer und bei einem dritten Tag meldet es "Unbekannt".

    Code:
    import serial
    import sys
    import time
    from operator import xor
    
    
    # UART
    Datensatz = ""
    Zeichen = 0
    
    
    # Flags
    Startflag = "\x02"
    Endflag = "\x03"
    
    
    # User ID
    ID = 0
    Tag = 0
    User = ""
    Liste = {}
    Checksumme = 0
    
    
    # UART oeffnen
    UART = serial.Serial("/dev/ttyAMA0", 9600)
    UART.open()
    
    
    # Datei oeffnen
    Temp = open("/home/pi/Desktop/Sicherheit/ID.txt", "r")
    
    
    # Datei zeilenweise auslesen
    for Zeile in Temp: 
    
    
    	# CR aus der Textzeile entfernen
    	Zeile = Zeile.replace("\n", "")
    	
    	# LF aus der Textzeile entfernen
    	Zeile = Zeile.replace("\r", "")
    	
    	# Textzeile aufteilen
    	Zeile = Zeile.split(":")
    	
    	# ID aus der Datei in eine Zahl umwandeln
    	Zeile[1] = int(Zeile[1])
    	
    	# Daten zu der Liste hinzufuegen
    	Liste[Zeile[1]] = Zeile[0]
    
    
    while True:
    
    
    	# Variablen loeschen
    	Checksumme = 0
    	Checksumme_Tag = 0
    	Datensatz = ""
    	
    	# Zeichen einlesen
    	Zeichen = UART.read() 
    
    
    	# Uebertragungsstart signalisiert worden?
    	if Zeichen == Startflag:
    
    
    		# ID zusammen setzen 
    		for Counter in range(13):
    		
    			Zeichen = UART.read() 
    			Datensatz = Datensatz + str(Zeichen)
    			
    		# Endflag aus dem String loeschen
    		Datensatz = Datensatz.replace(Endflag, "" );
    		
    		# Checksumme berechnen
    		for I in range(0, 9, 2):
    			Checksumme = Checksumme ^ (((int(Datensatz[I], 16)) << 4) + int(Datensatz[I+1], 16))
    		Checksumme = hex(Checksumme)
    		
    		# Tag herausfiltern
    		Tag = ((int(Datensatz[1], 16)) << 8) + ((int(Datensatz[2], 16)) << 4) + ((int(Datensatz[3], 16)) << 0)
    		Tag = hex(Tag)
    		
    		# ID herausfiltern und zum Suchen in einen Int umwandeln
    		ID = Datensatz[4:10]
    		ID = int(ID, 16)
    		
    		# User herausfinden
    		User = Liste.get(ID, "Unbekannt")
    
    
    	# Ausgabe der Daten
    	print "------------------------------------------"
    	print "Datensatz: ", Datensatz
    	print "Tag: ", Tag
    	print "ID: ", ID
    	print "User: ", User
    	print "Checksumme: ", Checksumme
    	print "------------------------------------------"
    	
    Temp.close()
    Geändert von Kampi (27.02.2013 um 17:55 Uhr) Grund: Änderungen am Code. Grund: Es gab Probleme mit der Groß und Kleinschreibung in der Textdatei.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

Ähnliche Themen

  1. rf-Modul und IR Modul an C-Control
    Von redbull im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 3
    Letzter Beitrag: 04.12.2008, 15:58
  2. Erfahrungsbericht - Pollin RFID Modul
    Von BastelWastel im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 28.10.2008, 20:46
  3. RFID an Atmega
    Von smookie im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 15.08.2006, 23:27
  4. [ERLEDIGT] RFID
    Von 23Dennis... im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 04.01.2005, 18:37
  5. RFID - HILFEE!!!
    Von Moni - gast im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 20.10.2004, 10:18

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •