Sono tornato dopo piu' di 20 anni all'interno della Villa Rusciano attuale sede dell'Ufficio Ambiente del Comune di Firenze (motivo della visita) e prima sede del Liceo Gobetti
Il giardino e' decisamente piu' curato e l'edificio risulta essere attualmente in vendita da parte del Comune
mercoledì 3 luglio 2013
martedì 2 luglio 2013
Errore cannot read creator env file /tmp/ in QtCreator
Programmando in Qt4 e' comparso un curioso messaggio di errore nel momento di lanciare l'esecuzione del programma dall'interno di QtCreator
cannot read creator env file /tmp/.....
ed il programma non entra in esecuzione
Aprendo una shell, entrando nella directory del programma a cui stavo lavorando ed eseguendo la compilazione a mano con qmake, make il programma si e' compilato ed eseguito correttamente
il problema sembra legato all'interfaccia tra QtCreator ed (in questo caso) LXDETerminal..comunque
sono in buona compagnia
cannot read creator env file /tmp/.....
ed il programma non entra in esecuzione
Aprendo una shell, entrando nella directory del programma a cui stavo lavorando ed eseguendo la compilazione a mano con qmake, make il programma si e' compilato ed eseguito correttamente
il problema sembra legato all'interfaccia tra QtCreator ed (in questo caso) LXDETerminal..comunque
sono in buona compagnia
Lettore RFID EM4100
Oltre al precedente lettore Parallax ho acquistato anche questo modello che legge i medesimi tag ma essendo commercializzato dalla Cina (dealextreme) ha un prezzo inferiore ai 20 Euro. Sulla confezione e sul lettore non e' riportato nessun codice identificativo
Le connessione riguardano una porta USB per la sola alimentazione ed una porta seriale standard DB9 (per la quale e' necessario l'adattore seriale-usb)
In alcuni siti si legge che questo lettore si dovrebbe comportare come una interfaccia HID ed emulare la tastiera e non dovrebbe aver bisogno di nessun driver. Nel mio caso ho provato sia su Linux che su Windows ma l'unico sistema per ottenere la lettura del dato e' connettersi alla porta seriale DB9
La comunicazione avviene su porta seriale con i parametri 9600 8N1
Le connessione riguardano una porta USB per la sola alimentazione ed una porta seriale standard DB9 (per la quale e' necessario l'adattore seriale-usb)
In alcuni siti si legge che questo lettore si dovrebbe comportare come una interfaccia HID ed emulare la tastiera e non dovrebbe aver bisogno di nessun driver. Nel mio caso ho provato sia su Linux che su Windows ma l'unico sistema per ottenere la lettura del dato e' connettersi alla porta seriale DB9
La comunicazione avviene su porta seriale con i parametri 9600 8N1
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"
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"
Raspberry WiFi
A circa un anno di distanza dall'ultimo utilizzo ho ritirato fuori la Raspberry per montare la nuova versione della Raspbian e vedere come sono migliorate le cose.
La cosa piu' immediata e' stata che alcuni dongle usb wireless, essendo Raspbian passata a Wheezy, vengono riconosciuti al volo come nel caso il chip Ralink...stranamente il Realtek non viene riconosciuta in modo corretto
Inoltre e' stata aggiunta una GUI per la configurazione della rete Wireless che rende l'utilizzo del WiFi molto semplice
--------------------------
Jul 2 10:20:04 debian kernel: [ 220.652158] usb 1-3: new high-speed USB device number 4 using ehci_hcd
Jul 2 10:20:05 debian kernel: [ 220.802197] usb 1-3: New USB device found, idVendor=148f, idProduct=5370
Jul 2 10:20:05 debian kernel: [ 220.802214] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jul 2 10:20:05 debian kernel: [ 220.802230] usb 1-3: Product: 802.11 n WLAN
Jul 2 10:20:05 debian kernel: [ 220.802241] usb 1-3: Manufacturer: Ralink
Jul 2 10:20:05 debian kernel: [ 220.802253] usb 1-3: SerialNumber: 1.0
Jul 2 10:20:05 debian mtp-probe: checking bus 1, device 4: "/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-3"
Jul 2 10:20:05 debian mtp-probe: bus: 1, device: 4 was not an MTP device
Jul 2 10:20:05 debian kernel: [ 221.352215] usb 1-3: reset high-speed USB device number 4 using ehci_hcd
Jul 2 10:20:05 debian kernel: [ 221.517326] usbcore: registered new interface driver rt2800usb
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"
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"
venerdì 28 giugno 2013
Emulatore Android Genymotion
Avendo visto un po' di recensioni positive ho provato l'emulatore Android Genymotion.
Come gia' visto in altri post si possono usare emulatori differenti da quello presente nell'SDK, per esempio usando Virtual Box... in questo caso l'emulatore e' stato scritto ex-novo.
Per la prova ho lanciato sulla stessa macchina una emulazione di un NeXus S con le API16
I risultati si commentano da soli
Emulatore Genymotion 18 secondi
Emulatore SDK 1 inuto e 28 secondi
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...