En ratos libres, sigo jugando con Python en el móvil. Y ya tocaba probar la consola de Python del móvil a través de Bluetooth.
O sea, hasta ahora había jugado o bien desde el móvil diréctamente (cuando no tenía el ordenador a mano), o bien desde el ordenador, escribiendo la prueba, mandándola al móvil por bluetooth, y desde ahí ejecutándola. Pero una de las cosas que más me gusta de Python es el hecho de que tenga una consola interactiva, en la que puedas ir escribiendo código y viendo su efecto en ejecución, y por eso también me mola por ejemplo jython cuando tengo que programar en Java, para tareas como probar de manera más intuitiva el resultado de determinadas librerías.
Y el intérprete de Python de Nokia para Symbian, pues tiene una opción de “Bluetooth console”, que lo que hace es establecer una conexión bluetooth con el ordenador y emular una comunicación de puerto serie, de manera que con un programa como minicom puedes tener abierta una consola de Python del móvil en el ordenador.
Para hacerlo, hay documentación en varios sitios, que resumido:
En /etc/bluetooth/rfcomm.conf tengo:
rfcomm0 {
bind no;
device 00:13:fd:b8:52:d5;
channel 1;
comment "Example Bluetooth device";
}
Y luego, pues ejecuto:
# /etc/init.d/bluez-utils restart # sdptool add --channel=1 SP # rfcomm listen /dev/rfcomm0
desde el móvil, ejecuto en python lo de “Bluetooth Console”, y veo en el donde había puesto lo de rfcomm:
Connection from 00:13:FD:B8:52:D5 to /dev/rfcomm0 Press CTRL-C for hangup
Entonces, ya:
$ minicom -m
que previamente habré configurado para que tire de /dev/rfcomm0 haciendo:
$ minicom -m -s
Y me dice que iniciando modem y luego ya:
>>> AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0 File "“, line 1 AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0 ^ SyntaxError: invalid syntax >>> print “hola mundo” hola mundo >>>
Lo primero no tengo la menor idea de por qué sale, pero paso de buscar :-)
Y eso, todo lo que vas ejecutando lo está ejecutando el móvil, con lo que si haces:
>>> import appuifw >>> appuifw.note(u'Hola',u'info')
pues te aparece un bonito “Hola” en el móvil. Y el resto, pues sin más, puedes probar la API y librerías que metas.
Y Escape + X para salir.
Una cosilla que igual no mola mucho es que no he visto nada tipo sandbox. Porque cuando estuve en el codecamp, pude comprobar que puedo mandar SMSs o sacar fotos en dos o tres líneas:
>>> #Sacar foto
>>> import camera
>>> f = camera.take_photo()
>>> f.save('C:\prueba.png')
>>> #O bien en una línea
>>> __import__('camera').take_photo().save('C:\prueba.png')
o
>>> #Mandar un SMS
>>> import messaging
>>> messaging.sms_send(u"61235678",u"hola")
>>> #O bien en una línea
>>> __import__('messaging').sms_send(u'612345678',u'hola')
y el script se ejecuta y lo hace sin preguntar ni nada (hombre, ves por ahí el simbolito de que se está enviando un SMS… pero vamos, que no es mucho).
Por último, como curiosidad, Kalgan nos contó el otro día un par de huevos de pascua de Python:
>>> import this
y
>>> from __future__ import braces
que, curiosamente, la implementación de Nokia implementa también el segundo :-D pero no el primero.














