Como imprimir en impresora (Miniprinter) desde Python en Linux

Via MrTopf
Como en muchas otras cosas, apenas soy un novato y hay muchas formas de hacer lo que expongo en el titulo, está podría no ser la mejor, pero es una de ellas y por supuesto gracias a @Jorgekbw3 que encontró la solución:
Después de haber instalado la impresora en cuestión y haberla colocado como predeterminada con el administrador de impresoras, ya debe ser accesible a impresión con el comando
lp texto.txt
Bajo ese principio accesaremos al sistema desde python con
import os
printer=os.popen('lpr','w')
printer.write('texto')
printer.close()
Y eso es todo.
Probado con Ubuntu 10.10, Python 2.6 y Miniprinter Epson TM-T88V
Entorno de desarrollo para Symbian en Linux

Recientemente he tenido interés en desarrollar una aplicación para móviles symbian con Python for S60 tambien conocido como Pys60, cabe mencionar que soy novato en esto y no tengo idea de como la mayoria de los desarrolladores tienen configurado su entorno.
En el articulo anterior expliqué como Conectar Nokia 5530 por bluetooth y RFComm para desarrollo en Python en Ubuntu 10.04 pero al funcionar en la consola de linux no es practico estar viendo o estar ejecutando el codigo al vuelo, así que expongo lo que creo es una mejor manera.
También descarté usar el emulador de symbian para Windows (tristemente no hay emulador para linux, y no parece que vaya haber pronto) ya que parece lento y pienso que si vamos a batallar lo mismo correr el script en el emulador que en el mismo celular ¿que mejor que hacerlo en el celular?.
Interprete Python para Symbian
Para que una aplicacion hecha en python funcione en el celular de manera comercial necesita elaborarse un paquete .sis, de otra manera si intentas ejecutar un .py lo va a leer como archivo de texto, para eso se ocupa el interprete Python (Python_2.0.0.sis) y el PythonScriptShell(PythonScriptShell_2.0.0_3_2.sis) eso se descarga desde https://garage.maemo.org/projects/pys60/ (PythonForS60_2.0.0.tar.gz) ambos se encuentran en el directorio /PythonForS60/PyS60Dependencies/. Pasan los archivos al celular y los ejecutan en el siguiente orden Python primero y despues el PythonScriptShell.
Conexion PC - Celular
Ubuntu linux viene preparado para conectar por bluetooth y tener acceso a los archivos para eso vamos a dar en el icono de bluetooth y 'Configurar un dispositivo nuevo', seguimos los pasos indicados en el que tendremos que proporcionar la clave provista por ubuntu desde el celular.
Despues de emparejar el celular ocupamos saber la direccion de la carpeta a la que tiene acceso el interprete python, que suele ser /data/python, para eso vamos a entrar desde el navegador de archivos dando clic en el icono de bluetooth de nuevo y luego, examinar los archivos en el dispositivo, buscamos el directorio de python y una vez ahí veremos varios archivos .py de demostracion, estamos en la carpeta correcta, ahora presionamos las teclas Ctrl + L para saber la direccion y nos debe aparecer algo similar a esto en la parte superior
obex://[00:BD:3A:70:9B:EB]/E:/data/python

