viernes, 6 de septiembre de 2013

Visual Basic: Técnicas basicas

Iniciare esta sección con cuestiones practicas, y dando por entendido que el usuario ya tiene conocimientos del lenguaje, es decir, solo algunas técnicas que facilitan el diseño del software en el Basic.

Descargar archivos de la red.

Es común diseñar un proyecto donde se nos pida que bajemos archivos de la red y almacenarlos en algún medio de almacenamiento del ordenador. Sin embargo en muchas otras ocasiones es común bajar el mismo archivo cada cierto intervalo de tiempo, debido a que este se actualiza y tiene un contenido mas reciente, y es necesario sobrescribir el archivo descargado, pues bien aunque parezca sencillo de hacer, implementar este algoritmo requiere de practica. Existen dos formas de hacerlo y es lo que explicare.

Supongamos que se nos asigna la tarea de tomar captura de alguna cámara digital cada 30 segundos, sin embargo, el software que se encarga de tomar la captura y almacenar dicha imagen ya se encuentra echo, por lo tanto nuestro trabajo es solo tomar el archivo del servidor donde alojo esta imagen y visualizarla en alguna especie de contenedor gráfico (PictureBox).

El método clásico es usar el siguiente código:
 
Sub timer_1
Dim time As Integer
time = 0
If time <= 30 then
time = time + 1
else
My.Computer.Network.DownloadFile _
("http://www.tuServidoroIP.com/Imagenjpg", _
"C:\Monitoreo\Imagen.jpg")
time = 0
End If
End sub

Todo pareciera indicar que tenemos el problema resuelto, y en efecto así es. Sin embargo pensemos que cierto día nuestra conexión a internet pierde comunicación con el servidor por unos cuantos mili segundos, y supongamos que en ese intervalo de tiempo (entre la perdida de conexión) le correspondía a nuestro software actualizar tomar la imagen del servidor y posteriormente almacenarla y mostrarla.

¿Que ocurriría?

Pues bien, nuestro código es tan sencillo que carece de condiciones contra errores, y por lo tanto nos generaría un error y se saldría de la ejecución, de echo, seria la muerte si fuera para un empresa, y el software se colgara en un fin de semana.

¿Como solucionar el problema?

Pues bien, como bien dice el dicho: no hay mal que dure cien años...
No explicare a detalle el siguiente código, pues me tomaría mas tiempo explicarles el funcionamiento de cada sentencia, sin embargo, el lector tiene toda la libertad de experimentar e investigar.

Try
            Dim wc As New System.Net.WebClient()
            wc.DownloadFile("http://" & ip & "/Imagen.jpg", "C:\Monitoreo\Imagen.jpg")
        Catch ex As System.Net.WebException
            Dim response As System.Net.HttpWebResponse = ex.Response
        End Try

Este código lo que hace, es omitir nuestro problema anterior, lo único que bastaría hacer es cambiar este fragmento de código por el anterior:

My.Computer.Network.DownloadFile _
("http://www.tuServidoroIP.com/Imagenjpg", _
"C:\Monitoreo\Imagen.jpg")
Eh aquí nuestra solución, cabe mencionar que el código anterior puede reemplazar la imagen automáticamente, a diferencia del primer código que nos causaba error, a ese código tenemos que implementarle un algoritmo para borrar la imagen y volverla a escribir.

No hay comentarios:

Publicar un comentario