Aplicación de cronometraje online (I)

Categoría: Motor , Proyectos 6 comentarios

La semana pasada trabajé a contrarreloj en el poco tiempo que tengo libre para preparar una aplicación de cronometraje de pruebas automovilísticas online para mi compañero y socio en Grupo Vaya, Nacho García. Desde hace varios años es cronometrador oficial de carreras de coches, motos, quads y karts y tiene su propia web AsturCrono. Todo este proyecto hace que los participantes de una prueba cronometrada puedan conocer las clasificaciones en tiempo real en nuestra nueva web de InfoCrono.com.

Con estas premisas y muy poco tiempo, tuve que desarrollar un gestor (PHP & MySQL) donde controlar toda la información de la carrera a partir de unos tiempos servidos por una cronoprinter, que es una impresora con un cronómetro y una célula fotoeléctrica que sirve tiempos cuando un vehículo pasa por el haz que proyecta. Ésta envía la información del tiempo del participante a través del interfaz RS-232 a una aplicación de escritorio que es la que se conecta a Internet, a una página de nuestro servidor en InfoCrono.com.

Cómo guardar los tiempos

En este momento yo tengo la información del tiempo de un participante que tengo que guardar en la base de datos y es el momento de hacer los cálculos que sitúen al piloto en la posición adecuada. La solución más obvia al cómo guardar los tiempo era utilizando el tipo de datos timestamp, pero se me planteaban dos pequeños problemas:

  • Lo lógico sería utilizar el tiempo timestamp que devuelve la función time() de PHP porque las operaciones de sumas y restas son más sencillas en este caso, ya que devuelve el número entero de segundos transcurridos desde el 1 de enero de 1970. El problema es que para una carrera se necesitan guardar también las milésimas, por lo que al número original de segundos, habría que añadir al guardar las tres cifras de los milisegundos y quitarlas a la hora de devolver la hora en formato HH:MM:SS.
  • Había muy poco tiempo para testear la aplicación y el tipo timestamp no se puede “leer” diréctamente, a diferencia de otros formatos de hora, y saber a qué hora corresponde, por lo que las pruebas en papel se iban a hacer mucho más complicadas y largas.

Aplicación online de cronometraje
Por esta razón me decanté por algo mucho más rudimentario, pero que a corto plazo resolvía el problema que tenía de entender las cifras: guardaría los tiempos en una cadena con el formato YYYYMMDDHHmmSSsss (4 cifras para el año, 2 para el mes, 2 para el día, 2 para las horas, 2 para los minutos, 2 para los segundos y 3 para los milisegundos). Está claro que esto tiene una gran desventaja, y es que soy yo el que tiene que preparar un algoritmo para hacer las operaciones de sumas y restas, separando primero ese string en los diferentes componentes y luego operando con cuidado ya que se mezclan medidas sexagesimales y centesimales. Adelanto ya que la aplicación funcionó perfectamente, por lo que este lío a la hora de elegir el formato del tiempo no fue necesario, pero como más vale prevenir que lamentar, estoy seguro que fue la decisión correcta.

El siguiente paso fue preparar eso algoritmos que calculaban los tiempo de cada uno de los tramos individuales y la clasificación general que era la suma de los tiempos de los cuatro tiempos más las penalizaciones de los participantes, en caso de haber recibido alguna. Así que cogí papel y boli y, recordando los tiempos en el colegio, me puse a comprobar que mis algoritmos sabían sumar y restar tiempos correctamente. Costó su tiempo pero funciono. Uno de los puntos sobre los que tenía más dudas era la ordenación de strings, pero con el algoritmo de la burbuja y comparando los tiempos en formato HH:mm:SS.sss no hubo ningún problema.

Llegados a este punto ya tenía solucionado todo el sistema de tiempos y la parte más complicada estaba lista. En la segunda parte explicaré en qué consiste el resto de la aplicación y en el tercer y último post compartiré como desarrolle en una noche la página web que mostraría todos los resultados.

Escrito por Eguino - 6 mayo 2010 6 comentarios
Tags : , , , , ,

6 comentarios

comentarios
may 6, 2010
11:17
#1 Javier Prieto :

Has pensado en enviar tiempos por SMS a la gente potencialmente interesada? Tiemposrally.com ;)

may 6, 2010
15:36
#2 Bernardo :

Me ha gustado mucho el trabajo. Igual podrías venderlo a gente que tiene circuitos de karts.

Author may 6, 2010
16:52
#3 Eguino :

Primero queremos montar una buena página web y cronometrar una o dos carreras más con los cambios en la programación que son necesarios (ahora que tengo más tiempo). Luego estudiaremos la posibilidad de rentabilizarlo en opciones como la que comenta Bernardo y también utilizar servicios SMS.

Trackbacks a este post.
Escribe tu comentario

Post anterior
«
Post siguiente
»
Delighted Black designed by Christian Myspace In conjunction with Ping Services   |   French Teacher Jobs   |   Maths Teacher Jobs
%d personas les gusta esto: