Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
robogroup
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
matteo perini
robogroup
Commits
0ebacc64
Commit
0ebacc64
authored
Jan 29, 2025
by
matteo perini
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
semplificato il codice
parent
c6a7c16e
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
148 deletions
+53
-148
applicazione.py
applicazione.py
+6
-11
my_lib.py
my_lib.py
+47
-137
No files found.
applicazione.py
View file @
0ebacc64
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
(
"
\n
Seleziona l'operazione da effettuare selezionando il numero del menù:
\n
"
,
"green"
,
attrs
=
[
"bold"
]))
print
(
colored
(
"
\n
Seleziona 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
my_lib.py
View file @
0ebacc64
...
@@ -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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment