domingo, 12 de diciembre de 2010

Python: enviando texto a otra ventana

Continuando con la tarea de la anterior entrada, el texto recogido por la respuesta del dispositivo conectado al puerto serie necesita ser enviado a un campo de formulario de otra aplicación. Esto ya en Windows.

En este caso he echado mano de la librería SendKeys para Python 2.6. Aquí está toda la documentación para entender cómo funciona.

La escena viene a ser: tengo un programa abierto a cuyo código fuente no tengo acceso, y necesito leer la respuesta de un dispositivo conectado por el puerto serie al equipo. Con el script de la entrada anterior tengo el texto de la respuesta, y el siguiente paso es enviar ese texto al programa citado antes.

La solución: SendKeys. Envíar o simular señales de teclas usando API's de Windows. Pensé que si ejecutaba script con una combinación de teclas, teniendo el foco en el campo del formulario donde quiero recibir el texto, luego valdría con enviar las señales de ALT+TAB seguidas de aquellas que compongan la respuesta recibida del dispositivo externo.

No sé si será el método más ortodoxo, pero funciona a la perfección :)

import SendKeys
texto = "prueba"
SendKeys.SendKeys("""%{TAB}""" + texto)

Python y el puerto serie

Estos últimos días he necesitado comunicarme con un dispositivo a través de un puerto serie. Como python y yo teníamos una conversación pendiente he aprovechado esta tarea para hacer mis primeros pinitos con este lenguaje tan interesante.

Para el que, como yo, no conozca nada de Python, la página de wikipedia en español tiene muchísima información que permite al menos soltarte las manos y tontear un poco antes de ponerte con algo "serio". Información con más profundidad se puede encontrar en su manual de referencia.

Para conseguir mi objetivo he usado la librería pySerial. En este enlace se encuentra toda su documentación. Muy detallada y con ejemplos útiles.

En primer lugar y por probar he hecho un script que escanea la disponibilidad de los puertos del sistema. No tiene mucha historia, por lo que se entiende fácilmente.

import serial

disponibles = []

for i in range(10):
    try:
        s = serial.Serial(i)
        disponibles.append((i, s.portstr))
        s.close()
    except:
        pass
       
print "Puertos disponibles: "
for numpuerto,nombre in disponibles:
    print "%d -> %s" % (numpuerto, nombre)


Veamos el resultado:


En mi sistema se han encontrado cuatro puertos serie disponibles. Con el siguiente script se consigue enviar una cadena de texto por un puerto elegido y recibir una respuesta... si es que la hay.

import serial
import sys

#-- Se abre el puerto elegido y se establece el tiempo de espera máximo
try:
    s = serial.Serial(1)
    s.timeout=2;
except serial.SerialException:
    print "Error al abrir el puerto."
    sys.exit()
   
# Se envía el texto
texto = "Texto a enviar"
s.write(texto)

# Se recibe la respuesta del dispositivo 

# 10 son los bytes máximos que se esperan 
respuesta=s.read(10);

if len(respuesta)>0 :
    print "Respuesta: " + respuesta
else:
    print "Tiempo de espera agotado."




Sí. Habría sido más interesante tener algún dispositivo que respondiera y así poder tratar su respuesta o configurar parámetros del puerto con más detalle, o que al menos hiciera eco. La próxima vez será :)

miércoles, 8 de diciembre de 2010

Servicios con sysv-rc-conf

Este comando sirve para administrar el nivel de ejecución de los servicios en el inicio del sistema o bien pararlos o ejecutarlos cuando sea necesario. Puede usarse su interfaz en consola o usar sus opciones por comandos, pero generalmente es más útil lo primero.


La interfaz es muy sencilla, presentando todos los procesos disponibles en la columna izquierda y los diferentes niveles de ejecución seguidos.

Se encuentra disponible en los repositorios oficiales de ubuntu.

# apt-get install sysv-rc-conf
# sysv-rc-conf

martes, 30 de noviembre de 2010

Ficciones

Los espejos y la cópula son abominables, pues multiplican el número de los hombres.
Tlön, Uqbar, Orbis Tertius. Ficciones. Jorge Luis Borges.

lunes, 29 de noviembre de 2010

El lobo estepario

Pensaba describir a Harry Haller, decir quién es y debido a qué es el protagonista de esta obra... pero existiendo el tractac del lobo estepario mi esfuerzo sería inútil :)

Érase una vez un individuo, de nombre Harry, llamado el lobo estepario. Andaba en dos pies, llevaba vestidos y era un hombre, pero en el fondo era, en verdad, un lobo estepario. Había aprendido mucho de lo que las personas con buen entendimiento pueden aprender, y era un hombre bastante inteligente. Pero lo que no había aprendido era una cosa: a estar satisfecho de si mismo y de su vida. Esto no pudo conseguirlo. Acaso ello proviniera de que en el fondo de su corazón sabia (o creía saber) en todo momento que no era realmente un ser humano, sino un lobo de la estepa.

[...]

Pero lo que él dentro de sí llama "hombre", en contraposición a su "lobo", no es, en gran parte, otra cosa más que precisamente aquel "hombre" mediocre del convencionalismo burgués. El camino al verdadero hombre, el camino a los inmortales, no deja Harry de adivinarlo perfectamente y lo recorre también aquí y allá con timidez muy poco a poco, pagando esto con graves tormentos, con aislamiento doloroso.

La lectura está dividida en cuatro secciones. La primera es una introducción en la que Harry se nos presenta como un ser culto, deprimido y melancólico, alejado de los placeres de la burguesía a causa de la incompatibilidad de ésta con su espíritu.

Durante la segunda Harry establece un primer contacto con el Teatro Mágico, pero no logra encontrarlo. Al final un misterioso personaje le da un aún más misterioso folleto: el "tractac del lobo estepario", cuyo contenido íntegro es la tercera parte, que resulta ser una especie de profundo análisis psicológico de la lucha interna del hombre y el lobo estepario que sufre el protagonista.

Ya en la última, más extensa y espesa parte del libro una serie de sucesos acaba haciendo que Harry encuentre por fin el Teatro Mágico, que no es más que una lucha interna en la que aprenderá que no todo es hombre y lobo, sino que en función de las circunstancias de la vida hay que saber usar una personalidad, como si la misma vida fuese un tablero de ajedrez.

Dejo por aquí algún fragmento que me ha llamado especialmente la atención:

-¡Je,je! Hijo mío, te estás haciendo un lío, y no dices ni pío. ¿Piensas en tus lectores, sufridos pecadores, los ávidos roedores? ¿Piensas en tus cajistas y linotipistas, herejes y anabaptistas, cizañeros y trapisondistas, y no más que medianos artistas? Me da mucha risa tu angustia imprecisa, tu torpe sonrisa; ¡es para morirse de risa y como para hacérselo en la camisa! veo tu lucha incruenta con la tinta de imprenta, con tu pena violenta, y por evitarte la afrenta, aunque sea una broma tremenda, voy a hacerte de un cirio la ofrenda. ¡Vaya un galimatías que te has armado; te sientes ridículo, desgraciado, y estás en evidencia y condenado y ante tus propios ojos menospreciado! No sabes qué hacer ni qué emprender. Con Dios logres quedarte, pero el diablo vendrá a llevarte, y a zurrarte y a apalearte, por tu literatura y arte, como que todo lo has aprendido en cualquier parte.

Toda especie humana tiene sus caracteres, sus sellos, cada una de sus virtudes y sus vicios, su pecado mortal. A los caracteres del lobo estepario pertenecía el que era un hombre nocturno. La mañana era para él una mala parte del día, que le asustaba y que nunca le trajo nada agradable. Nunca estuvo verdaderamente contento en una mañana cualquiera de su vida, nunca hizo nada bueno en las horas anteriores al mediodía.

Soledad era independencia, yo me la había deseado, y la había conseguido al cabo de largos años. Era fría, es cierto, pero también era tranquila, maravillosamente tranquila y grande, como el tranquilo espacio frío en el que se mueven las estrellas.

El que haya querido los otros días, los malos, los de los ataques de gota o los del maligno dolor de cabeza clavado detrás de los globos de los ojos, y convirtiendo, por arte del diablo, toda actividad de la vista y del oído de una satisfacción en un tormento, o aquellos días de la agonía del espíritu, aquellos días terribles del vacío interior y de la desesperanza, en los cuales, en medio de la tierra destruida y esquilmada por las sociedades anónimas, nos salen al paso, con sus muecas como un vomitivo, la humanidad y la llamada cultura con su fementido brillo de feria, ordinario y de hojalata, concentrado todo y llevado al colmo de lo insoportable dentro del propio yo enfermo; el que haya querido aquellos días infernales, ése ha de estar muy contento con estos días normales y mediocres como el de hoy; lleno de agradecimiento se sentará junto a la amable chimenea y con agradecimiento comprobará, al leer el periódico de la mañana, que no se ha declarado ninguna nueva guerra ni se ha erigido en ninguna parte ninguna nueva dictadura, ni se ha descubierto en política ni en el mundo de los negocios ningún chanchullo de importancia especial; con agradecimiento habrá de templar las cuerdas de su lira enmohecida para entonar un salmo de gratitud mesurado, regularmente alegre y casi placentero, con el que aburrir a su callado y tranquilo dios contentadizo y mediocre, como anestesiado con un poco de bromuro; y en el ambiente de tibia pesadez de este aburrimiento medio satisfecho, de esta carencia de dolor tan de agradecer, se parecen los dos como hermanos gemelos, el monótono y adormilado dios de la mediocridad y el hombre mediocre algo encanecido que entona el salmo amortiguado.

Solo para locos. No para cualquiera.

lunes, 30 de agosto de 2010

La lluvia amarilla

Hace unos días cayó en mis manos un libro titulado "La lluvia amarilla", de Julio Llamazares.

Escrito en forma de monólogo, asistimos al paso de los años en las etapas finales de la vida del último habitante de un pueblo abandonado en los Pirineos llamado Ainielle. El escritor consigue crear una atmósfera de angustia, tristeza y melancolía unida al protagonista al ir recordando los hechos más importantes relacionados con la decadencia del pueblo y sus antiguos habitantes, a la vez que lidia con el tiempo, su soledad y la destrucción de su memoria, con la única compañía de su perra.

Resulta ser una obra triste, triste y cruda, pero a la vez preciosa y con mucho encanto; existen multitud de frases, párrafos, o incluso capítulos enteros que merecen ser leídos más de una vez por su profundidad, complejidad y belleza.

Próxima parada: El lobo estepario, de Hermann Hesse :)

miércoles, 4 de agosto de 2010

Carta blanca

Hace unas horas terminé de leer Carta blanca, de Lorenzo Silva, que llegó a mí de manos de un buen amigo. Me ha resultado una lectura muy placentera por el realismo con el que relata los duros hechos que ocurren a lo largo de la historia, destacando los que ocurren en la primera y tercera parte de las tres divisiones de la novela, así como la capacidad del autor para envolver al lector en los escenarios en los que tienen lugar los acontecimientos y en la piel de los personajes.

La primera etapa transcurre en la Guerra de Marruecos, con Faura como un legionario novato pero muy preciso con el fusil, atormentado por un pasado tan oscuro como la noche en que parte hacia una encrucijada que dejará una mella imborrable en su conciencia.

Para la segunda parte se nos reserva el verdadero núcleo de la novela, la definición y evolución del personaje protagonista. No digo nada porque todo lo que ocurre y se cuenta es clave.

En la tercera se nos sitúa en los años treinta, en plena Guerra Civil. Faura sigue carente de paz interior, ve en el hecho de verse envuelto en la defensa de Badajoz una posibilidad de hacer algo para huir de su pasado y, quién sabe, poder vivir por fin en paz consigo mismo.