Lector XML Rocrail con Python
Este verano y siguiendo con Rocrail, me ha dado por tocar un poco del lenguaje de programación Python.
Y pensado que hacer con respecto a nuestras maquetas me di cuenta de que no era cómodo tener que estar abriendo Rocrail cada vez que quiero saber algo de la maqueta como por ejemplo, la dirección de un desvío.
Tenemos toda esa información en el archivo XML del plan de vías donde se almacenan los elementos de la maqueta.
Vi que era relativamente sencillo hacer un pequeño programa que mostrara la información más relevante como las direcciones de locomotoras y de los diferentes elementos de la maqueta como desvíos, sensores, bloques etc.., así que me puse manos a la obra.
La verdad no estoy acostumbrado a Python, pero fue bastante “sencillo” hacer todo el programa con los tutoriales de la web y Youtube.
Así que después de unos días de pruebas conseguí un programa que muestra:
- Plan
- Locomotoras
- Desvíos
- Vías
- Bloques
- Sensores
- Señales
- Textos
El programa es muy sencillo y está hecho con la librería Tkinter para la interfaz y xml.dom.minidom para la lectura de la base de datos en formato XML.
Podemos instalar Tkinter ubuntu con el comando:
sudo apt install python3-tk
Muestra el nombre del plan y sus atributos:
- Nombre del plan
- Directorio donde esta ubicado el plan
- Escala
- Versión de Rocrail
- Arquitectura del sistema
- Sistema operativo

Muestra lista de sensores y sus atributos.
- Nombre del sensor
- Descripción
- Interface DCC
- Dirección
- Estado
- Tipo de sensor
- Registro de disparos
- Temporización
- Contador de activación
- ¿Carretera?
- ¿Curva?
- Orientación
- Operable

Atributos de la lista de las locomotoras:
- Nombre de la locomotora
- Interfaz DCC
- Dirección DCC
- Pasos
- Color
- Visible?
- Uso de horario
- Vel. mínima, vel. media, vel. máxima
- Tipo de locomotora
- Número de ejes
- Nombre de la imagen
- Descripción
Como con los módulos tengo varias configuraciones de maqueta tengo varias bases de datos y de esta manera puedo ver los diferentes elementos que son comunes en ellas como las locomotoras y los diferentes desvíos.
Rocrail abarca una gran cantidad de atributos en cada elemento así que solo he puesto los que creo son más relevantes en cada elemento.
También se le pueden añadir los atributos que queramos, solo tenemos que poner el nombre del campo en:
variable_atributo = item.getAttribute('nombre_del_atributo')y en la misma función añadir la variable al texto:
token_ = ( 'Item: ' + token_name
+ '\nType: ' + token_type + '\nnuevo_atributo: '+ variable_atributo
)Próximamente me gustaría añadir unos botones para aumentar o disminuir el tamaño de la letra.
