Professional Documents
Culture Documents
Comenzando a programar
Prctica a
Conclusiones
logo
Cmputo Mvil o o
Comenzando a programar
Prctica a
Conclusiones
Contenido
Prctica a Prctica a
Conclusiones
logo
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
Comenzando a programar
Prctica a
Conclusiones
Contenido
Prctica a Prctica a
Conclusiones
logo
Cmputo Mvil o o
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
logo
Cmputo Mvil o o
Comenzando a programar
Prctica a
Conclusiones
logo
Cmputo Mvil o o
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
""" 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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
Comenzando a programar
Prctica a
Conclusiones
logo
Cmputo Mvil o o
Comenzando a programar
Prctica a
Conclusiones
Contenido
Prctica a Prctica a
Conclusiones
logo
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
logo
Cmputo Mvil o o
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!
logo
Cmputo Mvil o o
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
Cmputo Mvil o o
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!
logo
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
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
Cmputo Mvil o o
Comenzando a programar
Prctica a
Conclusiones
Contenido
Prctica a Prctica a
Conclusiones
logo
Cmputo Mvil o o
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
Cmputo Mvil o o