logo

lunedì 31 gennaio 2011

Creare un file.deb partendo da Python

Programmate in Python e non sapete come creare un file .deb per la vostra distro Debian (o derivate come Ubuntu)?
La soluzione è semplice e non serve molto per creare il vostro deb da usare oppure da condividere su internet per tutti i debianizzati.
  1. Per prima cosa create una cartella che conterrà tutti i dati per creare un deb. La cartella (preferibilmente) viene rinominata in questo modo: <nome_programma>_<versione>_<architetture_supportate>. Per esempio creiamo la cartella “prova_0.1_all” in cui all indica il fatto che il programma è compatibile sia con architetture 32 bit o 64 bit.
  2. All’interno della cartella appena creata bisognerà crearne 2: “DEBIAN” e “usr“.
    Analizziamole separatamente:
  3. In “DEBIAN” andrà inserito un file dal nome “control”, che serve come preview quando si installa il pacchetto, così fatto (con # indico i commenti che NON andranno inseriti nel file). Il nome inserito come Package sarà il nome del pacchetto installato.
    Scarica l’esempio di file control
  4. In “usr” vanno create altre 2 cartelle: “bin” e “share”.
    Analizziamole separatamente:
  5. In “bin” va messo un file dal nome “prova” (prova è il nome del programma) che andrà reso eseguibile e conterrà le seguenti 3 righe:
    #!/bin/bash
    cd /usr/share/prova   #prova è il nome del programma
    env python provaMain.py    #provaMain.py è la classe main del programma prova
  6. In “share” andranno messe 3 cartelle: “applications”,”doc”,”prova”. Le 3 cartelle non sono obbligatorie: potete mettere in questa cartella direttamente i file .py del programma oppure potrete aggiungere altre cartelle usate dal programma stesso. “applications” conterrà il file che indica dove posizionare il programma nel menù del sistema operativo, “doc” contiene i file per la documentazione, “prova” è la cartella contenente tutti i file del programma Python.
    In questa breve guida spiegheremo solo cosa mettere nella cartella “applications” perchè le altre 2 sono ovvie nei contenuti.
  7. In “applications” andrà messo il file “prova.desktop” (prova è il nome del programma) che indicherà dove mettere il programma nel menù del sistema.
    Scarica l’esempio di file prova.desktop.
    Una volta creato sarà possibile modificarlo solo tramite terminale con il comando (da gnome): “sudo gedit <percorso>/prova.desktop”.
  8. Create le cartelle e i file è ora di creare il file deb con il comando da terminale “fakeroot dpkg -b <percorso>/prova_0.1_all
Questa è una guida molto semplice e sommaria per capire come creare un file .deb da un programma Python. Se avete problemi lasciate pure commenti.
Vi lascio un link al piccolo programma che ho realizzato con questo procedimento che potrà esservi utile per capire il funzionamento della guida.
Scarica il programma come aiuto alla guida.

i

martedì 25 gennaio 2011

installazione di arduino

Far funzionare arduino con ubuntu è molto semplice, basta installare il pacchetto librtx-java che sarebbe la JRE della sun e il compilatore gcc con le libc per programmare il nostro microcontrollore.
Prima di tutto fate un sudo apt-get update per essere sicuri di installare le ultime versioni di tutti i seguenti programmi. Successivamente nel terminale scrivete
$ sudo apt-get install sun-java6-jre avr-libc gcc-avr
Il mio pc è a 32 bit quindi per installare librxtx ho semplicemente digitato nel terminale:
$ sudo apt-get install librxtx-java
se invece siete su una macchina a 64 bit installate il seguente pacchetto .deb.
Adesso avrete predisposto il vostro pc alla programmazione dei micro avr e al funzionamento dell IDE di arduino.
L' ide arduino scaricatelo da qui http://arduino.cc/en/Main/Software.
Scaricatelo in home poi nel terminale scrivete
$ tar zxvf arduino-xxxx.tgz
adesso sarete più o meno in questa situazione entrando nella cartella dell' ide
Arduino
Cliccando sull ide vi comparirà questa finestra:
Arduino mostra ecc ecc
Eseguitelo e se tutto è andato bene vi comparirà l IDE.
Ide
Collegate la vostra scheda e dopo aver selezionato la scheda giusta sotto Tools->board e la porta com giusta sotto Tools->Serial Port provate a caricare lo sketch Blink.
Se tutto sarà andato a buon fine allora potrete usare il vostro ide tranquillamente.
Aprire tutte le volte l'Ide entrando nella cartella HOME e premendo sempre esegui è di una noia mortale, allora come crearsi un lanciatore? Semplicissimo.
Per creare un lanciatore arduino su un pannello dovrete cliccare col sinistro sul pannello, poi premete aggiungi al pannello e vi si aprirà questa schermata.
Creazione Lanciatore
Premete Lanciatore applicazione personalizzato, poi vi si aprirà questa finestrina. Cliccate su esplora e si aprirà la HOME. In home entrate nella cartella in cui è contenuto l IDE e selezionate il File Arduino.
Come Nome mettete Arduino-xxxx dove xxxx sta per la versione, il commento è facoltativo. Per avere l un immagine bellina del lanciatore potrete utilizzarte questa.
Arduino Icon
Cliccateci sopra e si aprirà in un'altra pagina, poi la salvate con nome nella cartella di arduino in home e la potrete utilizzare come icona del vostro lanciatore.

python simbian

esempi python mobile

1.Introduzione

Per iniziare lo sviluppo in python sui dispositivi mobili dovrete scaricare il compilatore python per il vostro dispositivo all’indirizzo: pys60 prelevate il file .sis e lo installate.
Adesso dovete scegliere se installare python anche sul pc e scrivere gli script e provarli tramite l’emulatore sdk oppure utilizzare il compilatore python installato sul vostro cellulare sfruttando la connessione bluetooth,vediamo queste due soluzioni in dettaglio.

SFRUTTARE LA CONNESSIONE BLUETOOTH:

Creiamo una connessione con Hyper Terminal (Start-Programmi-Accessori-Comunicazioni),digitiamo il nome da dare alla connessione e la COM per la connessione,poi apriamo python nel nostro dispositivo andiamo su Bluetooth console,other e selezioniamo la connessione.
01_pys60 02_pys60 03_pys60
Se abbiamo eseguito tutto dovremmo trovarci con una schermata di questo tipo:
04_pys60
Potete vedere il funzionamento tramite questo video ma me realizzato:

UTILIZZARE EMULATORE:

Se invece vogliamo scrivere gli script e provarli nel computer dobbiamo scaricare python per il nostro computer ad esempio Active Python e scaricare l’ emulatore .
Per eseguire l’emulatore dobbiamo aprire l’eseguibile EPOC32.exe che si trova nella cartella dell’emulatore.

2.Costrutti condizionali

Tramite le strutture di controllo possiamo rendere le nostre applicazioni più “dinamiche” nel senso che se si verifica una certa condizione potremmo ottenere un certo output rispetto che un’altro.
In python come fino ad adesso avete potuto vedere non ci sono punti e vigola da mettere alla fine di ogni istruzione,variabili da dichiarare prima e cosi via,l’unica attenzione che dovete avere è l’indentazione che a differenza degli altri linguaggi fa proprio parte del linguaggio,cioè una volta verificata una condizione vengono eseguite le istruzioni che sono indentate sotto la condizione.
Passiamo a presentare il primo…

-WHILE:


while(condizione):
istruzione 1
istruzione 2
istruzione 3
….
….
istruzione n

Affinchè verrà soddisfatta la condizione del while verranno eseguite le istruzioni 1 e 2 , appena la condizione del while non verrà soddisfatta verrà eseguita l’istruzione 3 e l’esecuzione del programma continuerà ad eseguire le successive istruzioni(se ve ne sono).
Esempio:

a=0
while (a
Quindi viene inizializzata la variabile a al valore zero,quindi fino a che la variabile a è minore o uguale a 10 stampa il valore di a e la incrementa di 1 appena il valore di a è maggiore di 10 non vengo eseguite le condizioni print a e a=a+1 ma viene eseguita print “la variabile a è maggiore di 10, a=”,a

Altro esempio:

a=1
print “Adesso a=”,a
while (a!=0): #il simbolo != significa “diverso”
a=input(”Inserisci un numero,digita 0 per terminare:”)
print “Adesso a=”,a

Inizializza la variabile a ad 1 e stampa nel video il suo valore,poi entra nella condizione del while e permette all’utente d’inserire un valore alla variabile a e lo stampa a video e ripete queste due istruzioni fino a quando l’utente non digita il valore zero (cioè fino a quando a non è uguale a zero).

-IF:


if (condizione):
istruzione1
else:
istruzione2

Se è verificata la condizione allora viene eseguita l’istruzione1,altrimenti(else) viene eseguita l’istruzione2.
Vediamo un’esempio:

a=input(”Inserisci un valore:”)
if (a>=5):
print “il valore della variabile è maggiore o uguale a 5, a=”,a
else:
print “il valore della variabile è minore di 5, a=”,a

Possiamo avere un’altra struttura di if :

if(condizione a):
istruzione1
elsif (condizione b):
istruzione2
else:
istruzione3

Se è verificata la condizione a dell’if viene eseguita l’istruzione1, altrimenti se(elsif) è verificata la condizione b viene eseguita l’istruzione2,altrimenti viene eseguita l’istruzione3
Eccovi un’esempio:

a=input(”Inserisci un valore:”)
if (a=9):
print “il valore di a è compreso tra 4 e 9″
else:
print “il valore di a è maggiore o uguale a 10″


3.Le liste

La lista può essere pensata come una variabile che può contenere più di un valore,anche di tipo diverso,vediamo come si crea:
nomelista=[’elemento0′,’elemento1′,elemento2,’elemento3′,elemento4]
Gli elementi 0,1,3 sono di tipo stringa(infatti sono tra le virgolette),mentre gli elementi 2,4 sono di tipo numerico.
All’interno della lista gli elementi vengono “indicizzati” , infatti e vengono contati a partire da zero,quindi:
lunghezza_lista=(numero elementi-1)
Se vogliamo sapere che elemento abbiamo in una determinata posizione della lista ci basta scrivere:
nomelista[posizione]
Esempio:

lista=[’patate’,'cipolle’,2,’mele’,69,’pesche’]
print lista[1]
print lista[4]

Otterremo come output:
cipolle
69
01_liste 02_liste
Se invece vogliamo sapere in che posizione si trova un certo elemento della lista scriviamo:
nomelista.index(nome_elemento)
Esempio:

lista=[’patate’,'cipolle’,2,’mele’,69,’pesche’]
print lista.index(’cipolle’)

L’output sarà:
1
03_liste
Per cancellare un’elemento dalla lista scriviamo:
del nomelista(posizione_elemento)
Esempio:

lista=[’patate’,'cipolle’,2,’mele’,69,’pesche’]
del lista(1)

in questo modo cancelleremo la parola “cipolle”
04_liste
Riepilogando i comandi da potere usare sulle liste sono:
len(nome_lista) –> restituisce la lunghezza della lista
nome_lista.index(nome_elemento)—>restituisce la posizione dell’elemento
nome_lista.append(elemento)–>inserisce un nuovo elemento nella lista
nome_lista.sort()–>ordina la lista
del nome_lista(posizione)–>cancella l’elemento nella posizione
elemento in nome_lista–>restituisce true se l’elemento è nella lista
nome_lista=range(valore)–>la lista conterrà gli elementi che vanno da 0 a valore
nome_lista=range(valore1,valore2) –>la lista conterrà gli elementi compresi tra valore1 e valore2

TUPLE:

Le tuple sono delle liste dove gli elementi non si possono modificare,esse si dichiarano in questo modo:
nome_tupla=(’elemento1′,’elemento2′,’elemento3′)

4.I dizionari

Adesso passiamo ad esaminare una delle strutture più potenti di Python,i dizionari.
I dizionari sono formati da parole chiavi e valori,ad ogni parola chiave corrisponde un valore che può essere di tipo numerico,stringa,lista.
Possiamo dire che i dizionari sono una “particolare” lista ,solo che gli elementi anziché essere indicizzati mediante un indice numerico,gli elementi vengono identificati da una chiave:
chiave1–>elemento1
chiave2–>elemento2

Eccovi i comandi che si usano sui dizionari:
dizionario={’A’:’Alberto’,’B’:’Bernardo’,’C’:’Claudia’,’D’:’Dora’}
print dizionario #stampa tutto il dizionario (chiavi e valori)
print dizionario.values() #stampa solo i valori
print dizionario.keys() #stampa solo le chiavi
print len(dizionario) #restituisce la lunghezza
print dizionario.has_key(’A’) #restituisce TRUE se la chiave esiste,FALSE altrimenti
print dizionario.has_key(’Bernardo’) #restituisce FALSE perchè Bernardo è un valore e no una chiave

5.Modulo Appuifw

Il modulo appuifw è di uno di quei moduli che utilizzeremo in quasi tutte le nostre applicazioni.
Con esso possiamo avvisare l’utente tramite delle note o possiamo chiedere l’inserimento di dati,vediamo come funziona.
Per prima vediamo inserimento dei dati che possono essere:testo,numero,data,ora,password,domanda.

-TESTO:

import appuifw
nome=appuifw.query(u”Nome: “,”text”)

text_appuifw

-NUMERO:

import appuifw
numero=appuifw.query(u”Numero: “,”number”)

number_appuifw

-DATA:

import appuifw
data=appuifw.query(u”Data: “,”date”)

date_appuifw

-ORA:

import appuifw
ora=appuifw.query(u”Ora: “,”time”)

time_appuifw

-PASSWORD:

import appuifw
password=appuifw.query(u”Codice: “,”code”)

code_appuifw

-DOMANDA

import appuifw
domanda=appuifw.query(u”Vuoi uscire?”,”query”)

query_appuifw
Esempi di Note:

-INFO:

import appuifw
appuifw.note(u”Questa e’ una nota”,”info”)

info_appuifw

-ERRORE

import appuifw
appuifw.note(u”Esempio di errore”,”error”)

error_appuifw

-CONF:

import appuifw
appuifw.note(u”Nota”,”conf”)

conf_appuifw
Per scegliere un dato da una lista possiamo farlo in questi modi:

-SELECTION LIST

import appuifw
Lista=[u'Chiama',u'Sms',u'Mms',u'Gioca']
richiesta=appuifw.selection_list(choices=Lista,search_field=1)

selection_list_appuifw

-MULTI SELECTION LIST:

import appuifw
Lista=[u'Chiama',u'Sms',u'Mms',u'Gioca']
richiesta = appuifw.multi_selection_list(Lista , style=’checkbox’, search_field=1)

multi_selection_list_appuifw

6.Le Stringhe

Oggi impariamo ad usare al meglio le stringhe che come ogni altro elemento in Python è in oggetto,quindi ha dei metodi che ne facilitano l’utilizzo.
I caratteri della stringa vengono indicizzati da 0 ad (n-1).

-Lunghezza:

supponiamo di avere una stringa(frase):
frase =’’supercalifragilissichespiralitoso”
se vogliamo sapere la lunghezza della stringa,basta scrivere
>>>len(frase)
>>>33

-Lo slicing:

Tramite lo slicing possiamo estrapolare dalla stringa una parte di essa,ad esempio
>>>frase[:10] #stampa i primi 10 caratteri
>>>supercalif
>>>frase[-10:] #stampa gli ultimi 10 caratteri
>>>piralitoso
>>>frase[2:8] #stampa dal terzo carattere al numero 8
>>>percal
>>>frase[::10] #stampa ogni 10 caratteri
>>>srh


7.Modulo Sysinfo

Adesso presenteremo il modulo sysinfo che ci fornisce le informazioni del dispositivo dove viene eseguita l’applicazione.
Innanzitutto importiamo il modulo con la sintassi import sysinfo .
1.Per avere lo stato della batteria:
>>>sysinfo.battery() #ci restituirà un valore compreso tra 0-7
2.Per sapere la risoluzione in pixels del nostro schermo:
>>>sysinfo.display_pixels()
3.Ci restituisce la quantità di memoria libera:
>>>sysinfo.free_drivespace()
4.Ci restituisce la quantità di ram libera:
>>>sysinfo.free_ram()
5.Ci restituisce la ram totale:
>>>sysinfo.total_ram()
6.Ci restituisce la rom totale:
>>>sysinfo.total_rom()
7.Per sapere l’imei del dispositivo:
>>>sysinfo.imei()
8.Restituisce la versione del sistema operativo:
>>>sysinfo.os_version()
9.Tipo di suoneria impostato:
>>>sysinfo.ring_type()
10.Restituisce il livello del segnale:
>>>sysinfo.signal() #valore da 0 a 7

8.Modulo e32

1.Conoscere i drive del nostro dispositivo:
>>>e32.drive_list() #restituisce una lista
2.Per conoscere la versione installata di python:
>>>e32.pys60_version
3.Per conoscere la versione del s.o:
>>>e32.s60_version_info
#restituisce una tupla con due valori
(1,2) per s60 prima edizione
(2,0) per s60 seconda edizione
(2,6) per s60 seconda edizione Feature Pack 2
4.Per “addormentare” l’applicazione un certo numero di secondi:
>>>e32.ao_sleep(2) #addormenta il programma per 2 secondi
5.Per aprire un’applicazione:
>>>e32.start_exe(NomeFile,Comando)
6.Per copiare un file:
>>>e32.file_copy(Path di arrivo,Path sorgente)

domenica 16 gennaio 2011

Arduino e seriale python

Premessa

Quando si effettua uno sketch con arduino che invia/riceve dati verso/dalla seriale è necessario un programma che recepisca o mi permetta di scrivere dati sulla porta seriale.
Per effettuare i test solitamente si utilizza il monitor dell'IDE ma se si vuole automatizzare qualche passaggio o se si vuole rendere indipendente lo sketch è necessario "captare" le informazioni che transitano sulla seriale ed eventualmente rispondere.
Molti programmi hanno una libreria che permette di dialogare con la seriale.
In questo articolo vi parlerò con pyserial la libreria per python che comunica con la seriale.

pyserial

Si presuppone che sulla vostra macchina sia installato python.
Personalmente mi trovo bene con la versione 2.5
La pagina principale del progetto è http://pyserial.sourceforge.net/
Potete scaricare la libreria da questa pagina: http://sourceforge.net/projects/pyserial/files/ e diversi esempi qui http://pyserial.sourceforge.net/shortintro.html

Pyserial e Arduino

A questo punto vi voglio presentare una piccola parte di uno programma che ho fatto ultimamente in python.
L'idea è quella di recepire delle stringhe inviate da Arduino e in base a ciò che c'è scritto agire in diversi modi con il sistema operativo.
A questo scopo, dopo aver importato la libreria:
import serial

dopo aver inizializzato la seriale con una velocità di 9600 baud:
s=serial.Serial(1)
Su windows sarebbe COM1 mentre su Linux la /dev/ttyUSB1
Si può passare ad un ciclo che legge dalla seriale:
line=s.readline()


A questo punto il programma completo anche se depurato delle parti necessarie a me per interagire con il sistema operativo risulta molto semplicemente come segue:
import serial
s=serial.Serial(1)

while(1):

line=s.readline()
# interazioni con la variabile s

domenica 2 gennaio 2011

Python mobile

Definizione “lampo”: Python di per sè è un linguaggio di programmazione, molto semplice rispetto al nativo linguaggio di programmazione C++ per Symbian OS e molto più accessibile, data la diffusione e disponibilità delle librerie, come fosse un progetto Open Source.
Detto ciò possiamo brevemente definire che le applicazioni destinate a dispositivi Symbian S60, possono essere sviluppate in:
  • C++, linguaggio nativo. Vengono rilasciati per l’utente finale pacchetti d’installazione .sis.
  • Java. Vengono rilasciati per l’utente finale pacchetti d’installazione .jar. Symbian OS ha il supporto per la piattaforma Java, nel caso specifico mobile, Java Micro Edition.
  • Python. Anche per le applicazioni sviluppate in Python vengono spesso rilasciati pacchetti d’installazione .sis per facilitare l’utente finale. Tuttavia, poichè funzionino, occorre installare il supporto per Python, ovvero il cosiddetto interprete Python for S60 o PyS60 che Symbian OS non ha nativamente. Ripeto che, per facilitare l’utente finale, anche le applicazioni sviluppate in python vengono impacchettate come dei .sis, altrimenti avremmo dei .py, ovvero degli script da far “girare” attraverso la ScriptShell, definibile allora come la componente che interpreta le linee di comando.
Symbian S60 1st Edition (Symbian OS v6.1)
7650, N-Gage, N-Gage QD, 3650, 3620, 3660, 3600
Symbian S60 2nd Edition Feature Pack 1 (Symbian OS v7.0s)
6600, 6620, 3230, 6670, 6260, 7610
Symbian S60 2nd Edition Feature Pack 2 (Symbian OS v8.0a)
6630, 6680, 6682, 6681
Symbian S60 2nd Edition Feature Pack 3 (Symbian OS v8.1a)
N70, N90, N72
Symbian S60 3rd Edition (Symbian OS v9.1)
N80, N71, N91, N92, N73, N93, E62, E50, E60, E70, 5500, 3250, N75, N93i, N77, E61i, E65
Symbian S60 3rd Edition Feature Pack 1 (Symbian OS v9.2)
N95, 6290, N76, 6110, E90, 5700, 6120, 6121, N81, N81 8GB, N95 8GB, E51, N82, 6124, E66, E71, E63
Symbian S60 3rd Edition Feature Pack 2 (Symbian OS v9.3)
6210, 6220, N78, N96, 6650, 5320, N79, N85, 5630
Symbian S60 5th Edition (Symbian OS v9.4) la piattaforma touch screen
5800 XpressMusic, N97
python
Cos’è Python: è un linguaggio di programmazione semplice e dinamico dotato di ampie librerie standard e che si integra fortemente con altri linguaggi e strumenti di programmazione. Per questo può essere utilizzato per lo sviluppo di vari software tra cui applicazioni destinate ai dispositivi S60. Il tutto racchiuso in un progetto Open Source, dunque ampio l’interesse sia da parte di programmatori amatoriali, data la semplicità di questo linguaggio di programmazione, che da parte dell’utente finale data la possibilità di usufruire di applicazioni spesso molto interessanti in maniera del tutto gratuita.
PyS60 (Python for S60) è l’interprete Python per i dispositivi Symbian S60. Oltre alle caratteristiche standard del linguaggio Python, offre un accesso diretto alle caratteristiche software degli smartphone come otocamera, contatti, calendario, audio video, protocollo TCP/IP, funzioni di telefonia.
Per utlizzare applicazioni scritte in Python su un dispositivo S60 occorre aver installato PythonForS60 (PyS60), inteso come system runtime la cui definizione stà in quanto descritto prima per l’interprete (un software che fornisce i servizi necessari all’esecuzione di un programma)  e  la relativa SciptShell.
Python Script Shell è un ambiente di lavoro per le linee di comando con la quale si possono eseguire degli script. Anche se è opportuno installarla, a meno che non siate degli informatici esperti non la utilizzerete mai.
Versione Beta
L’ ultima versione beta per l’interprete e la relativa ScriptShell di Python for S60, destinata all’utente finale intento ad utilizzare applicazioni scritte in Python sul proprio dispositivo,  è la 1.9.7.
Riassunto delle puntate precedenti
Si parte dalla release beta 1.9.0. Di qui si susseguiranno una serie di ulteriori versioni beta 1.9.x, il cui sviluppo finale porterà alla nuova versione definitiva di Python for S60, la 2.0.
1.9.0: ora l’applicazione si basa su Python 2.5.4, con disposnibilità di più moduli e dunque maggiori opportunità per gli sviluppatori. Aggiunto anche il supporto per la piattaforma 5th edition.
1.9.1: migliorato il supporto per la piattaforma 5th edition.
1.9.2: è stato migliorato il supporto per i sensori, per un migliore accesso ai sensori dei dispositivi il cui funzionamento si basa su librerie S60 Sensor Framework (Es. accelerometro 3rd edition FP2 e 5th edition).
1.9.3: il supporto touch screen è stato aggiunto agli oggetti Canvas. Praticamente immagini cursori e altri elementi grafici riconoscono l’imput tocco. Ora anche altri elementi User Interface come testi, listbox, moduli (application manager, calendario, contatti, messaggistica, gestione multimediale, log, ecc), funzionano a dovere su interfaccia touch screen.
1.9.4: Nokia ha signato un unico pacchetto software installabile su tutti i dispositivi S60 3rd e 5th edition. Nuove funzionalità e miglioramenti in stabilità, sono state aggiunte Nuove API (Application Programming Interface, set di istruzioni che permettono al programmatore di aggregarsi con il software ad Hardware o livelli di software superiore, presenti in un sistema), novità per quel ch riguarda il pacchetto d’installazione, ScriptShell compatibile con l’interfaccia touch screen.
1.9.5: minor update, fondamentalmente è stata aumentata la heap-size di default per le applicazioni in Python, da  100k,4M a 4k,1M; un’opzione “Continue with missing dependencies”, è stata implementata nel packaging tool. Abilitando questa opzione, le dipendenze perse verranno mostrate come pericoli e si continuerà con la generazione del SIS. Ulteriormente sono stati corretti alcuni bug.
1.9.6: rappresenta un minor update ricco di bugfix e una nuova caratteristica: un D-pad virtuale che compare sul fondo dello schermo dei dispositivi touch screen. E’ un’impostazione di default che disabilita, in questa versione, la visualizzazione a schermo intero delle applicazioni. Tale carattersistica è supportata solo nella modalità di orientamento display in landscape.
1.9.7: Tra le nuove, aggiunto il supporto touch screen per l’interfaccia di controllo degli elementi canvas (rendering dinamico di una bitmap). Un Pad direzionale viene visualizzato per impostazione predefinita sui dispositivi touch screen abilitati. Un esempio tipico è dato dall’ applicazione – gles_touch_demo.py, avviabile tramite la ScriptShell e che dimostra tale funzionalità; le opzioni di selezione multipla sono cambiate: “opzioni” per “seleziona/deseleziona” e “indietro” per tornare sulla lista; il Pad direzionale, supporta la modalità di visualizzazione in landscape; aggiunte nuove API canvas (”begin_redraw” e “end_redraw”); miglioramenti anche per l’applicazione “Scribble”.

Occorre installare prima l’interprete e poi la relativa ScriptShell, e si può scegliere di installare il tutto,  sulla memory card o sulla memoria telefono (ovviamente date ad entrambe la stessa destinazione). Consigliato tuttavia optare per la memoria telfono. Sembra che le vecchie versioni installate si sovrascrivino, forse tuttavia opportuna la rimozione prima di aggiornare.
Dwnload Python 1.9.7 beta (Interprete+Scriptshell)
  • Python_1.9.7 per tutti gli S60 3rd edition e 5th edition
  • Python ScriptShell per tutti gli S60 3rd edition e 5th edition
Dwnload Python 1.9.6 beta (Interprete+Scriptshell)
  • Python_1.9.6 per tutti gli S60 3rd edition e 5th edition
  • Python ScriptShell per tutti gli S60 3rd edition e 5th edition
UPDATE: Python 1.9.6 fixed
Qui le release notes
Dwnload Python 1.9.5 beta (Interprete+Scriptshell)
  • Python_1.9.5 per tutti gli S60 3rd edition e 5th edition
  • PythonScriptShell_3rdEd per tutti gli S60 3rd edition
  • PythonScriptShell_5thed per tutti gli S60 5th edition
Di seguito tutti i downloads
Qui le release notes
Dwnload Python 1.9.4 beta (Interprete+Scriptshell)
QUI le release notes
Download Python 1.9.3 beta (Interprete+ScriptShell)
Esiste un pacchetto d’installazione  dedicato ai Symbian S60 3rd edition e 3rd edition FP1 e un pacchetto d’intallazione dedicato ai Symbian S60 3rd edition FP2 e 5th edition. Dunque seguite l’ordine di installazione e di compatibilità per il dispositivo opportuno come seguentemente schematizzato:
1) PyS60 (l’interprete)
  • Python_1.9.3_3rdEd.sis per 3rd edition e 3rd edition FP1
  • Python_1.9.3_5thEd.sis per 3rd edition FP2 e 5th edition
2) Python ScriptShell (un ambiente di lavoro per le linee di comando)
  • PythonScriptShell_1.9.3_3rdEd.sis per 3rd edition e 3rd edition FP1
  • PythonScriptShell_1.9.3_5thEdFP2.sis per 3rd edition FP2 e 5th edition
Di seguito tutti i downloads
Qui le release notes
Di seguito il download delle precedenti beta e dell’SDK


Differenza tra versioni singed ed unsigned: facilitando e riferendomi alla questione delle certificazioni in termini di protezione, introdotta a partire dai dispositivi Symbian S60 3rd edition, vi posso dire che la versione unsigned garantisce un accesso standard alle funzioni del dispositivo, “user-grantable”, mentre la versione signed, appunto da certificare garantisce un accesso pi invasivo alle funzioni del dispositivo, dunque aumentano le possibilità di script e le possibilità di compatibilità per le applicazioni scritte in Python.
Versione Stabile
La versione stabile dell’interprete e la relativa schell è invece la 1.4.5. Come sempre installare prima l’interprete PythonForS60 (PyS60) e successivamente la relativa ScriptShell.
Per questa versione l’installazione è obbligatoriamente da effettuarsi sulla memoria telefono, le vecchie versioni installate non si sovrascrivono, dunque rimuoverle prima di aggiornare.
Qui  i downloads per tutti i 3rd edition (anche FP1 e FP2).
  • Python for S60 1.4.5

  • Python Script Shell 1.4.5

Questa versione non è ufficialmente compatibile con i 5th edition.
Qui  i downloads per tutti i 2nd edition
  • Python for S60 1.4.5 e Python Script Shell 1.4.5

per
Symbian S60 2nd Edition Feature Pack 1 (Symbian OS v7.0s)
6600, 6620, 3230, 6670, 6260, 7610
Symbian S60 2nd Edition Feature Pack 2 (Symbian OS v8.0a)
6630, 6680, 6682, 6681
Symbian S60 2nd Edition Feature Pack 3 (Symbian OS v8.1a)
N70, N90, N72
QUI le RELEASE NOTES
Esiste per i 3rd edition anche un MegaPyModulePack (ultima versione 2.01, non testata su 5th edition), forse una raccolta di librerie, che occorre  installare per far funzionare alcune applicazioni.
Qui il download, per l’installazione del MegaPyModulePack occorre certificazione

Una volta che sul dispositivo sono presenti interprete e relativa scriptshell è possibile utilizzare sui dispositivi le applicazioni scritte in Python, esattamente come si utilizziamo tutte le altre. Quasi sempre il sorgente per l’installazione delle applicazioni in Python è un .sis, dunque da installarsi alla consueta maniera, ovvero inviando il file sul telefono tramite bluetooth e facendo per aprirlo in messaggi al fine di avviarne l’installazione, oppure trasferendolo sul dispositivo  con la modalità archiviazione di massa, e dunque facendo per aprirlo dal file browser del telefono al fine di avviarne l’installazione. Oppure si può utilizzare comodamente Nokia PC Suite. Rarissime volte possiamo trovarci di fronte ad un file .py (uno script). In questo caso,trasferite il file sulla memory card e tornando poi sul dispositivo,  utilizzare un’applicazione file browser del tipo X-plore, per destinarlo all’interno del seguente percorso: C:/System/Apps/Python. Questo per quanto riguarda i 2nd edition. Per quanto riguarda invece i 3rd edition il percorso di destinazione è il seguente: E:/data/python (occorre aver installato Python e relativa ScriptShell sulla memory card). Quando il sorgente dell’applicazione è un .py occorre avviarne l’esecuzione dallo Scrypt (icona python che compare tra le applicazioni del dispositivo) facendo OPZIONI-RUN SCRIPT.
Molte applicazioni in Python compatibili con dispositivi Sybian S60 3rd edition FP1 che vertono a sfruttare le funzioni dell’accelerometro integrato (ovviamente per i dispositivi che ne sono dotati. L’accelerometro è una componente hardware che rivela l’orientamento del dispositivo nello spazio e permette funzioni come la rotazione dello schermo in landscape o protrait a seconda che il dispositivo sia orientato in posizione verticale o orizzontale), non funzionano sui 3rd edition FP2 e superiori. Questo perché il software per il funzionamento dell’accelerometro è diverso tra le due generazioni di Symbian (quello dei Symbian S60 3rd edition FP2 si basa su librerie S60 Sensor Frameworks. Quello dei 3rd edition FP1 si basa su di un plug in).
Per far funzionare l’accelerometro sui dipositivi 3rd edition FP1 occorre aggiornare il firmware alle ultime versioni oppure installare il suddetto plug-in



Python Documentation