Ich bin nun kein Programmiergott, die Hardware mag ich lieber xD
Der folgende Code soll einen RFID Tag lesen und dann in eine DB
schreiben, das macht er auch.
Nun soll es aber auch Pin36 beim schreiben in die DB kurz aktivieren.
Zur Kontrolle gebe ich sql nochmal in der Konsole aus, direkt darunter
sind die Anweisungen für den Pin36. Der Pin36 aktiviert über einen
ATMega einen Buzzer.
Nun dudelt der Buzzer die ganze Zeit vor sich hin, was er nicht sollte.
Wo ist der Fehler? ^^
1 | #!/usr/bin/python
|
2 |
|
3 | import RPi.GPIO as GPIO
|
4 | import MFRC522
|
5 | import signal
|
6 | import MySQLdb
|
7 | import time
|
8 |
|
9 | GPIO.setmode(GPIO.BOARD)
|
10 | GPIO.setup(36, GPIO.OUT)
|
11 |
|
12 | continue_reading = True
|
13 |
|
14 | # Capture SIGINT for cleanup when the script is aborted
|
15 | def end_read(signal,frame):
|
16 | global continue_reading
|
17 | print "Ctrl+C captured, ending read."
|
18 | continue_reading = False
|
19 | GPIO.cleanup()
|
20 |
|
21 | # Hook the SIGINT
|
22 | signal.signal(signal.SIGINT, end_read)
|
23 |
|
24 | # Create an object of the class MFRC522
|
25 | RFIDReader = MFRC522.MFRC522()
|
26 |
|
27 | # This loop keeps checking for chips. If one is near it will get the UID and write it to DB
|
28 | while continue_reading:
|
29 |
|
30 | # Scan for cards
|
31 | (status,TagType) = RFIDReader.MFRC522_Request(RFIDReader.PICC_REQIDL)
|
32 |
|
33 | # If a card is found
|
34 | if status == RFIDReader.MI_OK:
|
35 |
|
36 | # Get the UID of the card
|
37 | (status,uid) = RFIDReader.MFRC522_Anticoll()
|
38 |
|
39 | # If we have the UID, continue
|
40 | if status == RFIDReader.MI_OK:
|
41 |
|
42 | # Parse UID
|
43 | fuid = str(uid)
|
44 | fuid = fuid.strip('[' + ']')
|
45 | fuid = fuid.replace(',', '')
|
46 | fuid = fuid.replace(' ', '')
|
47 |
|
48 | # Open database connection
|
49 | db = MySQLdb.connect("ip","user","passwort","db" )
|
50 |
|
51 | # prepare a cursor object using cursor() method
|
52 | cursor = db.cursor()
|
53 |
|
54 | # Prepare SQL query to INSERT a record into the database.
|
55 | sql = "INSERT INTO time_data(token, status) VALUES ('%s', '%s' )" % (fuid, "l_in")
|
56 | print sql
|
57 | GPIO.output(36, True)
|
58 | GPIO.output(36, False)
|
59 | try:
|
60 | # Execute the SQL command
|
61 | cursor.execute(sql)
|
62 | # Commit changes in the database
|
63 | db.commit()
|
64 | except:
|
65 | # Rollback in case there is any error
|
66 | db.rollback()
|
67 |
|
68 | # disconnect from server
|
69 | db.close()
|