Commit 0ebacc64 authored by matteo perini's avatar matteo perini

semplificato il codice

parent c6a7c16e
import time import time
import os import os
import RPi.GPIO as GPIO import RPi.GPIO as GPIO
#from mfrc522 import SimpleMFRC522
#import sqlite3
from termcolor import colored from termcolor import colored
from my_lib import registra_cliente, registra_prodotto, cerca_cliente_per_prodotto, scarica_prodotto, lista_clienti, cancella_cliente, lista_prodotti, cerca_cliente_per_tessera from my_lib import registra_cliente, registra_prodotto, cerca_cliente_per_prodotto, scarica_prodotto, lista_clienti, cancella_cliente, lista_prodotti, cerca_cliente_per_tessera
#from my_lib import NFC from gpiozero import LED
def mostra_menu(): def mostra_menu():
LED_ROSSO.on() #accendo il led rosso
os.system('cls' if os.name == 'nt' else 'clear') # questa riga serve per cancellare il terminale os.system('cls' if os.name == 'nt' else 'clear') # questa riga serve per cancellare il terminale
#print(chr(27) + "[2J")
#Qui sotto creiamo il menù #Qui sotto creiamo il menù
print(colored("\nSeleziona l'operazione da effettuare selezionando il numero del menù:\n","green", attrs=["bold"])) print(colored("\nSeleziona l'operazione da effettuare selezionando il numero del menù:\n","green", attrs=["bold"]))
print(colored(" [1] Registrazione nuovo cliente","cyan", attrs=["bold"])) print(colored(" [1] Registrazione nuovo cliente","cyan", attrs=["bold"]))
...@@ -37,6 +35,7 @@ def mostra_menu(): ...@@ -37,6 +35,7 @@ def mostra_menu():
input() input()
mostra_menu() mostra_menu()
elif int(n) == 3: elif int(n) == 3:
LED_ROSSO.off()
scarica_prodotto() scarica_prodotto()
input() input()
mostra_menu() mostra_menu()
...@@ -66,20 +65,16 @@ def mostra_menu(): ...@@ -66,20 +65,16 @@ def mostra_menu():
mostra_menu() mostra_menu()
else: else:
print("Numero selezionato non valido. Riprova!") #se il numero non è tra quelli previsti print("Numero selezionato non valido. Riprova!") #se il numero non è tra quelli previsti
input() #aspetto tre secondi input() #aspetto fino a che non premo invio
mostra_menu() #faccio ripartire la funzione del menù mostra_menu() #faccio ripartire la funzione del menù
else: else:
print("Scelta non corretta. Deve essere un numero. Riprova!") #se l'immissione non è un numero print("Scelta non corretta. Deve essere un numero. Riprova!") #se l'immissione non è un numero
input() #aspetto tre secondi input() #aspetto fino a che non premo invio
mostra_menu() #faccio ripartire la funzione del menù mostra_menu() #faccio ripartire la funzione del menù
if __name__=="__main__": #se sto chiamando il programma principale if __name__=="__main__": #se sto chiamando il programma principale
#GPIO.setmode(GPIO.BCM) LED_ROSSO = LED(13)
#GPIO.setup(25, GPIO.OUT)
#global nfc
#nfc = NFC()
#nfc.addBoard("rfid_cassa",25) #GPIO 25 -> pin 22
mostra_menu() # avvia la funzione per mostrare il menù mostra_menu() # avvia la funzione per mostrare il menù
\ No newline at end of file
...@@ -2,7 +2,7 @@ import RPi.GPIO as GPIO ...@@ -2,7 +2,7 @@ import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522 from mfrc522 import SimpleMFRC522
import sqlite3 import sqlite3
import time import time
from gpiozero import LED from gpiozero import LED, Servo
def leggi_rfid(testo,pin): def leggi_rfid(testo,pin):
if pin==5: if pin==5:
...@@ -28,6 +28,7 @@ def leggi_rfid(testo,pin): ...@@ -28,6 +28,7 @@ def leggi_rfid(testo,pin):
id,data = reader.read() id,data = reader.read()
time.sleep(0.2) time.sleep(0.2)
except: except:
print("Errore nella lettura del tag")
pass pass
finally: finally:
GPIO.cleanup() GPIO.cleanup()
...@@ -38,7 +39,7 @@ def cerca_cliente_per_prodotto(): ...@@ -38,7 +39,7 @@ def cerca_cliente_per_prodotto():
con = sqlite3.connect("mydb.db") con = sqlite3.connect("mydb.db")
cur = con.cursor() cur = con.cursor()
n,d = leggi_rfid("Ciao, avvicina il prodotto al ricevitore!",6) n,d = leggi_rfid("Ciao, avvicina il prodotto al ricevitore!",5)
database = cur.execute('SELECT n_cliente FROM prodotti WHERE n_rfid=?;',(n,)) database = cur.execute('SELECT n_cliente FROM prodotti WHERE n_rfid=?;',(n,))
yy = database.fetchall() yy = database.fetchall()
...@@ -54,7 +55,7 @@ def cerca_cliente_per_prodotto(): ...@@ -54,7 +55,7 @@ def cerca_cliente_per_prodotto():
def cerca_cliente_per_tessera(): def cerca_cliente_per_tessera():
con = sqlite3.connect("mydb.db") con = sqlite3.connect("mydb.db")
cur = con.cursor() cur = con.cursor()
n,data = leggi_rfid("Ciao, avvicina la tessera del cliente al ricevitore!",6) n,data = leggi_rfid("Ciao, avvicina la tessera del cliente al ricevitore!",5)
database = cur.execute('SELECT * FROM persone WHERE n_card=?;',(n,)) database = cur.execute('SELECT * FROM persone WHERE n_card=?;',(n,))
yy = database.fetchall() yy = database.fetchall()
if len(yy) > 0: if len(yy) > 0:
...@@ -68,7 +69,7 @@ def cerca_cliente_per_tessera(): ...@@ -68,7 +69,7 @@ def cerca_cliente_per_tessera():
return None return None
def registra_prodotto(): def registra_prodotto():
reader = SimpleMFRC522() #reader = SimpleMFRC522()
con = sqlite3.connect("mydb.db") con = sqlite3.connect("mydb.db")
cur = con.cursor() cur = con.cursor()
...@@ -80,8 +81,7 @@ def registra_prodotto(): ...@@ -80,8 +81,7 @@ def registra_prodotto():
codice_cliente = cerca_cliente_per_tessera() codice_cliente = cerca_cliente_per_tessera()
if codice_cliente != None: if codice_cliente != None:
time.sleep(2) time.sleep(2)
codice_prodotto, d = leggi_rfid("Ciao, avvicina il prodotto al ricevitore!",6) codice_prodotto, d = leggi_rfid("Ciao, avvicina il prodotto al ricevitore!",5)
try: try:
cur.execute("INSERT INTO prodotti(n_rfid, n_cliente) VALUES(?, ?)",(codice_prodotto,codice_cliente)) cur.execute("INSERT INTO prodotti(n_rfid, n_cliente) VALUES(?, ?)",(codice_prodotto,codice_cliente))
print("Il prodotto numero : ", codice_prodotto, " è stato attribuito al cliente : ", codice_cliente) print("Il prodotto numero : ", codice_prodotto, " è stato attribuito al cliente : ", codice_cliente)
...@@ -92,66 +92,50 @@ def registra_prodotto(): ...@@ -92,66 +92,50 @@ def registra_prodotto():
else: else:
print("Registra il cliente prima di riprovare.") print("Registra il cliente prima di riprovare.")
def scarica_prodotto(): def scarica_prodotto():
LED_GIALLO = LED(26)
LED_VERDE = LED(19)
LED_GIALLO.on()
LED_VERDE.off()
COPERCHIO = Servo(4)
con = sqlite3.connect("mydb.db") con = sqlite3.connect("mydb.db")
cur = con.cursor() cur = con.cursor()
codice_prodotto = leggi_rfid("Ciao, avvicina il prodotto al ricevitore!",5) codice_prodotto, d = leggi_rfid("Ciao, avvicina il prodotto al ricevitore!",5) # unico 5
try: try:
a= cur.execute("SELECT * FROM prodotti WHERE n_rfid=?;",(codice_prodotto,))
if len(a.fetchall())>0:
pass
try:
cur.execute("DELETE FROM prodotti WHERE n_rfid=?;",(codice_prodotto,)) cur.execute("DELETE FROM prodotti WHERE n_rfid=?;",(codice_prodotto,))
print("Il prodotto col codice : ", codice_prodotto, " è stato correttamente smaltito.")
con.commit() con.commit()
cur.close() cur.close()
LED_GIALLO.off()
LED_VERDE.on()
time.sleep(1)
COPERCHIO.min()
time.sleep(5)
print("Il prodotto col codice : ", codice_prodotto, " è stato correttamente smaltito.")
COPERCHIO.max()
except: except:
print("Codice non corretto") print("Codice non corretto")
except:
print("Prodotto non presente nel database. Impossibile da smaltire")
def cancella_cliente(): def cancella_cliente():
reader = SimpleMFRC522() reader = SimpleMFRC522()
con = sqlite3.connect("mydb.db") con = sqlite3.connect("mydb.db")
cur = con.cursor() cur = con.cursor()
def leggi_cliente(): codice_cliente, d = leggi_rfid("Ciao, avvicina il tag del cliente al ricevitore!",5)
try:
print("Ciao, avvicina il tag del cliente al ricevitore!")
id,text = reader.read()
print(id)
#print(text)
except:
pass
finally:
GPIO.cleanup()
return int(id)
# def leggi_prodotto():
# try:
# print("Ciao, avvicina il prodotto al ricevitore!")
# id,text = reader.read()
# print(id)
# #print(text)
# except:
# pass
# finally:
# GPIO.cleanup()
# return int(id)
#n = input("Quale e il tuo nome?")
#c = input("Quale e il tuo cognome?")
codice_cliente = leggi_cliente()
#time.sleep(2)
#codice_prodotto = leggi_prodotto()
try: try:
cur.execute("DELETE FROM persone WHERE n_card=?;",(codice_cliente,)) cur.execute("DELETE FROM persone WHERE n_card=?;",(codice_cliente,))
#print("ciao")
#print("Ciao ", codice_cliente , " abbiamo registrato il prodotto numero : ", codice_prodotto)
con.commit() con.commit()
cur.close() cur.close()
print("Cliente rimosso dal database") print("Cliente correttamente rimosso dal database")
except: except:
print("Codice non corretto") print("Codice non corretto")
...@@ -166,68 +150,21 @@ def registra_cliente(): ...@@ -166,68 +150,21 @@ def registra_cliente():
cognome TEXT NOT NULL, cognome TEXT NOT NULL,
n_card TEXT NOT NULL UNIQUE);""") n_card TEXT NOT NULL UNIQUE);""")
def leggi_codice(): nome = input("Quale è il tuo nome?")
try: cognome = input("Quale è il tuo cognome?")
print("Ciao, avvicina il tag RFID al ricevitore!") numero_tessera , d = leggi_rfid("Adesso avvicina il tag RFID al ricevitore!",5)
id,text = reader.read()
print(id)
print(text)
except:
pass
finally:
GPIO.cleanup()
return id
n = input("Quale e il tuo nome?")
c = input("Quale e il tuo cognome?")
a = leggi_codice()
try: try:
b = int(a) cur.execute("INSERT INTO persone(nome, cognome, n_card) VALUES(?, ?, ?)",(nome,cognome,numero_tessera))
cur.execute("INSERT INTO persone(nome, cognome, n_card) VALUES(?, ?, ?)",(n,c,a)) print("Ciao ", nome , "", cognome , " la tua tessera ha il numero : ", numero_tessera)
print("Ciao ", n , " la tua tessera ha il numero : ", b)
con.commit() con.commit()
cur.close() cur.close()
except: except:
print("Codice non corretto") print("Codice non corretto")
def leggi_cliente():
reader = SimpleMFRC522()
try:
print("Ciao, avvicina il tag del cliente al ricevitore!")
id,text = reader.read()
#print(id)
#print(text)
except:
print("C'è stato un errore di lettura. Ripetere l'operazione!")
pass
finally:
GPIO.cleanup()
return int(id)
def leggi_prodotto():
reader = SimpleMFRC522()
try:
print("Ciao, avvicina il tag del prodotto al ricevitore!")
id,text = reader.read()
#print(id)
#print(text)
except:
print("C'è stato un errore di lettura. Ripetere l'operazione!")
pass
finally:
GPIO.cleanup()
return int(id)
def lista_clienti(): def lista_clienti():
reader = SimpleMFRC522() #reader = SimpleMFRC522()
con = sqlite3.connect("mydb.db") con = sqlite3.connect("mydb.db")
cur = con.cursor() cur = con.cursor()
...@@ -237,49 +174,22 @@ def lista_clienti(): ...@@ -237,49 +174,22 @@ def lista_clienti():
cognome TEXT NOT NULL, cognome TEXT NOT NULL,
n_card TEXT NOT NULL UNIQUE);""") n_card TEXT NOT NULL UNIQUE);""")
database = cur.execute("""SELECT * FROM persone;""") database = cur.execute("""SELECT * FROM persone;""")
for row in database: for row in database:
print(row) print(row)
def lista_prodotti(): def lista_prodotti():
reader = SimpleMFRC522()
con = sqlite3.connect("mydb.db") con = sqlite3.connect("mydb.db")
cur = con.cursor() cur = con.cursor()
# cur.execute("""CREATE TABLE IF NOT EXISTS persone ( codice_cliente = cerca_cliente_per_tessera()
# id INTEGER PRIMARY KEY, if codice_cliente != None:
# nome TEXT NOT NULL,
# cognome TEXT NOT NULL,
# n_card TEXT NOT NULL UNIQUE);""")
def leggi_cliente():
reader = SimpleMFRC522()
try:
print("Ciao, avvicina il tag del cliente al ricevitore!")
id,text = reader.read()
#print(id)
#print(text)
except:
print("C'è stato un errore di lettura. Ripetere l'operazione!")
pass
finally:
GPIO.cleanup()
return int(id)
codice_cliente = leggi_cliente()
#time.sleep(2)
#codice_prodotto = leggi_prodotto()
try: try:
database = cur.execute("SELECT * FROM prodotti WHERE n_cliente=?;",(codice_cliente,)) database = cur.execute("SELECT * FROM prodotti WHERE n_cliente=?;",(codice_cliente,))
#print("ciao")
#print("Ciao ", codice_cliente , " abbiamo registrato il prodotto numero : ", codice_prodotto)
for row in database: for row in database:
print(row) print(row)
#con.commit()
cur.close() cur.close()
#print("+")
except: except:
print("Codice non corretto") print("Codice non corretto")
else:
print("Cliente non presente nel database. Registra il cliente prima di riprovare.")
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment