Proyecto CarPC: Integración de GPS con Google Earth

Google tienen grandes planes para Google Earth (de aquí en adelante GE), de eso no hay duda, el público en general se ha visto beneficiado con una herramienta de una funcionalidad nunca antes disponible, al menos no gratis.
Para quienes han estado naúfragos en una isla el último año, GE es un software para exploración terrestre que combina fotografía satelital, mapas e información geográfica, en una interfaz fácil de navegar con el mouse.
Desde que inicié el proyecto CarPC he venido salivando con encontrar la manera de integrar mi receptor GPS(1) (un Microsoft/Pharos USB) con GE para de esa manera contar con tracking o rastreo GPS en tiempo real, es decir, que GE muestre la foto satelital de la posición actual del carro. Por un momento desvié mi atención hacia el software World Wind de la NASA, el cual tiene funcionalidad similar a GE, pero con la diferencia que su código fuente está disponible, además cuenta con infraestructura para el desarrollo de plug-ins o complementos que permiten extender la funcionalidad de World Wind. Uno de estos complementos es GPSTracker, el cual lee las sentencias NMEA(2) 0183 provenientes del receptor GPS y las traduce en información tal como longitud, latitud y altura, que pueden ser desplegadas en World Wind. GPSTracker funciona muy bien, sin embargo las imágenes satelitales de World Wind no son tan buenas como las de GE, especialmente ahora que hay disponibilidad de imágenes de alta resolución para San Salvador.
Google ofrece varias versiones de GE, la versión Plus hace mención de integración con GPS, pero al leer cuidadosamente se hace evidente que solo soporta el bajado de rutas y puntos de referencia de ciertos modelos de receptor GPS, no el rastreo en tiempo real. Esta distinción me ahorró los $20 dólares que cuesta la versión Plus, tuve que seguir salivando hasta que descubrí un pequeño pero útil programa llamado nmeaGE, cuya función, como su nombre revela, es convertir periodicamente las sentencias NMEA 0183 que generan los receptores GPS, en un archivo KML que es el formato con el que Google exporta los puntos de referencia, básicamente es un archivo XML con un esquema sencillo que describe una posición en GE incluyendo latitud, longitud, altura, rumbo, un nombre y una descripción.
Ahora bien, quizas la pregunta es ¿como nos ayuda esta pequeña utilidad para integrar a GE con un receptor GPS?, la respuesta reside en una función poco conocida de GE llamada "Network Link", esta permite indicarle a GE que busque periodicamente un recurso KML en una ruta predefinida, esta puede ser una URL http, ftp ó del sistema de archivos local. Dada la naturaleza propietaria de GE, el formato KML se convierte en el mecanismo de integración tan deseado; es una solución elegante y una bienvenida cortesía de parte de Google para conseguir este tipo de integración.


Configuración de un Network Link en Google Earth

nmeaGE como tal es muy pequeño, esta desarrollado en .NET por lo que requiere el framework .NET 1.1 para instalarse y correr. Su configuración es muy sencilla, solo hay que especificar los parámetros de conexión con el receptor GPS, tal como puerto de comunicación, y velocidad de transferencia; así como los parámetros de generación del archivo KML, tal como ángulo de inclinación, altura y ruta donde se desea guardar.


Configuración del receptor GPS


Configuración para el archivo KML

Al principio los resultados que obtuve fueron mixtos, configuré a GE para que refrescara el link cada 2 segundos, sin embargo la representación de mi posición se retrasaba en relación a lo real, GE se tardaba mucho en actualizar mi posición, lo que en algún momento me hizo sospechar que el CPU de mi CarPC no estaba a la altura de la tarea. Sin embargo, al conectarle un mouse a la CarPC, GE se comportaba muy bien y la actualización de la pantalla era más que adecuada, lo que me hizo revisar en las opciones de GE; en la pestaña "Control" encontré un ajuste para aumentar la velocidad del "sobre-vuelo" o "Fly-To", esto solucionó el problema definitivamente.
Configuración de velocidad de "sobre-vuelo" en GE

nmeaGE ofrece la opción "Use GPS Heading When Moving" que básicamente rota la posición en GE para que el vector de dirección en la que se navega siempre apunte hacia arriba, por ejemplo, cuando se transita por una calle, GE rota toda la imagen de manera que el movimiento del marcador de posición siempre es hacia arriba, cuando la posición del marcador cambia, GE inmediatamente "sobre-vuela" de tal forma que la nueva posición quede en el centro de la pantalla.
En el aspecto negativo, nmeaGE tiene problemas cuando la computadora regresa de estado de hibernación, lo que hace necesario cerrarlo y abrirlo nuevamente, además los botones de la interfaz gráfica son muy pequeños, resultando incómodos de manipular con una pantalla sensible al tacto. Otro detalle que sería muy deseable es contar con una manera de guardar configuraciones KML pre-establecidas y poder cambiar fácilmente entre ellas. Debo admitir que la mayor novedad es haber descubierto la característica "Network Link" en GE, una vez abierta esta puerta, es fácil crear un pequeño software equivalente a nmeaGE y que sea más amigable para una CarPC.

Google Earth y nmeaGE en acción

Para los que se preguntan como es posible utilizar GE sin conexión a Internet, afortunadamente GE utiliza un caché o almacenamiento temporal en el disco. El objetivo del caché es mantener la información utilizada más recientemente en el disco duro de la computadora para no tener que recurrir a Internet cada vez que dicha información se requiera, mejorando de esa manera el tiempo de respuesta. Al inicio GE desplegará un cuadro de mensaje quejándose que no puede contactar al servidor, solo basta presionar el botón "OK" para que Google pase a modo "fuera de línea" y utilice el caché como fuente de datos. El tamaño máximo del caché es configurable; el mio puede crecer hasta 400MB lo cual es más que suficiente para almacenar fuera de línea la información geografica necesaria. La única desventaja es que se requiere haber explorado los lugares para que GE los almacene en el caché. Debo mencionar que la empresa Tigo ya está ofreciendo el servicio de Internet celular EDGE, el cual ofrece velocidades de transferencia de hasta 400KBps por $35 mensuales.

Por lo pronto el artificio del caché me funciona muy bien, así que a corto plazo no veo la necesidad de contratar el servicio EDGE.

Conclusiones

Este articulo habló de la integración entre Google Earth y un receptor GPS; el concepto es muy "Cool " y muestra la flexibilidad alcanzada al utilizar a una PC en un ambiente móvil. Es muy divertido verificar la posición en pantalla con la real, y es muy curioso identificar cosas que no pueden ser vistas a simple vista al transitar por las calles.

La utilidad de los conceptos cubiertos no solo se limita a una curiosidad o al factor "Cool", una empresa con unidades móviles pudiera mejorar su logística al utilizar un programa similar a nmeaGE para "subir" periodicamente la posición de cada unidad móvil a un servidor central (utilizando una CarPC ó una Laptop y un enlace celular GPRS ó EDGE), luego pudiera configurarse una "estación de monitoreo" con GE creando tantos Network Links como unidades móviles se requiera monitorear.
Ante todo es necesario recordar que se debe mantener la atención puesta en la calle y evitar distraerse con aparatos tales como teléfonos celulares, equipos de audio, DVDs…y ¿por que no?…con una computadora….

En las próxima entrega del proyecto CarPC mostraremos la integración con la computadora del motor utilizando la interfaz OBD-II(3)

En subsiguientes entregas hablaremos de como se planea mejorar el sonido de la CarPC al instalarle una tarjeta de sonido externa Sound Blaster Live! de 24 bits y conectarla a un amplificador Sony Xplód de 500W y salida de cuatro canales.

Hasta la pròxima….!

Glosario

  1. GPS: Global Positioning System
  2. NMEA: (National Marine Electronics Association ó Asociación Nacional de Electrónica Marítima, la cual conglomera a la industria electrónica para fines marítimos)
  3. OBD-II: On-Board Diagnostics version 2, Interfaz estándar de la industria para el diagnóstico de vehículos automotores.

25 Responses to “Proyecto CarPC: Integración de GPS con Google Earth”

  1. Juan Antonio says:

    Muy interesante tu proyecto,¿ te financia alguien? Porque con todo lo que colocas en el coche te tienes que gastar un dinero importante…
    He mirado el nmeaGE y parece interesante pero suelo llevar mi receptor GPS en la bici por lo que no puedo conectarlo a un dispositivo que no sea una PDA (eso es lo que hago, ya que almaceno las trazas en formato .pgl) Lo que querría sería pasar ese formato a kml y poder visualizarlo luego en googleEarth. ¿Me podrías ayudar? Muchas gracias.

  2. Jordi Miró says:

    Wenas, he probado el invento y no me funciona. Podriamos hablar para poder solucionarlo? Gracias

    Saludos.

  3. cornel says:

    Hola .
    Muy interesante este ariculo .
    Mi pregunta es :
    - puedo hacer GE que functione ofline como si fuera online ?
    Si no , mal lo tengo para estar con el ordenador coneectado a internet a travers de GPRS o GSM .

  4. Alejandro Silva A. says:

    Estimado.

    Antes que nada, te felicito por los buenos resultados obtenidos en tu desarrollo para integrar el GPS a GE.

    Me gustaría poder implementarla también en mi auto, para lo cual necesito consultarte si puedo contar con tu apoyo para hacerlo. Lo cual me permitiría integrar además los Sistemas de Información Geográfica (SIG), área en la cual trabajo.

    Esperando poder contar con tu asesoría, se despide atentamente,
    Alejandro Silva A.
    Santiago, Chile.
    alejandro.silva.a@gmail.com

  5. ramon says:

    hola mi consulta es si tienes el diagrama de interconeccion del cable del gps al pc por los puertos usb y seria. Mas me interesa en que pines se conecta la señal nmea al pc.
    si me lo envias te lo agradeceria bastante

    desde ya muchas gracias

    Ramon Jaque

  6. ramon says:

    hola de donde puedo bajar el programa nmeage
    me gustaria que me respondieras al correo para ponernos en contacto.

    ramon

  7. Tobias says:

    Is there any way that I can be traced using a GPS reciver thorugh internet, like if am outside and my GPS is working is there any application by which anybody can trace me sitting on computer?

  8. carzel says:

    hey yo queria hacer algo igual a lo que hiciste pero no habia pensado en la cache de google earth para mantenerte desconectado.

    yo estoy por comprar un gps y en un futuro hacer la modificacion de mi carro igual al tuyo. me gustaria se me podes recomendar que gps puedo comprar, yo pienso comprar este que te parece:
    http://www.semsons.com/wi3mugpsrebt.html

    ha por cierto como consigo los mapas con las calles de san salvador??

    fecilidades por tu pagina, me gusto mucho.
    saludos
    Carzel
    http://www.carzel.com

  9. [...] El artículo original apareció en el blog TuPila.com y el enlace directo para la descarga de nmeaGE . [...]

  10. deysi says:

    hola quisiera felicitarlos por este proyecto. tambien quisiera saber donde puedo conseguir los mapas de honduras con sus calles

  11. Camron says:

    Hi All Experts,
    Does anyone use google earth images as ground image planes for use in aerial scenes. I know how to stitch them together but are there any tools or tricks to make sure that the images are at the same height, angle and such to make sure they stitch well. I know in the pro version you can get bigger images but im not going to pay for the pro version when i could stitch multiple images together…

  12. Ricky says:

    Do you know where i could get my GPS service by cell phones?
    my friends download GPS software to cell phones, and their phone become the navigation system. so cool! but, how i can get
    one too?!

  13. JUAN says:

    Hola, te felicito por tu excelente proyecto. Por otro lado te agradecerìa mucho si me ayudas a configurar el programita nmeage en google earth, ya que no he podido de la forma que lo explicas, me gustarìa que me enseñaras un procedimiento paso a paso màs detallado.

  14. Juan Carlos says:

    Mi GPS es de puerto USB y el programa NMEA es para com1, donde puedo conseguir uno que busque en el puerto de USB?

  15. luis medina says:

    hola como estan miren me gustaria que me llamen o que meden un tlf para yo llamar y preguntelscomo puedo montale un rastreador a mi carro mi cle es 0416 132 86 29

  16. gurkatoon says:

    Juan Carlos:

    Tenta o programa GPSgate (emulador série sobre USB).

  17. Antonio Lirola says:

    Hola,
    Me uno a las felicitaciones por lo que parece un buen trabajo, pero es una pena que el programa nmeaGE no funicone de todo bien.
    Habría que depurar alguna cosilla, ya que tras instalarlo y configurarlo siguiendo las instrucciones indicadas aparece un casquetazo para depurar el fuente.

    A continuación incluyo la información del error por si os puede ayudar a solucionarlo:
    Plataforma Win2000 server
    Receptor GPS Woxter Mobile BT-Tracer100

    Consulte el final de este mensaje para obtener más detalles sobre cómo llamar a la depuración
    Just-In-Time (JIT) en lugar de a este cuadro de diálogo.

    ************** Texto de la excepción **************
    System.InvalidOperationException: No se puede obtener información sobre el proceso desde el equipo remoto. —> System.FormatException: La cadena de entrada no tiene el formato correcto.
    at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
    at System.Int32.Parse(String s)
    at System.Diagnostics.PerformanceCounterLib.GetStringTable(Boolean isHelp)
    at System.Diagnostics.PerformanceCounterLib.get_NameTable()
    at System.Diagnostics.PerformanceCounterLib.get_CategoryTable()
    at System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String[] categories, Int32[] categoryIndexes)
    at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library)
    — Fin del seguimiento de la pila de la excepción interna —
    at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library)
    at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine)
    at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName)
    at System.Diagnostics.Process.GetProcessesByName(String processName, String machineName)
    at System.Diagnostics.Process.GetProcessesByName(String processName)
    at nmeaGE.210ff09a2516b1a7.b9e484ea4dec9079()
    at nmeaGE.210ff09a2516b1a7.ed14d5806c547303()
    at nmeaGE.210ff09a2516b1a7.e364a632553374ad(Object e0292b9ed559da7d, ToolClickEventArgs fbf34718e704c6bc)
    at Infragistics.Win.UltraWinToolbars.UltraToolbarsManager.OnToolClick(ToolClickEventArgs e)
    at Infragistics.Win.UltraWinToolbars.UltraToolbarsManager.FireEvent(ToolbarEventIds id, EventArgs e)
    at Infragistics.Win.UltraWinToolbars.ToolBase.OnToolClick()
    at Infragistics.Win.UltraWinToolbars.ButtonToolUIElement.DoClickProcessing(MouseEventArgs e)
    at Infragistics.Win.UltraWinToolbars.ButtonToolUIElement.OnMouseUp(MouseEventArgs e)
    at Infragistics.Win.ControlUIElementBase.ProcessMouseUp(Object sender, MouseEventArgs e)
    at System.Windows.Forms.Control.OnMouseUp(MouseEventArgs e)
    at Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea.OnMouseUp(MouseEventArgs e)
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Ensamblados cargados **************
    mscorlib
    Versión del ensamblado: 1.0.5000.0
    Versión Win32: 1.1.4322.2032
    Código base: file:///c:/winnt/microsoft.net/framework/v1.1.4322/mscorlib.dll
    —————————————-
    nmeaGE
    Versión del ensamblado: 1.0.2174.15937
    Versión Win32: 1.0.2174.15937
    Código base: file:///D:/Archivos%20de%20programa/nmeage/Geotenacity/nmeaGE/nmeaGE.exe
    —————————————-
    System.Windows.Forms
    Versión del ensamblado: 1.0.5000.0
    Versión Win32: 1.1.4322.2032
    Código base: file:///c:/winnt/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll
    —————————————-
    System
    Versión del ensamblado: 1.0.5000.0
    Versión Win32: 1.1.4322.2032
    Código base: file:///c:/winnt/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
    —————————————-
    NMEALibrary.Net
    Versión del ensamblado: 1.1.0.41070
    Versión Win32: 1.1.0.41070
    Código base: file:///D:/Archivos%20de%20programa/nmeage/Geotenacity/nmeaGE/NMEALibrary.Net.DLL
    —————————————-
    System.Drawing
    Versión del ensamblado: 1.0.5000.0
    Versión Win32: 1.1.4322.2032
    Código base: file:///c:/winnt/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
    —————————————-
    Infragistics.Win.v3.1
    Versión del ensamblado: 3.1.20041.1083
    Versión Win32: 3.1.20041.1083
    Código base: file:///D:/Archivos%20de%20programa/nmeage/Geotenacity/nmeaGE/Infragistics.Win.v3.1.DLL
    —————————————-
    Infragistics.Shared.v3.1
    Versión del ensamblado: 3.1.20041.1083
    Versión Win32: 3.1.20041.1083
    Código base: file:///D:/Archivos%20de%20programa/nmeage/Geotenacity/nmeaGE/Infragistics.Shared.v3.1.DLL
    —————————————-
    Infragistics.Win.UltraWinToolbars.v3.1
    Versión del ensamblado: 3.1.20041.1083
    Versión Win32: 3.1.20041.1083
    Código base: file:///D:/Archivos%20de%20programa/nmeage/Geotenacity/nmeaGE/Infragistics.Win.UltraWinToolbars.v3.1.DLL
    —————————————-
    Infragistics.Win.UltraWinStatusBar.v3.1
    Versión del ensamblado: 3.1.20041.1083
    Versión Win32: 3.1.20041.1083
    Código base: file:///D:/Archivos%20de%20programa/nmeage/Geotenacity/nmeaGE/Infragistics.Win.UltraWinStatusBar.v3.1.DLL
    —————————————-
    Accessibility
    Versión del ensamblado: 1.0.5000.0
    Versión Win32: 1.1.4322.573
    Código base: file:///c:/winnt/assembly/gac/accessibility/1.0.5000.0__b03f5f7f11d50a3a/accessibility.dll
    —————————————-
    Microsoft.VisualBasic
    Versión del ensamblado: 7.0.5000.0
    Versión Win32: 7.10.6001.4
    Código base: file:///c:/winnt/assembly/gac/microsoft.visualbasic/7.0.5000.0__b03f5f7f11d50a3a/microsoft.visualbasic.dll
    —————————————-
    Infragistics.Win.UltraWinEditors.v3.1
    Versión del ensamblado: 3.1.20041.1083
    Versión Win32: 3.1.20041.1083
    Código base: file:///D:/Archivos%20de%20programa/nmeage/Geotenacity/nmeaGE/Infragistics.Win.UltraWinEditors.v3.1.DLL
    —————————————-
    Infragistics.Win.Misc.v3.1
    Versión del ensamblado: 3.1.20041.1083
    Versión Win32: 3.1.20041.1083
    Código base: file:///D:/Archivos%20de%20programa/nmeage/Geotenacity/nmeaGE/Infragistics.Win.Misc.v3.1.DLL
    —————————————-
    mscorlib.resources
    Versión del ensamblado: 1.0.5000.0
    Versión Win32: 1.1.4322.573
    Código base: file:///c:/winnt/assembly/gac/mscorlib.resources/1.0.5000.0_es_b77a5c561934e089/mscorlib.resources.dll
    —————————————-
    System.resources
    Versión del ensamblado: 1.0.5000.0
    Versión Win32: 1.1.4322.573
    Código base: file:///c:/winnt/assembly/gac/system.resources/1.0.5000.0_es_b77a5c561934e089/system.resources.dll
    —————————————-
    SYSTEM.WINDOWS.FORMS.resources
    Versión del ensamblado: 1.0.5000.0
    Versión Win32: 1.1.4322.573
    Código base: file:///c:/winnt/assembly/gac/system.windows.forms.resources/1.0.5000.0_es_b77a5c561934e089/system.windows.forms.resources.dll
    —————————————-

    ************** Depuración Just-In-Time **************
    Para habilitar la depuración Just In Time (JIT), el archivo de configuración de esta
    aplicación o equipo (machine.config) debe tener el
    valor jitDebugging establecido en la sección system.windows.forms section.
    La aplicación también se debe compilar con la depuración
    habilitada

    Por ejemplo:

    Cuando esté habilitada la depuración JIT, cualquier excepción no controlada
    se enviará al depurador JIT registrado en el equipo
    en lugar de controlarlo mediante el cuadro de diálogo.

  18. Hola ¡¡¡

    Lo primero es felicitarte por la explicación, es bastante didactica y resolutiva.

    El motivo de escribirte es porque voy a realizar un viaje al Desierto de Argelia, estaré aproximadamente durante 1 mes por allí haciendo una exploración arqueológica con un equipo de historiadores.

    Para mi es imprescindible tener una buena guia de la topografia y conocer mi localización con extrema precisión; es por ello por lo que las investigaciones que hemos realizado en laboratorio la hemos realizado con Google earth, y me seria de gran ayuda no prescindir de esta herramienta en los trabajos de campo que voy a realizar allí. Evidentemene la conexión a internet no la voy a tener en esa zona, por lo que me seria imprescindible disponer de la utilidad del GE sin conexión.

    Me ha interesado tu artículo, porque explicas la integración del GE con el GPS, y lo de la memoria caché, pero me gustaria conserva la información de los mapas permanentemente ¿ sabes algún modo ?

    Te agradeceria tu ayuda

    Un saludo

    Ricardo López.

  19. admin says:

    Hola Ricardo,

    Se sabe poco del “datastore” que utiliza Goggle Earth, hace no mucho, un proyecto llamado Gaia que buscaba proveer una alternativa a Google Earth (y que pudo haber resultado en una manera de guardar la información geográfica de Google Earth “offline”) fue amenazado por el departamento legal de Google y prefirieron desistir.

    No se que tan amplio sea el territorio que te interesa, pero subiendo la capacidad del cache en disco al máximo (2GB creo) podrías forzar a Google a almacenar la información topográfica y las fotos de satélite, si no me equivoco he visto en varios sitios métodos para forzar a que Google Earth “navegue” o recorra áreas de interés con el objetivo de forzar su almacenamiento en el caché. También te aconsejo comprar la versión Plus ($20), la cual trae integración nativa con GPS en tiempo real.

    Hay otros productos que trabajan fuera de linea tal como Ozi Explorer 3D, pero creo que queda en tu responsabilidad conseguir la información topográfica y mapas.

    Espero que haya sido de tu ayuda.

    Saludos.

  20. gonzalo says:

    no consigo lonalizar NMEAGE en la red

    poedes facilitarmelo ??

    gsp@csn.es

  21. Jimy says:

    Con Gps, para qué el google earth esta bien para descubrir cosas pero en un carro??, lo que necesitas es un mapa ruteable, imagínate sin gprs, sin cache, no man gps para carro es Garmin

    • Willy says:

      Lo que te dice Jimy es correcto, por que no instalas el Garmin Mobile PC y le pones el mapa que tengo en el foro, http://salrut.foroactivo.com/, le pones un gps creo que te puede servir el integrado de un teléfono solo es de googlear un poco. Yo lo he instalado en el teléfono (Nokia con Symbian s60), y en el Pc, se vé fenómeno

      • Willy says:

        Pd: además tiene búsqueda de direcciones, y lugares de interés, y es guiado, hasta le puedes poner voces distintas, la verdad es que me gustaría que lo probaras y me comentaras que tal se ve en esa pantallota

  22. MARCO says:

    Amigos me gustaría que me ayudaran a desarrollar mi propio sistema para localización de vehículos y control de flotas por medio de tegnologia gps-gprs-gsm y el software con su servidor web que trabaje con los mapas de googel y con mapas vectorizados, cuento GPS TK 102

    Que el sistema pueda tener un control de carro vía gprs y sms que el usuario pueda apagar el carro, abrir los seguros, saber la ubicación todo los eventos por vía teléfono Móvil y Si ya tiene algo listo modificable excelente.

  23. Shinobi says:

    THE LINK FOR THIS PROGRAM DOESNT WORK….
    please can u supply a link for it

    thanx

Leave a Reply

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word