Visualizzazione post con etichetta PySqlite. Mostra tutti i post
Visualizzazione post con etichetta PySqlite. Mostra tutti i post

martedì 2 luglio 2013

Parallax Rfid Card Reader 28340

Per fare qualche esperimento con gli RFid mi sono comprato  Parallax Rfid Card Reader
In realta' pensavo di ordinare la versione seriale da accoppiare ad Arduino (codice 28140) ma in realta' ho acquistato la versione USB (28340) per cui la uso con Raspberry

Il lettore legge il formato di Rfid a 125KHz a sola lettura (EM-4100) ed i dati vengono inviati sulla seriale virtuale rappresentata dalla porta USB come 2400 8N1

Per Linux non e' necessario installare nessun driver, su Windows invece la periferica non viene riconosciuta al volo



come indicato dal manuale, in caso di corretta lettura viene inviata una stringa di 12 caratteri in cui il codice
Rfid (composta da 10 caratteri numerici) e' compreso dal secondo all'undicesimo carattere

Stranamente alla prima lettura viene sempre restituita una stringa di 2 caratteri... dopo di cio' il lettura funziona in modo corretto ed e' anche sufficientemente veloce
---------------------------------------------------------------
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sqlite3 as lite
import sys
import serial

ser = serial.Serial('/dev/ttyUSB0', 2400)
con = lite.connect('birra.db')


with con:
 cur = con.cursor()    
 cur.execute("DROP TABLE IF EXISTS birra")
 cur.execute("CREATE TABLE birra(Rfid TEXT, Gratis INT)")
 cur.execute("INSERT INTO birra VALUES('1100560289',1)")

while (1):
 id = ser.readline()
 if len(id) == 12:
r = id[:10]
print "Id = ",id
cur.execute("SELECT * FROM birra WHERE Rfid='"+r+"'")
  while True:
  row = cur.fetchone()

    if row == None:
    break

   
  if row[1] == 1: 
    print "Birra gratis" 
cur.execute("UPDATE birra SET Gratis=0 WHERE Rfid='"+r+"'")
  else:
    print "Birra da pagare"


lunedì 1 luglio 2013

SQlite in Python

Un esempio su come usare Sqlite in Python

Per installare le librerie di Sqlite si digita

apt-get install python-sqlite

--------------------------------------------------------
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sqlite3 as lite
import sys

con = lite.connect('birra.db')

with con:
    
cur = con.cursor()    
cur.execute("DROP TABLE IF EXISTS birra")
cur.execute("CREATE TABLE birra(Rifd TEXT, Gratis INT)")
cur.execute("INSERT INTO birra VALUES('12345',1)")
cur.execute("SELECT * FROM birra")
while True:
row = cur.fetchone()

if row == None:
break

print row[0], row[1]
if row[1] == 1: 
print "Birra gratis"
else:
print "Birra da pagare"

cur.execute("UPDATE birra SET Gratis=0 WHERE Rifd='12345'")
cur.execute("SELECT * FROM birra")
while True:
row = cur.fetchone()

if row == None:
break

print row[0], row[1]
if row[1] == 1: 
print "Birra gratis"
else:
print "Birra da pagare"

Geologi

  E so anche espatriare senza praticamente toccare strada asfaltata