En la barra de direcciones después de presionar Ctrl + L estará la dirección que necesitaremos mas adelante.
Sincronizacion
Suponiendo que la carpeta del proyecto y todo el entorno python ya lo tenemos instalado en la computadora, procederemos a hacer una sincronizacion, para eso utilizo el programa Conduit que es bastante practico, ligero, eficiente y lo podemos descargar desde los repositorios, nosotros solo utilizaremos sincronizacion de una direccion entre carpetas, primero arrastramos una 'Carpeta' desde 'Files and Folders' hacia la derecha le damos clic derecho al elemento y luego en 'Configure Item' , seleccionamos la carpeta donde tenemos nuestro proyecto, dejando desmarcadas las opciones avanzadas presionamos cerrar, luego añadimos otra carpeta del lado derecho de la carpeta que recien creamos y ponemos la direccion obtenida en el paso de Conexion PC - Celular dando clic donde está el icono del lapiz.
Despues de eso ya está configurado todo, pero para eficiencia daremos clic derecho sobre la linea negra que une las dos carpetas y nos vamos a 'Sincronization Options' y luego en 'Always Up to Date' con eso en cuanto guardemos el archivo empezará la sincronizacion, que apenas tarda algunos segundos.
Y eso es todo, si tienes alguna duda o crees que hace falta algo puedes dejarlo en los comentarios.
Enlaces
Conectar Nokia 5530 por bluetooth y RFComm para desarrollo en Python en Ubuntu 10.04
Primero que nada la mejor documentacion está en ingles en el wiki de desarrollo de Nokia http://wiki.opensource.nokia.com/projects/PyS60_Bluetooth_console
Este entorno ha funcionado en Ubuntu 10.04 con un Nokia 5530 y el python 2.0.0 de symbian.
Instalar librerias
Las librerias necesarias son
- 'hcitool' para encontrar el dispositivo
- 'sdptool' y 'sdpd' para registrar los puertos seriales que se van a utilizar
- 'rfcomm' para emular el puerto serial sobre bluetooth
- ''screen" para empezar a mandar datos por terminal
Instrucciones
Conectar el adaptador bluetooth y luego en la consola escribir:
$ hciconfig reset
Luego comprobar que el dispositivo se instaló o lo detectó bien
$ hcitool dev
Registrar el puerto serial (usar el canal 2. Por alguna razon, el canal 1 y 3 puede no funcionar la conexion)
$ sdptool add --channel=2 SP
Ahora poner el canal en escucha
$ rfcomm listen rfcomm2 2
Ahora asegurarte que el bluetooth en tu celular esté encendido, e ir a la aplicacion de Python y luego en las opciones seleccionar Bluetooth Console. Seleccionar los dispositivos disponibles ( en mi caso default host), si la operación es exitosa deberias ver lo siguiente en tu consola.
Waiting for conection on channel 2
Connection from 00:00:00:00:00:00 to /dev/rfcomm2
Press CTRL-C for hangup
Ahora abre otra terminal y escribe:
$ screen /dev/rfcomm2
Eso sería todo, la consola se debería poner limpia y ya deberias poder empezar a escribir tu codigo en python.
Happy Coding
Enlaces
Bluetooth Console
Enviar archivo a travez de bluetooth y python en linux ubuntu
Primero que nada para empezar a trabajar ocupamos las herramientas, para eso necesitamos tener instalado la librería lightblue para python esto lo podemos lograr con
sudo apt-get install lightblue
también hay otras librerias que se necesitan pero seguramente ya las tienes instaladas.
Ahora ya solo corre la consola de python, abre una terminal escribe python y listo.
import lightblue lightblue.finddevices() # devolverá la mac y nombre de los dispositivos detectados lightblue.findservices() #devolverá la mac, canal y protocolo de comunicacion disponibles de los dispositivos, yo usé el canal 9 que dice OBEX Object Push cliente = lightblue.obex.OBEXClient('00:1A:DC:8C:51:2D',9) #creamos la variable con la direccion mac y el canal del dispositivo cliente.connect() #nos conectamos al dispositivo nos aparecerá una respuesta como esta #<OBEXResponse reason='OK' code=0x20 (0xa0) headers={}> putresponse = cliente.put({"name": "b.txt"}, file("b.txt", 'rb')) #especificamos que le enviamos al cliente cliente.disconnect()
Y listo con eso abremos enviado un archivo de nota al teléfono en mi caso ya estaba como amistoso, desconozco si se puede con dispositivos desconocidos o como será la respuesta.
Desarrollo de Videojuegos en 3d
Siempre ha sido mi sueño desarrollar videojuegos, y se que debo de aprender muchas cosas antes de aventarme al 3d, pero aprovechando las vacaciones otra vez retomé ese tema, y leí acerca de diversos Game Engines en comparativa, (En Ingles) y de hecho está ordenado por lugares, y Panda3d ni siquiera está en la lista.
No tengo idea de que hacer mis pruebas o videojuego, pero las características que tendré serán:
- Prototiparé yo solo para todo.
- No soy buen diseñador.
- Facilidad.
- Soy Newbie.
Por esa razón he decidido que utilizaré Panda3d, que aunque la galería de imágenes me parecieron "feas" me servirá de aprendizaje, ya que tengo conocimiento nulo de python y todo el entorno. También fue diseñado para tener una curva de aprendizaje rápida. Entonces una vez que aprenda me pasaré a otros engines mas populares.
Referencias.
Nuclex .com Siete motores para juegos que deberias conocer.
