You are on page 1of 41

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Cmputo Mvil: Python para S60 o o


Dr. Gregorio Toscano Pulido
Centro de Investigacin y de Estudios Avanzados del IPN. o
Laboratorio de Tecnolog de Informacin as o

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Contenido

Python para S60 Introduccin o Instalar de PyS60 Emulador de PyS60

Comenzando a programar Interfaces grcas de usuario a

Prctica a Prctica a

Conclusiones

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

PyS60 Python para la Serie S60 (PyS60) es una versin modicada del o Python adaptada para la Serie S60 del sistema operativo Symbian usado en dispositivos mviles. o PyS60 est basado en Python 2.2.2. la cual apoya muchos de los a mdulos estndares de la biblioteca de Python pero tiene adems o a a algunos mdulos espec o cos de la plataforma mvil. o

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Mdulos espec o cos de PyS60 Widgets nativos del GUI, Bluetooth Establecimiento de una red de GPRS Informacin de la localizacin del G/M, o o Mensajer de SMS, a Acceso a la cmara fotogrca, etc.. a a

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Identicar la edicin del mvil o o Para identicar qu versin de S60 tienes, consulte las pginas e o a http://forum.nokia.com/devices/matrix_s60_1.html http://cyke64.googlepages.com/pys60distribution http: //en.wikipedia.org/wiki/Nokia_S60_and_Symbian_OS

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Instalacin PyS60 en el telfono o e Para ejecutar aplicaciones Python en un dispositivo S60 necesita: Instalar el interprete de Python: http://sourceforge.net/projects/pys60. Descargar el intrprete y el shell: e
El intrprete de Python: PythonForS60 1 4 0 3rdEd.sis. e El Scriptshell 1 4 0 3erEd.sis.

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Instalar PyS60 en el telfono e Instalar los archivos descargados en el telfono, en el siguiente e orden: primero PythonForS60, despus del ScriptShell. e
Nota: para dispositivos de la 3rd es necesario crear la capeta Python en la unidad e: (memoria adicional o disco duro del telfono) a donde se transferirn los scripts que se elaboren. e a

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Comandos utiles Para despliegue grco: konqueror sdp://[00:12:d2:61:b5:66]/ a hcitool dev hcitool scan sdptool records 00:12:D2:61:B5:66 obexfs -b 00:12:D2:61:B5:66 -B 11 mnt

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Emulador de PyS60 (pys60-compat) PyS60-compat es una biblioteca para emular el PyS60. Su funcionamiento est basado en wxPython-based. Dicha biblioteca a permite ejecutar diferentes scripts en sistemas operativos MacOSX y GNU/Linux originalmente diseados para ser ejecutados usando n pyS60. La biblioteca se encuentra en SourceForge bajo el nombre de PyS60 Emulation Library (pys60-compat) http://sourceforge.net/projects/pys60-compat/. Actualmente, incluye soporte para canvas y grcos (contribucin a o de Alexander Igonichev) y soporte de agenda (contribucin de Elvis o Pftzenreuter).
logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Emulador de PyS60 (pys60-compat) PyS60-compat necesita de wxPython http://pdis.hiit.fi/pdis/download/ para ser ejecutado. En debian, este paquete se conoce como python-wxgtkX.Y, donde X.Y son los nmeros correspondientes a la versin. u o Para instalar wxPyathon en Debian use: wajig install python-wxgtk

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Emulador de PyS60 (pys60-compat) Posteriormente, descargue pys60-compat de http://sourceforge.net/projects/pys60-compat/ y descompr malo en el directorio en donde estn sus ejemplos. En a caso de querer instalarlo para todos los usuarios, se debe descomprimir en /usr/lib/pythonX.Y, donde X.Y se reere a la versin que usa de python. Tambin, podr instalarse en o e a cualesquiera otro directorio que est aadido a PYTHONPATH. e n Posteriormente, puede ejecutar con python los scripts diseados n para S60. python snake.py
logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Contenido

Python para S60 Introduccin o Instalar de PyS60 Emulador de PyS60

Comenzando a programar Interfaces grcas de usuario a

Prctica a Prctica a

Conclusiones

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Interfaces grcas de usuario a A continuacin introduciremos las interfaces grcas de usuario o a bsicas: a
1 2

Entrada de un campo Salida de un mensaje

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Hola mundo, en texto


print "hola mundo!

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Hola mundo, en ventanas Sin embargo, podemos ocupar la biblioteca de python diseada n para S60 para realizar esta tarea. En este caso usaremos appuifw.note, que sigue la siguiente sintaxis: Syntaxis: note(text[, type[, globa]]])
import appuifw

appuifw.note(u"Hellow World!", "info")

""" NOTA: Las cadenas de texto deben de ser definidas como unicode: u"..." El mvi no puede desplegar los textos apropiadamente de otra o manera. """

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

appuifw.note Tambin podemos desplegar otro tipo de mensajes usando e appuifw.note Retomando la sintaxis de note, donde: text: indica el texto a desplegar. type: su valor por omisin es info.Sin embargo, se puede usar o info, error y conf

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Query Para introducir informacin de manera grca usamos la o a instruccin query, que obedece a la siguiente sintaxis: o Sintaxis: query(label, type[, initial value]) donde: label: indica la etiqueta de la pregunta. type: el tipo de dato a introducir. initial value: el valor inicial.

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Ejemplo de Query
import appuifw appuifw.query(u"introduce appuifw.query(u"introduce appuifw.query(u"introduce appuifw.query(u"introduce appuifw.query(u"introduce appuifw.query(u"te parece una palabra", "text") un nmero", "number") u una fecha", "date") una hora", "time") una contrase~a", "code") n interesante S60?", "query")

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Queries mltiples u Para introducir informacin a manera de mltiples queries, se usa o u multi query , que obedece a la siguiente sintaxis: Sintaxis: multi query(label1, label2) La instruccin regresa una tupla que contiene la lista de valores o entrados, separados por comas.

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

appuifw.multi query import appuifw tmpnombre=appuifw.multi_query(u"nombre:", u"appellidos:") if names: nombre,apellido=tmpnombre else: appuifw.note(u"Cancel!")

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

appuifw.popup A continuacin se muestra appuifw.popup, que despliega una lista o de opciones. Tiene la siguiente sintaxis: sintaxis: popu menu(opciones, ut tulo) Regresa el ndice de la opcin seleccionada: o
import appuifw opciones = [u"fretsonfire", u"buscanovios",u"nada"] indice= appuifw.popup_menu(opciones,u"Proyectos") if indice== 0: appuifw.note(u"buena eleccin") o elif indice== 1: appuifw.note(u"espero que te alcance") elif indice == 2: appuifw.note(u"definitivamente ests nominado") a

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

appuifw.selection list La funcin selection list ejecuta un dilogo que permite al usuario o a seleccionar un elemento de lista de entradas. Su sintaxis es la siguiente: sintaxis: appuifw.selection list(opciones, campos) Al igual que popup menu, regresa el ndice del campo escogido, en caso contrario regresa None. Y generalmente se ocupa para listas de opciones largas.
import appuifw bebidas=[u"cerveza",u"vino",u"mezcal", u"tequila"] indice=appuifw.selection_list(bebidas,1) if indice == 0: print "buena eleccin" o else: print "con "+bebidas[indice]+ " corres el riesgo de quedar ciego"

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

appuifw.multi selection list La funcin selection list ejecuta un dilogo que permite al usuario o a seleccionar varios elementos de una lista de entradas. Su sintaxis es la siguiente: sintaxis: appuifw.multi selection list(opciones[, estilo, u campo de bsqueda])
import appuifw bebidas=[u"cerveza",u"vino",u"mezcal", u"tequila"] seleccion=appuifw.multi_selection_list(bebidas,checkbox,1) print "bebidas seleccionadas: "+seleccion

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Programa que identica si una palabra es pal ndrome (no funciona)


import appuifw palabra = appuifw.query(u"Introduzca una palabra:", "text") if palabra == palabra[::-1]: appuifw.note(u"La palabra: " + palabra+ " SI es un palindrome", "info") else: appuifw.note(u"La palabra: " + palabra+ " NO es un palindrome", "info")

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Contenido

Python para S60 Introduccin o Instalar de PyS60 Emulador de PyS60

Comenzando a programar Interfaces grcas de usuario a

Prctica a Prctica a

Conclusiones

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Ejemplos Realizar un programa que pida 10 nmeros por teclado e u imprima la sumadichos nmeros. u Implementar el programa anterior en PyS60, use como ejemplo:
import appuifw data = appuifw.query(uType a word:, text) appuifw.note(uThe typed word was: + data, info)

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Ejemplos Realice un programa que tome 5 fotos y las almacene en archivos numerados y que usen el formato JPG, use como ejemplo:
import appuifw import camera global scan_res scan_res= min(camera.image_sizes()) image= camera.take_photo(RGB,scan_res) filename = e:\\photo.jpg image.save( filename )

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Enviar mensaje
# Copyright (c) 2005 Jurgen Scheible # this script lets you send an sms to 2 users at the same time import appuifw import messaging data = appuifw.query(uType your name:, text) nbr1 = 123456 # change the mobile number here nbr2 = 234567 # change the mobile number here txt = uGreetings from: +data if appuifw.query(uSend message to your 2 friends,query) == True: messaging.sms_send(nbr1, txt) messaging.sms_send(nbr2, txt) appuifw.note(uMessages sent, info) else: appuifw.note(uWell, your Messages are not sent then, info)

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

# # # #

Copyright (c) 2006 Jurgen Scheible This script waits for an incoming sms, reads its content and shows it inside a pop-up note NOTE: PyS60 version 1.3.1 or higher is needed to run this script.

import inbox, e32, appuifw def read_sms(id): e32.ao_sleep(0.1) i=inbox.Inbox() sms_text = i.content(id) appuifw.note(usms content: + sms_text , info) i=inbox.Inbox() print send now sms to this phone i.bind(read_sms)

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Inbox objects have the following functions: sms messages() Returns a list of SMS message IDs in device inbox. content(sms id ) Retrieve the SMS message content in Unicode. time(sms id ) Retrieve the SMS message time of arrival in seconds since epoch. address(sms id ) Retrieve the SMS message sender address in Unicode.

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Inbox objects have the following functions: delete(sms id ) Delete the SMS message from inbox. unread(( )sms id) Returns the status (1=unread, 0=read) of the SMS with id. bind(callable) Bind a callback to receive new message events in device inbox. When a new message arrives to the device inbox the callback gets called with the received message ID. The received message can be other than an SMS message.

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Texto a voz
# # # # # Copyright (c) 2006 Jurgen Scheible This script performs a query with a single-field dialog (text input field) and lets the phone speak out the text (text to speech) that the users have typed in NOTE: this script runs only with Python S60 version 3.1.14 or above NOTE: this script doesnt work on all S60 phones neccessarily. Check your phone model if it has text to

import appuifw import audio text = appuifw.query(uType a word:, text) audio.say(text)

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Menu
# Copyright (c) 2006 Jurgen Scheible # this script lets you create a simple application menu # NOTE: # press the options key in order to open the applicaion menu # when running the script!

import appuifw, e32

def item1(): appuifw.note(uFoo, info)

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Menu
def item2(): appuifw.note(uOutch, info) def quit(): app_lock.signal() appuifw.app.menu = [(uone, item1), (utwo, item2)] appuifw.app.exit_key_handler = quit app_lock = e32.Ao_lock() app_lock.wait()

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

# Copyright (c) 2006 Jurgen Scheible # this script lets you create a simple application menu # NOTE: # press the options key in order to open the applicaion menu # when running the script!

import appuifw, e32, messaging

def item1(): appuifw.note(uFoo, info) def item2(): appuifw.note(uOutch, info)

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

def item3(): nbr1 = 3456 # add here a propper mobile number txt = uGreetings from Heaven messaging.sms_send(nbr1, txt) appuifw.note(uMessage sent, info) def quit(): app_lock.signal() appuifw.app.menu = [(uone, item1), (utwo, item2), (usend message, item3)] appuifw.app.exit_key_handler = quit app_lock = e32.Ao_lock() app_lock.wait()

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

# Copyright (c) 2006 Jurgen Scheible # Sound recording / playing script import appuifw, e32, audio

filename = e:\\boo.wav def recording(): global S S=audio.Sound.open(filename) S.record() print Recording on! To end it, select stop from menu!

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

def playing(): global S try: S=audio.Sound.open(filename) S.play() print Playing except: print Record first a sound! def closing(): global S S.stop() S.close() print Stopped

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

def quit(): script_lock.signal() appuifw.app.set_exit() appuifw.app.menu = [(uplay, playing), (urecord, recording), (ustop, closing)] appuifw.app.title = uSound recorder appuifw.app.exit_key_handler = quit script_lock = e32.Ao_lock() script_lock.wait()

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Contenido

Python para S60 Introduccin o Instalar de PyS60 Emulador de PyS60

Comenzando a programar Interfaces grcas de usuario a

Prctica a Prctica a

Conclusiones

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

Python para S60

Comenzando a programar

Prctica a

Conclusiones

Conclusiones Por otra parte, al trabajar con PyS60, encontramos: Pueden ser creadas aplicaciones de varios megabytes Permite acceder a caracter sticas multimedia y PIM del telfono. e Es fcil realizar programas que hagan uso de las a comunicaciones. Los programas en PyS60 son compactos y es rpido para a desarrollar aplicaciones. Hay una gran comunidad activa.

logo

Dr. Gregorio Toscano Pulido

Cmputo Mvil o o

You might also like