Un esempio di uso della GUI Tkinter su Python 3.2 (da confrontare con questo post)
------------------------------------------
import tkinter as tk
from tkinter import ttk
class App:
def __init__(self):
self.root = tk.Tk()
self._job = None
self.root.title("Progress Bar")
self.frame = tk.Frame(self.root, width=200, height=10)
self.frame.pack()
self.slider = tk.Scale(self.root, from_=0, to=100,
orient="horizontal",
command=self.updateValue, length=200)
self.slider.pack()
self.lab = tk.Label(self.root, text=" ")
self.lab.pack()
self.pbar = ttk.Progressbar(self.root, length=200,mode="determinate", maximum=100)
self.pbar.pack(padx=5, pady=5)
self.pbar.start
self.root.mainloop()
def updateValue(self, event):
if self._job:
self.root.after_cancel(self._job)
self.pbar["value"] = int(self.slider.get())
self.lab.config(text=str(self.slider.get()))
app=App()
------------------------------------------
martedì 21 agosto 2012
Confronto Webcam
Esempio GUI con PyQt
Un esempio di GUI mediante PyQT
import sys
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
widget.setGeometry(200, 100, 220, 120)
widget.setWindowTitle('Slider Example')
label1 = QtGui.QLabel("Valore: ", widget)
label1.move(80, 50)
slider = QtGui.QSlider(QtCore.Qt.Horizontal, widget)
slider.setGeometry(10, 10, 200, 30)
slider.setFocusPolicy(QtCore.Qt.NoFocus)
pb = QtGui.QProgressBar(widget)
pb.setGeometry(10, 70, 215, 20)
def getValue(value):
label1.setText("Valore: "+str(value))
pb.setValue(value)
widget.connect(slider, QtCore.SIGNAL('valueChanged(int)'), getValue)
widget.show()
sys.exit(app.exec_())
import sys
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
widget.setGeometry(200, 100, 220, 120)
widget.setWindowTitle('Slider Example')
label1 = QtGui.QLabel("Valore: ", widget)
label1.move(80, 50)
slider = QtGui.QSlider(QtCore.Qt.Horizontal, widget)
slider.setGeometry(10, 10, 200, 30)
slider.setFocusPolicy(QtCore.Qt.NoFocus)
pb = QtGui.QProgressBar(widget)
pb.setGeometry(10, 70, 215, 20)
def getValue(value):
label1.setText("Valore: "+str(value))
pb.setValue(value)
widget.connect(slider, QtCore.SIGNAL('valueChanged(int)'), getValue)
widget.show()
sys.exit(app.exec_())
lunedì 20 agosto 2012
Nokia 6161 e comandi AT
Dovendo fare qualche prova con uno script seriale e non avendo a tiro nessun modem seriale vero ho tirato fuori il vecchio Nokia 6161 che ha una interfaccia con comandi AT
Il collegamento con il telefono puo' essere effettuato con accoppiamento Bluetooth mediante il menu del telefono oppure mediante il cavo USB (che non porta corrente ma solo segnale per cui e' bene inserire anche l'alimentatore per le prove)
Collegamento Bluetooth
per il collegamento bluetooth si accoppia con il classico comando
rfcomm bind 0 00:1B:EE:58:93:22
la porta su cui collegarsi e' /dev/rfcomm0
Collegamento USB con cavo Ca-53
per il collegamento via cavo devono essere caricati i moduli
usbcore,usbserial,cdc_acm,usbhid,ehci_hcd,ohci_hcd
la porta su cui collegarsi e' /dev/ttyACM0
il syslog riporta le seguenti linee
Aug 20 09:35:25 kranz kernel: [ 1858.174324] usb 5-1: New USB device found, idVendor=0421, idProduct=04d2
Aug 20 09:35:25 kranz kernel: [ 1858.174340] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Aug 20 09:35:25 kranz kernel: [ 1858.174346] usb 5-1: Product: Nokia 6151
Aug 20 09:35:25 kranz kernel: [ 1858.174351] usb 5-1: Manufacturer: Nokia
il primo corretto ed il secondo errato
-------------------------------------------------------------
import time
import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.bytesize = 8
ser.stopbits = 1
ser.port = '/dev/rfcomm0'
ser.parity=serial.PARITY_NONE
ser.open()
ser.isOpen()
while True :
#controlla il livello della batteria
out = ''
ser.write("AT+CBC\r\n")
print "AT+CBC"
time.sleep(1)
while ser.inWaiting()> 0:
out += ser.read(1)
if out != '':
print out
#print "<<"+out[24]
#if out[24] == "O":
#print "Ok"
#forza un comando errato
out = ''
ser.write("AT+CGMM1\r\n")
print "AT+CGMM1"
time.sleep(1)
while ser.inWaiting()> 0:
out += ser.read(1)
if out != '':
print out
#print out[12]
#if out[12] == "E":
#print "Errore"
-------------------------------------------------------------
La risposta al comando corretto e' composta dalla ripetizione del comando
il valore di risposta (in questo caso lo stato di carica della batteria) ed infine
una riga con il codice OK
-------------------------------------------------------------
AT+CBC
+CBC: 1,93
OK
La risposta al comando scorretto e' composta dalla ripetizione del comando
e la stringa ERROR
-------------------------------------------------------------
La risposta al comando scorretto e' composta dalla ripetizione del comando
e la stringa ERROR
-------------------------------------------------------------
AT+CGMM1
ERROR
-------------------------------------------------------------
come si puo' osservare la risposta e' data da una stringa unica con piu' ritorni a capo e senza un separatore univoco..per questo motivo per fare un check da programma del corretto funzionamento si puo' controllare nel primo caso se il carattere 24 della stringa di out contiene una "O" di "OK" mentre nel secondo caso se il carattere 12 contiene una "E" di Error
come si puo' osservare la risposta e' data da una stringa unica con piu' ritorni a capo e senza un separatore univoco..per questo motivo per fare un check da programma del corretto funzionamento si puo' controllare nel primo caso se il carattere 24 della stringa di out contiene una "O" di "OK" mentre nel secondo caso se il carattere 12 contiene una "E" di Error
sabato 18 agosto 2012
Bluetooth su Debian
per installare il pacchetto di utility di Bluetooth si digita
apt-get install bluetooth
successivamente per ricercare il device Bluetooth a cui si vuole collegare
hcitool scan
si copia l'indirizzo esadecimale e si lancia il comando
rfcomm bind 0 00:0A:3A:1F:A4:2E
che apre la seriale /dev/rfcomm0
venerdì 17 agosto 2012
Terminale per porta seriale
Alcuni esempi di terminale su porta seriale (reale o virtuale) su Linux. Le prove sono state effettuate con GPS Bluetooth impostato su /dev/rfcomm0
altrimenti usando la libreria pyserial (che si installa con il seguente comando)
apt-get install python-serial
si puo' usare uno script in Python per fare la stessa cosa
--------------------------
import time
import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.bytesize = 8
ser.stopbits = 1
#ser.xonxoff = 0
#ser.rtscts = 0
#ser.timeout = 0
ser.port = '/dev/rfcomm0'
ser.parity=serial.PARITY_NONE
ser.open()
ser.isOpen()
input=1
out = ''
while True :
time.sleep(1)
while ser.inWaiting()> 0:
out += ser.read(1)
if out != '':
print ">>" + out
Gtkterm
Configurazione |
Schermata del terminale |
Minicom
(da lanciare come minicom -s)
Configurazione |
Schermata del terminale |
altrimenti usando la libreria pyserial (che si installa con il seguente comando)
apt-get install python-serial
si puo' usare uno script in Python per fare la stessa cosa
--------------------------
import time
import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.bytesize = 8
ser.stopbits = 1
#ser.xonxoff = 0
#ser.rtscts = 0
#ser.timeout = 0
ser.port = '/dev/rfcomm0'
ser.parity=serial.PARITY_NONE
ser.open()
ser.isOpen()
input=1
out = ''
while True :
time.sleep(1)
while ser.inWaiting()> 0:
out += ser.read(1)
if out != '':
print ">>" + out
giovedì 16 agosto 2012
Scheda Wireless Kraun Kr.8N
La scheda, visibile in foto, e' costituita da una antenna che integra anche l'elettronica di controllo, e di un supporto con cavo USB
Inserita nella Debian Box stable i messaggi del syslog indicano
Aug 16 09:51:04 kranz NetworkManager[1143]: <warn> wlan1: firmware may be missing.
Aug 16 09:51:04 kranz NetworkManager[1143]: <info> (wlan1): deactivating device (reason: 2).
Aug 16 09:51:04 kranz kernel: [ 348.203942] phy1 -> rt2x00lib_request_firmware: Error - Failed to request Firmware.
Aug 16 09:51:04 kranz kernel: [ 348.210663] rt2800usb 1-7:1.0: firmware: requesting rt2870.bin
Aug 16 09:51:04 kranz kernel: [ 348.222574] phy1 -> rt2x00lib_request_firmware: Error - Failed to request Firmware.
e' quindi necessario inserire tra le sources i repository non-free e successivamente (dopo l'update)
apt-get install firmware-ralink
in Ubuntu invece la scheda viene riconosciuta al volo
Inserita nella Debian Box stable i messaggi del syslog indicano
Aug 16 09:51:04 kranz NetworkManager[1143]: <warn> wlan1: firmware may be missing.
Aug 16 09:51:04 kranz NetworkManager[1143]: <info> (wlan1): deactivating device (reason: 2).
Aug 16 09:51:04 kranz kernel: [ 348.203942] phy1 -> rt2x00lib_request_firmware: Error - Failed to request Firmware.
Aug 16 09:51:04 kranz kernel: [ 348.210663] rt2800usb 1-7:1.0: firmware: requesting rt2870.bin
Aug 16 09:51:04 kranz kernel: [ 348.222574] phy1 -> rt2x00lib_request_firmware: Error - Failed to request Firmware.
e' quindi necessario inserire tra le sources i repository non-free e successivamente (dopo l'update)
apt-get install firmware-ralink
in Ubuntu invece la scheda viene riconosciuta al volo
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...