Forum: PC-Programmierung Pi Python if Anweisung


von Jan V. (cameljoe)


Lesenswert?

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()

: Verschoben durch Moderator
von Rene K. (xdraconix)


Lesenswert?

Falsches Sub-Forum... bitte in µC & Elektronic oder PC-Programmierung.

Hier geht es um fertigen Code den man anderen zur Verfügung stellen mag 
:-) Viel Glück das du dein Problem lösen kannst.

von Martin O. (ossi-2)


Lesenswert?

Wo initialisierst Du Pin 36 ?
zwischen die beiden Zeilen:
  GPIO.output(36, True)
  GPIO.output(36, False)
würd ich ne Verzögerungszeit einbauen, ansonsten wird der Puls evtl. 
sehr kurz.

von Jan V. (cameljoe)


Lesenswert?

Initialisiert wird oben.
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)

meinst du so warten?
1
time.sleep(500)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.