Re: MiBiciPublica (monitorizador de bicicletas públicas)
Publicado: 17 Abr 2011, 17:37
Aquí llega una versión diferente del programa.
Principales novedades:
- Ahora, siguiendo vuestros consejos, el usuario no debe seleccionar los números de estación que desea monitorizar, sino la dirección de la estación. Para ello debe seleccionar las estaciones deseadas en una lista en la pantalla de Configuración de Estaciones.
- Sustituida las búsquedas en archivos XML que utilizaba el include _XMLDomWrapper y la función XMLGet por la función StringRegExp, ya que viendo el funcionamiento y potencia de esta última función he visto que resulta más práctico buscar datos con ella en una página web.
- Monitorización de los sistemas de JcDecaux y BiciCard (del ITCL). De momento se ha suspendido el sistema de Bicing.cat, de Barcelona, porque se ha detectado que los datos de algunas estaciones que ofrece la página http://niwi-bicing.appspot.com/ no se actualizan constantemente, pudiendo haber pasado horas desde la última actualización.
Quedan cosas por depurar y mejorar, y con las pruebas que he realizado me surgen algunas preguntas que os lanzo a ver si podemos resolverlas:
1) Ahora estoy intentando utilizar _GUICtrlListView_AddArray en la función GUI_ConfiguraEstaciones_Filtrar() (Línea 1521) para mostrar los datos más rápidamente (sobretodo cuando hay muchas estaciones en una ciudad, como Valencia o París). Pero de momento me da el siguiente error en el propio include GuiListView.au3.
DllStructSetData($tBuffer, "Text", #aItems[$iI][0])
DllStructSetData($tBuffer, "Text", ^ERROR
2) Al probar en un portátil con un "tema de fondo" de Windows distinto al que tengo en el PC donde hago las pruebas, observo que las dimensiones de la ventana son distintas, y no caben bien los controles de las ventanas gráficas. Parece que los bordes y la barra de título tiene dimensiones distintas según el tema de fondo que tiene el usuario.
3) En las pruebas en el portátil, con conexión wi-fi, a veces, mientras actualiza la lista de la ventana principal, sale mensaje de que no hay conexión a internet, quizás deba hacer una espera mayor en la comprobación SiHayInternet()
4) En la pestaña de Configuración de Estaciones:
- A veces, al escribir en el cuadro de 'Buscar' el texto más rápido de lo que actualiza la lista, se rompe el programa.
- Al escribir en el cuadro de 'Buscar', tarda un poco en poderse hacer dobleclick en la lista de la izquierda para pasar a la lista de la derecha.
Esto último debe tener su razón en que en la función My_WM_COMMAND para $EN_CHANGE, tuve que poner un sleep(500) para evitar que al escribir muy rápido en el cuadro de texto no de tiempo a actualizar bien la $lw_direcciones_origen.
5) He detectado que, a veces, sin saber todavía por qué, el programa se rompe cuando se actualiza la lista de la ventana principal y a veces también en la función UnirMatriz(). Si se ejecuta de nuevo el programa, se muestra la lista correctamente.
6) En el proceso de limpieza del código que voy haciendo poco a poco, veo que se me quedan variables definidas y que al final no utilizo. En el foro inglés he leído que alguien utiliza un script externo que lista las variables utilizando StringRegExp. ¿Conocéis otra manera de detectar las variables que no se utilizan?
Por otro lado, hay cosas que mejorar como:
- Diseño de las pantallas
- Permitir que se cancele el relleno de lista de ventana principal
- Bloquear (disable) controles mientras se está haciendo alguna operación
- En la Configuración, advertir si se quiere salir de la ventana y no se ha guardado los cambios
- Dado que hay direcciones de estaciones que son muy largas, quizás se bueno cambiar el tamaño de $lw_direcciones_origen y $lw_direcciones_destino, haciéndolas más anchas y distribuyéndolas de forma horizontal.
- ...
Capturas de la última versión (EDITO 21/04/11: Las he puesto en el primer mensaje)
Cuando esté más depurado lo colgaré en el primer mensaje del hilo.
Gracias de nuevo por vuestras sugerencias, aportes y correcciones.
(EDITADO 21/04/2011: Ver última versión al final del primer mensaje)
Principales novedades:
- Ahora, siguiendo vuestros consejos, el usuario no debe seleccionar los números de estación que desea monitorizar, sino la dirección de la estación. Para ello debe seleccionar las estaciones deseadas en una lista en la pantalla de Configuración de Estaciones.
- Sustituida las búsquedas en archivos XML que utilizaba el include _XMLDomWrapper y la función XMLGet por la función StringRegExp, ya que viendo el funcionamiento y potencia de esta última función he visto que resulta más práctico buscar datos con ella en una página web.
- Monitorización de los sistemas de JcDecaux y BiciCard (del ITCL). De momento se ha suspendido el sistema de Bicing.cat, de Barcelona, porque se ha detectado que los datos de algunas estaciones que ofrece la página http://niwi-bicing.appspot.com/ no se actualizan constantemente, pudiendo haber pasado horas desde la última actualización.
Quedan cosas por depurar y mejorar, y con las pruebas que he realizado me surgen algunas preguntas que os lanzo a ver si podemos resolverlas:
1) Ahora estoy intentando utilizar _GUICtrlListView_AddArray en la función GUI_ConfiguraEstaciones_Filtrar() (Línea 1521) para mostrar los datos más rápidamente (sobretodo cuando hay muchas estaciones en una ciudad, como Valencia o París). Pero de momento me da el siguiente error en el propio include GuiListView.au3.
DllStructSetData($tBuffer, "Text", #aItems[$iI][0])
DllStructSetData($tBuffer, "Text", ^ERROR
2) Al probar en un portátil con un "tema de fondo" de Windows distinto al que tengo en el PC donde hago las pruebas, observo que las dimensiones de la ventana son distintas, y no caben bien los controles de las ventanas gráficas. Parece que los bordes y la barra de título tiene dimensiones distintas según el tema de fondo que tiene el usuario.
3) En las pruebas en el portátil, con conexión wi-fi, a veces, mientras actualiza la lista de la ventana principal, sale mensaje de que no hay conexión a internet, quizás deba hacer una espera mayor en la comprobación SiHayInternet()
4) En la pestaña de Configuración de Estaciones:
- A veces, al escribir en el cuadro de 'Buscar' el texto más rápido de lo que actualiza la lista, se rompe el programa.
- Al escribir en el cuadro de 'Buscar', tarda un poco en poderse hacer dobleclick en la lista de la izquierda para pasar a la lista de la derecha.
Esto último debe tener su razón en que en la función My_WM_COMMAND para $EN_CHANGE, tuve que poner un sleep(500) para evitar que al escribir muy rápido en el cuadro de texto no de tiempo a actualizar bien la $lw_direcciones_origen.
5) He detectado que, a veces, sin saber todavía por qué, el programa se rompe cuando se actualiza la lista de la ventana principal y a veces también en la función UnirMatriz(). Si se ejecuta de nuevo el programa, se muestra la lista correctamente.
6) En el proceso de limpieza del código que voy haciendo poco a poco, veo que se me quedan variables definidas y que al final no utilizo. En el foro inglés he leído que alguien utiliza un script externo que lista las variables utilizando StringRegExp. ¿Conocéis otra manera de detectar las variables que no se utilizan?
Por otro lado, hay cosas que mejorar como:
- Diseño de las pantallas
- Permitir que se cancele el relleno de lista de ventana principal
- Bloquear (disable) controles mientras se está haciendo alguna operación
- En la Configuración, advertir si se quiere salir de la ventana y no se ha guardado los cambios
- Dado que hay direcciones de estaciones que son muy largas, quizás se bueno cambiar el tamaño de $lw_direcciones_origen y $lw_direcciones_destino, haciéndolas más anchas y distribuyéndolas de forma horizontal.
- ...
Capturas de la última versión (EDITO 21/04/11: Las he puesto en el primer mensaje)
Cuando esté más depurado lo colgaré en el primer mensaje del hilo.
Gracias de nuevo por vuestras sugerencias, aportes y correcciones.
(EDITADO 21/04/2011: Ver última versión al final del primer mensaje)