Sei sulla pagina 1di 58

Visual Basic 2008 Creando Interfaces para PIC desde CERO

Este tutorial, introduce al mundo de la programacin para poder hacer interfaces para microcontroladores para controlar el puerto USB, COM, LTP segn va apareciendo nuevas tecnologas.
24/05/2009 www.ucontrol.com.ar Ariel

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Visual Basic 2008 - Creando Interfaces para PIC desde CERO


La versin que voy a utilizar es la Visual Basic 2008 Express Edition, que se puede descargar desde aqu (cuidando de elegir la versin en espaol):

Una vez seleccionado el idioma, presionamos el link "Download" y se nos preguntar si queremos descargar el archivo "vbsetup.exe" de 2.6MB:

Eso va a demorar muy poco tiempo, ya que solo es un instalador. Cuando lo ejecutemos comenzar la verdadera descarga.

www.ucontrol.com.ar

Pgina 2

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Esta es la pantalla que veremos al comenzar la instalacin:

www.ucontrol.com.ar

Pgina 3

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Debemos aceptar la licencia (no estara mal que le des una leda) antes de seguir:

www.ucontrol.com.ar

Pgina 4

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Conviene conservar la ruta por defecto, as todos los que sigamos este pequeo tutorial tenemos los archivos en los mismos lugares:

www.ucontrol.com.ar

Pgina 5

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Ahora si comenzar la verdadera descarga, que implica unos 180MB, as que puede demorar algunos minutos horas:

Cuando esta etapa termine, se nos invitar a reiniciar el ordenador:

www.ucontrol.com.ar

Pgina 6

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Despus del reinicio, buscamos entre los programas instalados en nuestro ordenador y arrancamos por primera vez la suite. O casi, ya que antes de ir a la pantalla de trabajo se efectuaran algunos ajustes que nos obligarn a esperar unos minutos ms:

Finalmente, despus de (en mi caso) unas dos horas, tenemos por fin instalado el Visual Basic 2008 Express Edition (VB o Visual Basic de ahora en ms). El IDE: IDE son las iniciales, en ingles, de Integrated Development Environment, algo as como entorno de desarrollo integrado.

Se trata de un programa que nos pone a disposicin las herramientas que necesitamos para programar en un (o en varios) lenguajes de programacin.

www.ucontrol.com.ar

Pgina 7

Visual Basic 2008 - Creando Interfaces para PIC desde CERO En el caso del Visual Basic 2008, lo primero que vemos es la imagen de la figura anterior. Si vamos a "Archivo" y luego "Nuevo proyecto..." aparece la ventana siguiente:

La ventana nos mostrar las opciones con las que contamos a la hora de decidir el carcter que tendr nuestro desarrollo. Son algunos menos que las disponibles en la versin completa del Visual Studio, pero no estn nada mal para ser gratis.

www.ucontrol.com.ar

Pgina 8

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Comenzaremos viendo como se construye un programa normal para Windows. Para ello, hacemos dos veces clic sobre el primer icono, el de la leyenda Aplicacin para Windows. Aparecer algo parecido a lo siguiente:

Aqu debemos hacer una aclaracin. Debe haber pocos programas que brinden la posibilidad de personalizacin de sus barras de herramientas como este IDE. Seria muy conveniente que no cambiemos de lugar las barras, cuadros o botones por ahora, para que la disposicin se parezca lo ms posible a las capturas de pantalla que ofrecemos como muestra. Eso har ms fcil de seguir las explicaciones. En la parte superior de la ventana se encuentra la barra del men principal Desde all es posible acceder a casi todas las opciones del Visual Basic, que iremos viendo a medida que resulten necesarias. Ms abajo hay una fila de iconos, que representan las tareas que utilizaremos con mayor frecuencia. Si alguna vez utilizaste alguno de los integrantes del paquete Microsoft Office, ya sabes como se utilizan estos iconos. Arriba, a la derecha, tenemos el Explorador de soluciones, que es bsicamente una lista de cada parte que compone nuestro proyecto, y que proporciona una forma rpida de llegar a cada uno de ellos.

www.ucontrol.com.ar

Pgina 9

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Abajo de esto se encuentra la zona que muestra (y nos permite modificar) las propiedades del objeto o control que hayamos seleccionado en ese momento. Ser una de las zonas que mas emplearemos del IDE. Por fin, en la parte central de la ventana vemos el formulario, que contendr los elementos que conforman nuestra aplicacin. En el momento que el programa que estamos creando este listo, ser la ventana que lo contenga. All depositaremos los botones, menues, etiquetas, y todo lo que necesite nuestra aplicacin para llevar a cabo su tarea. Por ultimo, sobre la derecha, hay un acceso que lleva al Cuadro de herramientas. Este men, que se divide en varias zonas, ser el que proporcione todos los controles que necesitamos para completar nuestra aplicacin. La forma de colocar alguno de ellos sobre el formulario es tan sencilla como arrastrarlo sobre este.

Formularios y controles Durante algunos das nos ocuparemos de los formularios y los controles ms comunes que podemos emplear en nuestras aplicaciones. Tambin veremos cuales son sus propiedades ms tiles y como cambiarlas. Resulta bastante complicado elegir un orden determinado al intentar explicar una herramienta como Visual Basic. Nosotros vamos a seguir un camino poco ortodoxo, tomando atajos y tratando temas bastante distintos entre si, pero que nos permitirn crear pequeas aplicaciones desde el comienzo. Como habamos mencionado, el marco encargado de contener a nuestra aplicacin es el formulario. Cuando arrancamos Visual Basic y elegimos crear una aplicacin para Windows, automticamente el IDE nos proporciona un formulario con el nombre Form1. Este formulario tiene una serie de propiedades que pueden modificarse fcilmente: basta con editar el valor que aparece a la derecha de su nombre.

www.ucontrol.com.ar

Pgina 10

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Asumimos que el lector tiene a disposicin la ayuda que brinda MSDN Library, que puede descargarse e instalarse junto a Visual Basic, para consultar los detalles de cada propiedad. Solo explicaremos las que vayan siendo necesarias para entender los ejemplos que vayamos planteando.

www.ucontrol.com.ar

Pgina 11

Visual Basic 2008 - Creando Interfaces para PIC desde CERO El titulo del formulario Una de las propiedades que primero cambiamos de un formulario es Text. El texto que contiene este campo es el que aparecer como titulo de nuestra ventana. Puedes hacer click con el mouse sobre el texto que tiene por defecto, y editarlo para escribir el titulo que quieras muestre el formulario:

Como puedes ver, muy fcilmente hemos hecho que el formulario tenga como titulo "uControl - Electrnica Fcil". Cuando nuestra aplicacin est lista, ese ser el nombre de la ventana que la contenga. En Visual Basic tambin pueden cambiarse el valor de estas propiedades mediante rdenes incluidas en el programa. Por ejemplo, podemos utilizar
Me.Text = "uControl - Electrnica Fcil"

para lograr el mismo resultado. Me es el formulario actual, en este caso representa a Form1. Siempre que el cdigo que escribimos este dentro del mismo formulario, nos referimos a l como Me. Luego del . viene el nombre de la propiedad que queremos cambiar, en este caso Text. Y por ultimo, despus del igual y entre comillas (por ser una cadena de texto), uControl - Electrnica Fcil, que es el titulo que queremos para nuestra ventana.

www.ucontrol.com.ar

Pgina 12

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Para poder escribir cdigo, debemos dar un doble click en el formulario, y aparecer el editor con algo escrito. Intentemos modificar el texto para que quede as:

Hay otra forma de escribir el cdigo, tambin muy fcil: basta con hacer un clic en la solapa que lleva el nombre del formulario (en este caso Form1.vb). El IDE automticamente escribe por nosotros los encabezados de los procedimientos, por lo que solo escribimos nuestro cdigo. Si presionamos la tecla "F5", Visual Basic ejecutar nuestro pequeo programa y mostrar el formulario siguiente:

www.ucontrol.com.ar

Pgina 13

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Algunas propiedades solo aceptan valores de verdadero o falso. En esos casos, al hacer clic a la derecha del nombre de la propiedad, se abre un men con ambas alternativas. Por ejemplo Locked, que indica si nuestro formulario podr o no ser cambiado de tamao mediante el procedimiento normal de arrastrar con el ratn sus bordes, puede ser configurado como True (Verdadero) o False (Falso):

El cono de nuestra aplicacin Otra propiedad que posiblemente quieras cambiar es Icon. Si haces clic sobre ella, se abrir un cuadro de dialogo que te permite elegir el archivo .ICO que desees sea el icono que se muestre en la esquina superior de la ventana:

www.ucontrol.com.ar

Pgina 14

Visual Basic 2008 - Creando Interfaces para PIC desde CERO El tamao por defecto del formulario Al igual que muchas otras caractersticas, el tamao del formulario tambin puede ser cambiado mediante la modificacin de sus propiedades. Y esto puede hacerse desde el cdigo. Bastar con agregar Me.Size.Width = ancho deseado (en pixeles) O Me.Size.Height = altura deseada (en pixeles) donde lo necesitemos. Esto es muy til, ya que nos proporciona un mecanismo dinmico para el cambio de los atributos del formulario en tiempo de ejecucin. Puedes probar agregando
Me.Size.Width = 480

(donde 480 es el ancho deseado) y ver que ocurre al correr el programa. Si deseas conocer todos los atributos que puedes modificar de los formularios (son muchos!) dale un vistazo a la ayuda.

Los controles Una de las primeras impresiones que se tiene al entrar al IDE de Visual Basic es que hay controles que no utilizaremos nunca. Sin embargo, con el tiempo vamos viendo que todos son tiles en algn momento, y afortunadamente Microsoft los ha puesto a disposicin. Los controles simplemente se arrastran con el ratn desde la paleta que est a la izquierda de la pantalla hasta el formulario. Vamos a probar como hacerlo. Intenta arrastrar 3 botones (Button), una etiqueta (Label), 3 casillas (CheckBoxes) y un cuadro de texto (TextBox). No importa demasiado (por ahora) su posicin sobre el formulario, aunque si pones un poco de cuidad, podrs colocarlos tal como se ven en la imagen:

www.ucontrol.com.ar

Pgina 15

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

www.ucontrol.com.ar

Pgina 16

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Una vez hecho esto, vamos a cambiarles a todos estos controles el texto que muestran. Los vamos seleccionando de a uno, utilizando el ratn, y modificamos en la ventana propiedades el valor de la propiedad Text. Toma tu tiempo, y haz que tus controles queden tal como se ve aqu:

Fcil, verdad? Bien, hemos cambiado el nombre que muestran, aunque los controles todava tienen nombres tan poco amigables como Button1 o CheckBox3. Por ahora los dejaremos as, pero es bueno que sepas que el nombre tambin es una propiedad que se puede cambiar. Si bien no hace al aspecto de nuestro programa, el uso de nombres descriptivos para los controles que usamos en nuestra aplicacin har ms fcil la confeccin del programa. Vamos a ver como hacer para que los controles que hemos agregado ejecuten alguna tarea cuando el usuario interacta con ellos. La forma de hacer esto es, simplemente, escribir el cdigo necesario en el evento deseado. Dicho en palabras simples, Un evento es un mensaje que enva un objeto anunciando que ha sucedido algo: un click con el mouse, un tecla presionada, una ventana que se mueve de lugar, etc.

www.ucontrol.com.ar

Pgina 17

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Como siempre, un ejemplo puede resultar mucho ms simple de entender. Hagamos que cuando presionamos el tercer botn (el que tiene el texto Salir), haciendo click con el mouse sobre l, el programa termine. En BASIC, la instruccin que finaliza la ejecucin de un programa es End. Para escribir esta instruccin en el evento Click del Button3 simplemente le damos doble clic a este botn en la ventana principal del IDE, y Visual Basic nos posicionar en el lugar correcto. Una vez editado, este debera ser el aspecto del cdigo:

La flecha indica el lugar donde debemos escribir End. Como ves, el entorno del Visual Basic ha escrito el encabezado del procedimiento por si solo. Una vez hecho esto, veremos que si corremos el programa, al hacer clic sobre el botn Salir, el programa termina. Los dems, al no tener cdigo asociado, no efectan ninguna tarea.

www.ucontrol.com.ar

Pgina 18

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Tenemos dos botones ms para programar. Aprovechemos para ver como las acciones que se llevan a cabo sobre un control pueden influir en otro. Vamos a darle doble clic al botn Escribir para acceder a su evento clic, y escribir all el cdigo necesario para que el TextBox1 (el pequeo cuadro de texto de la parte superior del formulario) muestre el texto Hola uControl! cuando lo presionamos. El cdigo debera quedar as:

Si ejecutamos el programa, veremos que el cuadro de texto aparece vacio. Al hacer clic sobre Escribir, su contenido cambia a Hola uControl!. Lo que hemos hecho ha sido modificar el evento clic del Button1 para que modifique la propiedad Text del control TextBox1. Resulta bastante ms difcil describir el proceso que llevarlo a cabo.

www.ucontrol.com.ar

Pgina 19

Visual Basic 2008 - Creando Interfaces para PIC desde CERO El contenido del TextBox1 puede ser modificado utilizando el ratn y el teclado, editando o copiando su contenido. Pero tambin podramos modificarlo mediante cdigo. De la misma manera que programamos el comportamiento del primer botn, podemos modificar el segundo para que al presionarlo limpie el contenido del cuadro de texto. Los pasos son los mismos, pero la cadena asignada a TextBox1.Text debe estar vaca:

Listo! Ahora podemos escribir con un botn, borrar con el otro, y salir con el tercero. Y lo mejor de todo es que hemos escrito muy poco cdigo para lograrlo.

www.ucontrol.com.ar

Pgina 20

Visual Basic 2008 - Creando Interfaces para PIC desde CERO CheckBoxes Con todo lo visto hasta aqu, no debera resultarnos muy difcil hacer que si el usuario marca alguno de las casillas (CheckBoxes) del formulario, se modifique el contenido del cuadro de texto. En realidad, el procedimiento es el mismo que hemos empleado para modificar el comportamiento de los primeros dos botones: le damos doble clic al CheckBox que queremos editar, y escribimos el cdigo necesario. Por ejemplo, en la figura siguiente vemos como hacer para que el al marcar el CheckBox1 el TextBox1 muestre la frase "12 Pines":

Esto es lo que ocurre si le damos "run" al programa (con "F5"):

Ya puedes modificar por ti mismo los otros tres para que escriban el nmero de pines que tiene cada microcontrolador. Tambin puedes comprobar que el botn Borrar sigue borrando el contenido del TextBox1, y que el botn Escribir sigue escribiendo Hola uControl! independientemente del contenido del cuadro de texto.

www.ucontrol.com.ar

Pgina 21

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

El cdigo completo debera verse as:

Por supuesto, el programa tiene un defecto: El TextBox1 escribe lo que le pedimos al hacer clic, independientemente de que estemos marcando o desmarcando el CheckBox correspondiente. Por supuesto, no es un problema de Visual Basic (que hace exactamente lo que le hemos indicado), sino de nuestro cdigo, que no tiene en cuenta esta situacin.

Sentencias para el control del programa Este grupo de instrucciones pueden modificar el orden en que se ejecutan las dems sentencias que componen nuestro programa. Bsicamente, existen dos grupos de instrucciones que pueden llevar a cabo estas tareas: las que determinan la ejecucin de un trozo de cdigo tomando una decisin, y las que permiten repetir un grupo de sentencias un nmero determinado de veces. Comenzaremos analizando las del primer grupo.
www.ucontrol.com.ar Pgina 22

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Sentencias de decisin Una instruccin de este tipo representa una divisin en el flujo normal del programa. A partir del punto del cdigo en que escribimos una instruccin de este tipo se produce una divisin en dos o mas alternativas. Del resultado de la evaluacin de una condicin (que forma parte de la sentencia de decisin) depender cual de las alternativas es la que finalmente se ejecuta. Dentro de este grupo veremos las sentencias If, Choose y Select Case. IfThen Existen varias maneras de utilizar esta sentencia. Su forma ms simple ocupa solo una lnea de cdigo, y tiene la forma siguiente:
If condicin then sentencia

A menudo los programadores se refieren a este formato como If de una lnea, y se emplea generalmente para asignar un valor a alguna variable cuando se da una condicin determinada. Veamos un ejemplo. Supongamos que si la tensin leda de alguna forma (que veremos ms adelante) desde un sensor conectado al ordenador es mayor a 5V, debemos guardar en la variable tension_estado el valor sobretensin. La tensin medida est almacenada en la variable tension_valor. La sentencia If que realiza esta comprobacin y (eventual) asignacin es la siguiente:
If tension_valor > 5 then tension_estado = sobretensin

La sentencia en cuestin, en caso de que la condicin sea verdadera (es decir, que la tensin sea efectivamente mayor a 5 voltios), ejecuta la asignacin que se encuentra a la derecha del then, haciendo que tension_estado contenga la cadena sobretensin. Y luego continuar con la sentencia siguiente. En caso de que tension_valor sea igual o menor a 5, el programa continuar con la sentencia siguiente a la del ejemplo sin realizar ninguna asignacin. Hay una variacin posible al If de una lnea, y consiste en el agregado de la clusula else. Dicha sentencia tiene la siguiente forma:
If condicin then sentencia1 else sentencia2

Este tipo de construccin es muy til cuando, en funcin del resultado que arroje la evaluacin de la condicin deban ejecutarse uno u otro (pero no ambos) grupo de instrucciones.

www.ucontrol.com.ar

Pgina 23

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Nuevamente, un ejemplo nos aclarar mejor la cuestin. Supongamos que queremos asignar a la variable tension_estado el valor sobretensin o normal dependiendo si es mayor o no de 5 Voltios. Nuestro If de una lnea quedar como sigue:
If tension_valor > 5 then tension_estado = sobretensin else tension_estado = normal

Al ejecutar esa lnea, Visual BASIC decidir si la condicin es o no verdadera, y en funcin del resultado ejecutar la asignacin que se encuentra a la derecha del then o la que est despus del else. Independientemente de cual sea el resultado, el programa (luego de realizar la asignacin correspondiente) seguir con la lnea siguiente a la del if. Por supuesto, nada de esto sirve cuando necesitamos, luego de evaluar una condicin, ejecutar un grupo de instrucciones y no solamente una. En esos casos, si el nmero de instrucciones es pequeo, podemos optar por separarlas por dos puntos:
If condicin then sentencia1 : sentencia2 : sentencia3 : .

En caso de que la condicin sea verdadera, se ejecutarn todas las sentencias que estn luego del then, en riguroso orden de izquierda a derecha. El mismo truco puede emplearse para colocar varias sentencias despus del else. Pero an as, hay casos en que esto no basta. Veamos que podemos hacer. If...Then multilinea Por ejemplo, no podemos poner otra sentencia If a continuacin del then o else. Para estos casos tenemos la versin larga del If, que ocupa todas las lneas que haga falta, y que, en la practica, es la que ms utilizaremos. El formato de esta alternativa es la siguiente:
If condicin then sentencia1 sentencia2 sentencia3 . End If

www.ucontrol.com.ar

Pgina 24

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

El funcionamiento es el mismo que cuando utilizamos los : en la versin de una sola lnea para separar las sentencias unas de otras, pero se agrega la clausula End If al final para que el compilador sepa donde termina el bloque de instrucciones correspondientes al If y donde comienzan las que pertenecen al resto del programa. Si realizamos el ejemplo anterior con este formato, nos quedara:
If tension_valor > 5 then tension_estado = sobretensin End If

Ahora ya sabes por que, cada vez que pueden, los programadores eligen el If de una lnea. Pero donde realmente se luce es en los casos que el cdigo a ejecutar es mas extenso, ya que no solo permite un numero (tericamente) infinito de sentencias de todo tipo en su interior, si no que es mucho ms legible que el If de una lnea con sentencias separadas por :. Y por supuesto, puede usarse con el Else:
If condicin then Sentencia_v1 Sentencia_v2 Sentencia_v3 . Else Sentencia_f1 Sentencia_f2 Sentencia_f3 . End If

Pero lo ms interesante es que pueden anidarse sentencias condicionales, unas dentro de otras. Eso permite la toma de decisiones realmente complejas. Y si somos ordenados (comentando e indentando el cdigo a conciencia), el programa seguir siendo legible a pesar de la longitud que pueda tener. Veamos un ejemplo. Supongamos que tenemos una variable, llamada sujeto_sexo, cuyo

www.ucontrol.com.ar

Pgina 25

Visual Basic 2008 - Creando Interfaces para PIC desde CERO valor puede ser H o M (por Hombreo Mujer), y otra llamada sujeto_edad que contiene (como no!) la edad del sujeto. El siguiente cdigo:

If sujeto_sexo = H then Si el sujeto es HOMBRE If sujeto_edad > 18 then Y tiene ms de 18 aos sujeto = Varn mayor de edad Else Si no. Sujeto = Varn menor de edad End If Else Si el sujeto es MUJER If sujeto_edad > 18 then Y tiene ms de 18 aos sujeto = Mujer mayor de edad Else Si no. Sujeto = Mujer menor de edad End If End If

coloca en la variable sujeto una descripcin de la persona basada en los datos conocidos. Puede verse en que forma se han anidado un If dentro de otro. La indentacin del cdigo permite identificar fcilmente cada parte del programa. IIF Para terminar con esta indispensable instruccin, aprenderemos a utilizar el If como funcin. Efectivamente, es posible utilizar esta sentencia como si fuese una funcin. Luego de ser evaluada la condicin, devuelve en la variable el valor que se encuentra despus de la primer , (condicin verdadera) o el que se encuentra despus de la segunda (condicin falsa). La forma es la siguiente:
Variable = IIF(condicin, valor1, valor2)

Esta puede ser una herramienta interesante, y en muchos casos puede reemplazar al If de una lnea. Veamos uno de los ejemplos anteriores, aquel de la tensin leida de alguna forma desde un sensor conectado al ordendors, traducido a este nuevo formato:
tension_estado = IIF ( tension_valor > 5, sobretensin, normal)

Como puede verse, una vez comprendida la sintaxis puede ser una buena forma de escribir un cdigo claro.

www.ucontrol.com.ar

Pgina 26

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Pero no terminan aqu las ventajas del IIF. Tambin puede formar parte de otras sentencias, como el FORNEXT. An a riesgo de adelantarnos, veamos como podramos hacer un bucle que cuente hasta 20 o hasta 50 dependiendo del valor de una variable:
For i = 1 to IIF(variable = 1, 20, 50) . . . Next i

Si variable es 1, el bucle se ejecutar 20 veces. Caso contrario, se ejecutar 50. El cdigo equivalente, de no existir el IIF podra escribirse as:
If variable = 1 then For i = 1 to 20 . . . Next i Else For i = 1 to 50 . . . Next i End If

O asi:
If variable = 1 then limite = 20 else limite = 50 For i = 1 to limite . . . Next i

Como puede verse, la forma mas corta de todas es la que emplea el IFF. Hemos aprendido como hacer que nuestro programa pueda tomar decisiones utilizando algunas de las varias formas que posee la sentencia ifthen. A medida que vayamos escribiendo nuestros propios programas seremos capaces de determinar rpidamente cual es la ms conveniente en cada ocasin.

www.ucontrol.com.ar

Pgina 27

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Choose() y Select Case Seguimos avanzando. Analizaremos en profundidad las sentencias destinadas a controlar el flujo del programa, y proporcionando ejemplos que sirvan para su mejor entendimiento. Concretamente, veremos como sacar provecho a Choose() y Select Case. Como hemos visto antes, existe un grupo de instrucciones que tienen la capacidad de modificar el orden en que se ejecutan las dems sentencias de nuestro programa. Ya aprendimos a utilizar IfThen, la instruccin de este tipo que se utiliza con mayor frecuencia. Ahora es el turno de las dos restantes: Choose() y Select Case. Choose() Esta funcin recibe una lista de parmetros, de los cuales el primero se utiliza como ndice para determinar cual de los dems se devuelve al ser evaluada. Esto puede parecer difcil de entender, pero en realidad, como demostraremos con los ejemplos, es muy simple. El formato de Choose() es el siguiente:
Variable1 = valorN) Choose (indice, valor1, valor1, valor1, valor1,.,

Al ejecutarse esta sentencia, Variable1 tomar alguno de los valores de la serie Valor1 a ValorN. El contenido de la variable indice ser el que determine cual resulta elegido: si indice es igual a 1, Choose() har que Variable1 tome el valor de Valor1; si indice es igual a 2 tomar el de Valor2; y as sucesivamente. Pero un ejemplo nos ayudara an ms a comprender el funcionamiento de Choose(): supongamos que tenemos que elegir un componente de una lista, donde el valor 1 est asignado al resistor, el 2 al condensador y el 3 al transistor. Y queremos que la variable Variable1 almacene la palabra resistor, condensador o transistor en funcin del valor de la variable componente. Usando Choose(), se hara de la siguiente forma:
variable1 = Choose(componente, "resistor", "condensador ", "transistor")

www.ucontrol.com.ar

Pgina 28

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Si hubisemos querido hacer lo mismo utilizando IfThen, el programa sera mucho mas extenso (y quizs mas confuso):
Dim variable1 As String Dim componente As Integer If componente = 1 Then variable1 = "resistor" Else If componente = 2 Then variable1 = "condensador " Else 'asumo que si componente no es 1 ni 2, es 3. variable1 = "transistor" End If End If

www.ucontrol.com.ar

Pgina 29

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Select Case Esta instruccin es ideal para utilizar en aquellas situaciones en que debemos elegir una alternativa de entre muchas. Si bien Choose() hace mas o menos esto mismo (IfThen tambin), por lo general Select Case resulta ms fcil de leer. Particularmente, yo prefiero utilizar Choose() cuando quiero que el cdigo (fuente) sea compacto, y Select Case cuando hay muchas alternativas, pero cada programador elije la forma que cree ms conveniente. Su formato es el siguiente:
Select Case <expresin a evaluar> Case <lista de expresiones1> 'Instrucciones a ejecutar Case <lista de expresiones2> 'Instrucciones a ejecutar Case <lista de expresiones3> 'Instrucciones a ejecutar Case <lista de expresionesN> 'Instrucciones a ejecutar Case Else 'Instrucciones a ejecutar si no se cumple ' ninguna de las listas de expresiones anteriores End Select

La <expresin a evaluar> puede ser algo tan simple como una variable, o una expresin ms compleja que Visual Basic resolver antes de elegir que grupo de instrucciones ejecutar. Las <lista de expresiones> que siguen a cada sentencia Case se evalan, y de ser verdaderas (solo debera serlo una de ellas) se ejecutan las sentencias que estn a continuacin. En caso de que ninguna de las <lista de expresiones> sea verdadera, se ejecutan las instrucciones que estn a continuacin del Case Else. Esta seccin no es obligatoria. Si no existe Case Else y ninguna de las <lista de expresiones> es verdadera, el programa no ejecutar nada de lo que hay dentro de la estructura. Veamos como podramos resolver el ejemplo de los componentes visto antes, usando Select Case:

Select Case componente Case 1 variable1 = "resistor" Case 2 variable1 = "condensador" Case 3 variable1 = "transistor" End Select

www.ucontrol.com.ar

Pgina 30

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Si quisisemos que, cuando componente tiene un valor distinto de 1, 2 o 3 Variable1 fuese igual a la palabra Error, podemos agregar la seccin Case Else:
Select Case componente Case 1 variable1 = "resistor" Case 2 variable1 = "condensador" Case 3 variable1 = "transistor" Case Else variable1 = "Error" End Select

Respecto de las expresiones que pueden utilizarse a continuacin de las clusulas Case, no tiene por que ser necesariamente un numero. Supongamos que queremos que si componente vale 1,2 o 3, Variable1 sea igual a Correcto. No necesitamos usar tres Case diferentes, sino que podemos hacerlo en uno solo, separando los valores por comas. Quedara as:
Select Case componente Case 1,2,3 variable1 = "Correcto" Case Else variable1 = "Error" End Select

www.ucontrol.com.ar

Pgina 31

Visual Basic 2008 - Creando Interfaces para PIC desde CERO En estos casos, donde queremos hacer lo mismo para un grupo de valores comprendidos en un rango determinado, tambin podemos utilizar la clusula To. El siguiente cdigo hace exactamente lo mismo que el visto recin:
Select Case componente Case 1 To 3 variable1 = "Correcto" Case Else variable1 = "Error" End Select

Resulta evidente que su la lista de valores es larga, To simplifica mucho el cdigo. En todos los ejemplos vistos, hemos efectuado alguna accin cuando el valor de <expresin a evaluar> es igual a un valor determinado. Pero puede darse el caso de que necesitemos hacer algo cuando la <expresin a evaluar> sea mayor, menor o diferente a un valor determinado. Para ello, debemos utilizar el operador Is. Literalmente, el significado, en espaol, de este operador es Es. Su uso brinda una gran flexibilidad a la <expresin a evaluar>. Veamos un ejemplo:
Select Case valor_tension Case Is < 12 variable1 = "Baja tensin" Case Else variable1 = "12V o ms" End Select

El cdigo anterior guardar en Variable1 el texto "Baja tensin" solo cuando el valor de tension sea menor a 12. En estos casos, donde queremos hacer lo mismo para un grupo de valores comprendidos en un rango determinado, tambin podemos utilizar la clusula To. El siguiente cdigo hace exactamente lo mismo que el visto recin:
Select Case componente Case 1 To 3 variable1 = "Correcto" Case Else variable1 = "Error" End Select

Resulta evidente que su la lista de valores es larga, To simplifica mucho el cdigo. En todos los ejemplos vistos, hemos efectuado alguna accin cuando el valor de <expresin a evaluar> es igual a un valor determinado. Pero puede darse el caso de que necesitemos hacer algo cuando la <expresin a evaluar> sea mayor, menor o diferente a un valor determinado. Para ello, debemos utilizar el operador Is. Literalmente, el significado, en espaol, de este operador es Es. Su uso brinda una gran flexibilidad a la <expresin a evaluar>. Veamos un www.ucontrol.com.ar Pgina 32

Visual Basic 2008 - Creando Interfaces para PIC desde CERO ejemplo:
Select Case tension_medida Case Is < 12 variable1 = "Baja tensin" Case Else variable1 = "12V o ms" End Select

El cdigo anterior guardar en Variable1 el texto "Baja tensin" solo cuando el valor de tension_medida sea menor a 12. Para terminar con Select Case, vamos a resolver un problema utilizando todo lo visto hasta aqu. Supongamos por un momento que en un variable tenemos el valor de un resistor, y que debemos, en funcin de su valor, determinar que en que rango se encuentra (ohms, Kohms o Mohms). Mira el cdigo fuente siguiente e intenta comprender que hace cada lnea:
Dim variable1 As String Dim edad As Integer valor_resistor = 47000 Select Case valor_resistor Case 0 variable1 = "No hay resistencia!" Case 1 to 999 variable1 = "Ohms" Case 1000 To 999999 variable1 = "Kohms" Case Is > 999999 variable1 = "Mohms" Case Else variable1 = "No deberia haber aparecido esta leyenda!" End Select

Seguramente podrs descubrir, leyendo el programa, cual es el valor de Variable1 una vez ejecutado el cdigo anterior, verdad?

www.ucontrol.com.ar

Pgina 33

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Bucles Comenzaremos a analizar las diferentes instrucciones que Visual BASIC dispone para la construccin de bucles (o reiteraciones). Su comprensin nos ayudar a crear programas capaces de realizar tareas ms complejas y tiles. Es muy difcil encontrar un problema que implique el procesamiento de datos que no requiera de algn tipo de repeticin. Si solo tuvisemos que llevar a cabo una accin determinada en dos o tres oportunidades, podramos limitarnos a repetir el cdigo en cuestin la cantidad necesaria de veces. Esto funcionaria, a pesar de que a un programador serio le producira dolor de estomago. Pero si necesitamos efectuar un proceso sobre, digamos, un milln de lecturas recibidas a travs del bus USB, la solucin anterior, adems de ser muy poco eficaz, es absolutamente impracticable. Para resolver estas situaciones, los lenguajes de programacin proporcionan una serie de instrucciones destinadas a la repeticin de porciones de cdigo. Si bien todas ellas hacen bsicamente lo mismo, tienen sutiles diferencias que hacen, frente a un determinado problema, unas resulten ms apropiadas que otras. FOR-NEXT Esta quizs sea la estructura de este tipo mas conocida. De hecho, se encuentra presente en los dialectos BASIC -incluidos los BASIC para PIC- desde los orgenes de este lenguaje. Su formato es el siguiente:
For variable = valor_inicial To valor_final Step incremento Instrucciones Next variable

donde variable ir cambiando su valor a lo largo de la ejecucin del bucle For-Next, comenzando con valor_inicial hasta valor_final, en incrementos de incremento. Por cada valor que asuma variable, la(s) instruccin(es) que se encuentran entre el For y el Next se ejecutarn una vez. Ests completamente perdido? Posiblemente. Pero el ejemplo siguiente te aclarar las cosas. Supongamos que queremos sumar los nmeros enteros de 1 a 10 (ambos inclusive). Usando For-Next podramos hacerlo as:
Dim i, suma As Integer suma = 0 For i = 1 To 10 Step 1 suma = suma + i Next i

www.ucontrol.com.ar

Pgina 34

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

En primer lugar, declaramos la variable i, que ser la que controlara el bucle, y la variable suma (guardar el total de la suma) como enteras. Luego, hacemos que suma sea igual a cero. Esto no es indispensable, por que el compilador la inicializa por defecto con ese valor, pero es recomendable tener a la vista ese dato.

Luego, tenemos el bucle for-Next propiamente dicho. Vemos que i adoptar valores desde 1 hasta 10, incrementndose en 1 cada iteracin. La sentencia suma = suma + i se ejecutar 10 veces, sumando cada vez el valor de i en la variable suma. i tomar valores 1, 2, 3, 4, 5, 6, 7, 8, 9 y 10, mientras que suma ser 1, 3, 6, 10, 15, 21, 28, 36, 45 y 55. Colocar el nombre de la variable a continuacin del Next es opcional. Pero a pesar de no ser obligatorio, es una buena prctica hacerlo, ya que en aquellos programas en que se emplean varios bucles, uno dentro de otro, ayuda a identificar a que For corresponde cada Next. Cuando el incremento de la variable es 1, como en el ejemplo anterior, tampoco hace falta poner Step 1, ya que el compilador lo hace por defecto. Digamos que si queremos escribir lo menos posible, nuestro ejemplo podra quedar como sigue:
Dim i, suma As Integer For i = 1 To 10 suma = suma + i Next

www.ucontrol.com.ar

Pgina 35

Visual Basic 2008 - Creando Interfaces para PIC desde CERO En programas tan sencillos, podemos omitir todas estas cuestiones que son opcionales. Pero si nuestro programa es muy extenso, o si debe ser modificado o ledo por otra persona, conviene incluir todo lo necesario para que su comprensin sea ms fcil. La declaracin del tipo de la variable puede hacerse dentro del mismo For, lo que compacta un poco ms el cdigo:
Dim suma As Integer For i As Integer = 1 To 10 suma = suma + i Next

Personalmente, me gusta sta forma de declarar la variable usada en el bucle.

Tambin puede ser til construir bucles que modifiquen el valor de la variable de forma decreciente. Esto es posible gracias a que el valor a continuacin del Step puede ser negativo. Si se da esta condicin, el valor de la variable se decrementa en cada iteracin. Veamos un ejemplo:
Dim suma As Integer For i As Integer = 100 To 0 Step -2 suma = suma + i Next

www.ucontrol.com.ar

Pgina 36

Visual Basic 2008 - Creando Interfaces para PIC desde CERO En este caso, el valor inicial de i ser 100, ira descendiendo de a dos unidades en cada iteracin, y la ltima se producir cuando el valor de i sea igual a cero. La variable suma va incrementando su valor en cada pasada, y al finalizar contiene la suma de los nmeros pares que se encuentran entre el 0 y el 100, ambos inclusive. Puedes comprobarlo, el resultado final de suma ser 2550. Por supuesto, en ese caso el valor_inicial debe ser mayor que el valor_final, si no nuestro bucle no se ejecutar ni una vez. Esto plantea un tema interesante: puede darse el caso de que un bucle no se ejecute ninguna vez, ya que sus valores iniciales son tales que lo hacen imposible. La situacin se produce cuando, al principio del bucle, Visual Basic evala los valores de variable, valor_inicial,valor_final e incremento y descubre que se ha alcanzado el mximo valor posible, saltando a la instruccin que sigue al Next. Por ejemplo, el siguiente cdigo no realiza ninguna suma, ya que el valor inicial es inferior al final, y el incremento es negativo:
Dim suma As Integer For i As Integer = 1 To 10 Step -2 suma = suma + i Next

Nada impide utilizar valores no enteros en cualquiera de los parmetros del For-Next. Supongamos que, siguiendo con las sumas, queremos sumar los valores comprendidos entre 0 y 10, de 0.1 en 0.1:
Dim suma, i As Double For i = 0 To 10 Step 0.1 suma = suma + i Next

(ntese el detalle de que hemos declarado las variables como Double).

www.ucontrol.com.ar

Pgina 37

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Por supuesto, todos los parmetros de un For-Next pueden ser variables. Esto le otorga una gran flexibilidad a nuestros programas, ya que permite construir bucles cuyo numero de ejecuciones dependa, por ejemplo, del numero de productos que contiene una base de datos, o de los das que tiene el mes en curso. El ejemplo siguiente ilustra esta posibilidad:
Dim suma, i, inicio, final, incremento As Double inicio = 85.7 final = 100.8 incremento = 0.1 For i = inicio To final Step incremento suma = suma + i Next i

Como dijimos antes, si no se es cuidadoso se puede terminar con un bucle que no se ejecute ni una vez. Por ultimo, hay un par de instrucciones que pueden alterar el nmero de veces que se va a repetir el contenido de un bucle For-Next. Supongamos que queremos sumar los nmeros enteros hasta que la suma sea superior a 1000. Salvo que seamos muy buenos con la matemtica, no tenemos forma de conocer cual ser el valor_final de nuestra cuenta.

www.ucontrol.com.ar

Pgina 38

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Pero con Exit For podemos abortar el For-Next cuando queramos. Si Visual BASIC se encuentra con esta instruccin, inmediatamente pasa a la instruccin posterior al Next, sin importar que se haya alcanzado el valor_final elegido o no. As es como se usa:
Dim suma, i, inicio, final, incremento As Double inicio = 1 final = 1000 incremento = 1 For i = inicio To final Step incremento suma = suma + i If suma >= 1000 Then Exit For End If Next i

Usando el IF-THEN que vimos antes, preguntamos si la suma ya es igual o superior a 1000. En caso de que sea as, ejecutamos el Exit For para abandonar el bucle. For-Next tiene una variante que permite recorrer los tems de una coleccin, mediante ForEach. Cuando hayamos visto que son y como se emplean las colecciones, volveremos sobre For-Next para explicar este ultimo aspecto. Ya vimos como FORNEXT poda ayudarnos a resolver aquellas situaciones en las que un grupo de instrucciones deban repetirse un numero determinado de veces. Pero existen otras situaciones, y aparecen con mucha frecuencia, en las que no se conoce de antemano el nmero de iteraciones que debera tener nuestro bucle. A pesar de que un programador con experiencia siempre encontrar la forma de afrontar esas situaciones haciendo uso de FORNEXT, resulta mas fcil, apropiado y eficiente emplear las instrucciones que el repertorio sentencias de Visual Basic pone a nuestra disposicin. Veamos cuales son. DoLoop El bucle DO...LOOP es muy verstil. Tanto, que puede reemplazar a FORNEXT en casi todos los casos. Con l se pueden crear una gran variedad de bucles diferentes, dependiendo si comprueban una condicin antes de ejecutar el bucle una vez; despus de la primera ejecucin; mientras que se cumple la condicin o hasta que la mencionada condicin se cumpla. La sintaxis bsica de esta estructura es la siguiente:
Do Instrucciones [Exit Do] Instrucciones Loop

www.ucontrol.com.ar

Pgina 39

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Esta es la forma ms simple de escribir este tipo de bucle. Las instrucciones comprendidas entre el Do y el Loop se ejecutaran indefinidamente. Resulta muy apropiado para aquellos casos en que nuestro programa se encuentra esperando que ocurra alguna situacin determinada, a la vez que repite un grupo de instrucciones. La opcin Exit Do permite abandonar el bucle cuando lo deseemos. En general, una sentencia IfThen comprueba el valor de alguna expresin, y cuando dicha expresin es verdadera, se ejecuta el Exit Do. El siguiente ejemplo ilustra este caso:
Dim frecuencia As Integer frecuencia = 2000 Do frecuencia = frecuencia - 100 if frecuencia = 0 Then Exit Do End If Loop

Como puede verse, el bucle se repetir mientras que el valor de frecuencia sea diferente de cero. Cuando esto ocurre, la condicin que evala el IfThen ser verdadera y el control del programa saltar a la instruccin que haya a continuacin del Loop. La segunda forma en que se puede escribir un bucle DoLoop es la que sigue:
Do { While | Until } condicin Instrucciones [Exit Do] Instrucciones Loop

Por supuesto, no podemos utilizar While y Until a la vez. En esta forma del bucle, la condicin se evala al comienzo del mismo. En el caso de utilizar la opcin While, el bucle se repetir mientras que la condicin sea verdadera. Podemos escribir el ejemplo anterior utilizando esta posibilidad:
Do While frecuencia<> 0 frecuencia= frecuencia- 100 Loop

Como puede verse, es mucho ms simple utilizar While que IfThen y Exit Do. Aclaramos que la condicin evala que frecuenciasea diferente de cero. Tambin podramos haber resuelto el problema con el uso de Until:
Do Until frecuencia= 0 frecuencia = frecuencia - 100 Loop

www.ucontrol.com.ar

Pgina 40

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

En este caso, el bucle se repetir hasta que frecuencia sea igual a cero. En estos dos ultimo ejemplos puede darse el caso de que, si frecuencia es igual a cero cuando se llega a la instruccin Do, las instrucciones existentes en el interior del bucle no se ejecuten nunca. La tercera forma que puede adoptar el bucle que estamos analizando es la siguiente:
Do Instrucciones [Exit Do] Instrucciones Loop { While | Until } condicin

Como puede verse, se ha delegado la capacidad de evaluar la condicin al final del bucle. Esto tiene la particularidad de permitir que el grupo de instrucciones existentes en el interior del bucle se ejecuten al menos una vez, independientemente de que la condicin a evaluar sea o no verdadera. Nuestro ejemplo podra resolverse as:
Dim frecuencia As Integer frecuencia = 20000 Do frecuencia = frecuencia - 100 Loop Until frecuencia = 0

O asi:
Dim frecuencia As Integer frecuencia = 20000 Do frecuencia = frecuencia - 100 Loop While edad <> 0

En todos los casos puede utilizarse, entre las instrucciones que estn dentro del bucle, la sentencia Continue Do, que hace que el control del programa salte nuevamente al Do, repitiendo el ciclo actual.

www.ucontrol.com.ar

Pgina 41

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Controles Hoy veremos cuales son y como se emplean los controles que dispone Visual Basic. Son estos elementos los que nos permitirn crear la interfaz con el usuario de nuestras aplicaciones, y tambin manejar muchas de las potentes caractersticas que dispone esta herramienta. Comienza la parte interesante! Los controles, que pueden arrastrarse y soltarse sobre los formularios (Forms) de Visual Basic, son componentes extremadamente importantes para la construccin de las aplicaciones. Son, en resumen, los que permiten confeccionar la interfaz que el usuario utilizara para controlar las funciones de nuestro programa. Los controles, bsicamente, proveen mecanismos para proporcionar informacin al usuario (Label, ToolTip, PictureBox, TreeView, etc.), organizar los datos para que sean fcilmente interpretados (GroupBox, TabControl, Panel, etc.), ingresar datos (TextBox, ComboBox, MonthCalendar, etc.), seleccionar una(s) opcion(es) de entre varias (ListBox, CheckBox, RadioButton, etc.) o interactuar con elementos que no pertenecen, necesariamente, a nuestra aplicacin (OpenFileDialog, SaveFileDialog, PrintDocument, etc.). Adems, algunos controles especiales nos proporcionan herramientas para manejar o complementar otros controles (ImageList, ToolTip, etc.) Todo esto nos proporciona una completisima cantidad de herramientas con las que podremos construir la interface que controle o interactue con nuestros proyectos. No veremos absolutamente todos los disponibles (para eso tenemos la ayuda del paquete), pero la informacin que proporcionaremos en esta entrega y las siguientes seguramente bastarn para que el lector pueda sacar provecho de todos los controles que posee Visual Basic. Esta es la paleta de controles disponibles:

www.ucontrol.com.ar

Pgina 42

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Comenzaremos viendo como utilizar los Controles comunes. Es bastante difcil encontrar alguna aplicacin que no utilice alguno de estos controles como parte de su interfaz. El primero de ellos, cuyo icono es una pequea flecha, no es en realidad un control, sino la herramienta que podemos usar para mover o seleccionar alguno de los controles que tenemos en nuestro formulario.

www.ucontrol.com.ar

Pgina 43

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Hecha esta aclaracin, comencemos con el anlisis. Lo primero que haremos ser abrir el Microsoft Visual Basic 2008 Express, seleccionemos Aplicacin para Windows, y asegurmonos que tenemos el Form1 en la pantalla, en modo diseo. Deberamos tener a la vista algo ms o menos as:

El primer control que usaremos ser Button. Como habrs adivinado, se trata del clsico botn presente en prcticamente la totalidad de las ventanas de cada programa. Este control puede ejecutar una accin cuando el usuario hace clic sobre l. Utilizando la flecha, arrastraremos uno hasta el formulario Form1. No importa demasiado, al menos por ahora, en que posicin lo coloquemos, ni tampoco su tamao. Es ms, puede ser un buen momento para que pases unos minutos jugando con la flecha y el control, para asegurarte que comprendes de qu forma puedes arrastrarlo por el formulario o cambiar su tamao.

www.ucontrol.com.ar

Pgina 44

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Una vez colocado el control, el formulario se ver como sigue:

Lo primero que vamos a aprender es como cambiarle el nombre, ya que Button1 difcilmente sea apropiado para nuestra aplicacin. Vamos a modificar el botn para que termine la aplicacin cuando le hacemos clic, as que un nombre apropiado para el sera Salir. Debemos, como se ve en la imagen, utilizar el cuadro Propiedades para cambiar el valor correspondiente al atributo Text del control. Simplemente, hacemos clic sobre ese rengln, y escribimos Salir (o lo que queramos poner). Debera quedar como sigue:

www.ucontrol.com.ar

Pgina 45

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Con esto tenemos el botn con el texto deseado escrito en l. Ahora, vemos como hacer para que, cuando el usuario haga clic sobre el control, la aplicacin termine. Para ello, debemos escribir un trozo de cdigo que se ejecute cuando esta accin tenga lugar. La forma de hacerlo es muy sencilla (y ya vimos como hacerlo aqui): simplemente, damos un doble clic sobre el botn, y Visual Basic pasar al Form.vb. El IDE de Visual Basic nos facilita mucho las cosas. Tanto, que como puede verse nos lleva directamente al lugar exacto donde debemos escribir el cdigo que se ejecutar, en tiempo de ejecucin, al pulsar el botn. Como queremos que la aplicacin termine cuando esto ocurra, simplemente escribimos End:

www.ucontrol.com.ar

Pgina 46

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Una vez hecho esto, ya podemos probar nuestro programa para ver si funciona correctamente. Para ello, basta con presionar F5 o hacer clic sobre la flecha verde de la barra de herramientas que tenemos en la parte superior del IDE, debajo del men. Haz clic sobre el botn y comprueba como se cierra la ventana. MsgBox() Por supuesto, podemos hacer cosas mucho ms interesantes con este control. Aprovecharemos, de paso, para aprender a utilizar la funcin MsgBox(), que permite desplegar pequeas ventanas con un mensaje (y algunos botones) en ella. Su sintaxis es la siguiente:
MsgBox(prompt[, buttons][, title][, helpfile, context])

Donde prompt, que obligatoriamente debe estar, es una cadena que representa el texto que aparecer en el cuadro de dilogo. La longitud mxima de prompt es de unos 1024 caracteres, variando con el ancho de los caracteres utilizados. Buttons es un parmetro opcional. Es una expresin numrica que corresponde a la suma de los valores que especifican el nmero y el tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botn predeterminado y la modalidad del cuadro de mensajes. Si no ponemos nada (o ponemos 0), solo aparecer un botn con el texto Ok que cerrar el cuadro de dialogo cuando le demos clic. Title es otra cadena opcional, que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite este parmetro, en la barra de ttulo se ver el nombre de la aplicacin. Helpfile tambin es opcional. Es la cadena que identifica el archivo de ayuda relacionado con el cuadro de dialogo. Volveremos sobre este tema cuando tratemos la forma de implementar ayuda interactiva en nuestras aplicaciones. El parmetro context tambin se relaciona con la ayuda. Veamos un ejemplo. La siguiente lnea
MsgBox("Aprendiendo a usar Visual Basic 2008", 0, "uControl.com.ar")

genera un cuadro de dilogo con el texto "Aprendiendo Visual Basic 2008", un solo botn con el texto Ok y el titulo uControl.com.ar. Tal cual se ve en la imagen:

www.ucontrol.com.ar

Pgina 47

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Ahora bien, seguramente te estas preguntando Cmo hago yo para enterarme que poner para crear cada combinacin de botones?. Esta es la respuesta:

Como puede verse, Visual Basic proporciona una palabra clave para que no tengamos que recordar nmeros extraos. El siguiente cdigo
MsgBox("Error grave, se ha perdido la informacin",VbAbortRetryIgnore + VbCritical,"Error grave")

Muestra como podemos utilizarlas. Y la figura de abajo el resultado que produce:

Lo interesante de MsgBox() es que devuelve un cdigo que nos indica que botn ha pulsado el usuario. Esto significa que, si somos lo suficientemente hbiles a la hora de escribir nuestros programas, podremos realizar diferentes acciones en respuesta a la respuesta del usuario.

www.ucontrol.com.ar

Pgina 48

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

El siguiente cdigo muestra un aviso de alerta con los botones Anular, Reintentar y Omitir. Luego, utilizando la instruccin If-Then, el programa analiza la respuesta del usuario y muestra otro cuadro de dilogo que nos confirma cual fue el botn presionado:
Dim a As Integer a = MsgBox("Error grave, se ha perdido la informacin", vbAbortRetryIgnore + vbCritical, "Error grave") If a = vbAbort Then MsgBox("Presionaste Anular") End If If a = vbRetry Then MsgBox("Presionaste Reintentar") End If If a = vbIgnore Then MsgBox("Presionaste Omitir") End If

Si copias el cdigo anterior dentro del evento click de un botn, al ejecutarlo tendrs algo como esto:

www.ucontrol.com.ar

Pgina 49

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Esta tabla muestra el cdigo devuelto por cada botn:

Como puede verse, resulta muy simple utilizar los controles disponibles en Visual Basic. Hoy no hemos visto ms que una pequesima parte de las opciones de uno de sus controles, pero afortunadamente, la mayor parte de las caractersticas y propiedades de un control existen y se utilizan de la misma forma en casi todos los dems. Esto facilitar mucho nuestro aprendizaje. Comenzaremos ahora a ver los controles que permiten al usuario seleccionar o definir opciones. Dentro de este grupo hay algunos clsicos como el RadioButton, el CheckBox o el ListBox. Con mucha frecuencia, nuestra aplicacin escrita en Visual Basic necesita que el usuario seleccione una alternativa (o varias) de un grupo ms o menos numeroso de opciones. Por ejemplo, si estamos rellenando listas con los valores de temperatura medidos, es posible que queramos ingresar el momento del da al que pertenece cada uno. La caja de herramientas de VB dispone de varios controles que pueden ayudarnos en esta tarea. RadioButton El RadioButton es el control por excelencia para realizar este tipo de tarea. Para emplearlo, simplemente debemos arrastrar el numero de controles que necesitemos desde la caja de herramientas al formulario, y luego cambiarles el nombre. Si no lo hacemos, tendrn un aspecto parecido al de la figura, y el usuario nada sabr sobre lo que significa cada opcin.

www.ucontrol.com.ar

Pgina 50

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Este control se utiliza para presentar al usuario un conjunto de opciones mutuamente excluyentes. Si el usuario selecciona un componente del grupo de RadioButton disponibles en el formulario, todos los dems se desmarcan o deseleccionan solos. Esta caracterstica de exclusin mutua se aplica perfectamente al ejemplo anterior. Vamos a ver cmo podemos utilizarlo. Comienza por arrastrar al formulario dos controles RadioButton, un Button y un Label. Luego de que lo hagas, el formulario presentar un aspecto similar al de la figura anterior. Antes de seguir, vamos a cambiar la descripcin de los controles, tal como hicimos en oportunidades anteriores a lo largo del tutorial. Pondremos "Dia" y "Noche" a los RadioButton, "Listo" al botn y "" (nada) al Label. Si todo ha salido bien, nuestro formulario se parecer al de la figura:

www.ucontrol.com.ar

Pgina 51

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Recuerda que el cambio lo haces modificando la propiedad "Text" de cada control, y que el Label, al tener un nombre "vaco" no se ver en el formulario. Luego, mediante cdigo, haremos que muestre el valor seleccionado por los RadioButton. Como puede verse en la figura siguiente, si damos "Play" a nuestra aplicacin, los RadioButton funcionan, y resulta imposible marcar ms (o menos) de uno: al intentarlo, el otro se desmarca.

Ahora escribiremos un trozo de cdigo en el evento Click del Button1, para que cuando lo presionemos le cambie la propiedad Text al Label, as este muestra cual es el momento del da que hemos seleccionado. Le damos un doble click al control Button1 (que ahora tiene el texto "Salir" escrito encima) y debera abrirse una ventana similar a la siguiente:

En ella, dentro del "Private Sub Button1_Click" escribimos lo siguiente:


If RadioButton1.Checked Then Label1.Text = "Dia" If RadioButton2.Checked Then Label1.Text = "Noche"

Cada instruccin "IfThen" vlida uno de los RadioButton, y en funcin de su estado (concretamente, si su propiedad "Checked" es verdadera) modifica la propiedad Text del Label1. Ms fcil, imposible. El cdigo debe verse como sigue:

www.ucontrol.com.ar

Pgina 52

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Sera interesante que ejecutes el programa que has escrito y compruebes que realmente funciona. Tambin puedes probar de hacer algunos cambios. Por ejemplo, inventa un problema que tenga tres o ms alternativas y resulvelo modificando este cdigo; o cambia el nombre de los controles (RadioButton1, RadioButton2) a algo ms "humano", como "rbDia" y "rbNoche". Vers que si lo haces as el cdigo resultante es mucho ms legible. Ms adelante veremos cmo realizar grupos de RadioButton en el mismo formulario, para que funcionen de forma independiente unos de otros. Esto permitir, dentro del mismo Form, seleccionar varias clases de cosas al mismo tiempo.

www.ucontrol.com.ar

Pgina 53

Visual Basic 2008 - Creando Interfaces para PIC desde CERO


CheckBox Las situaciones en las que debemos elegir solo una alternativa de una lista de opciones no son las nicas posibles. De hecho, es bastante comn el caso en que debamos seleccionar varias opciones de un grupo mayor. En estos casos, RadioButton y sus opciones mutuamente excluyentes son intiles. Pero afortunadamente, existen losCheckBox.

Desde el punto de vista del uso del control (colocacin en el Form y configuracin) no difiere demasiado del visto anteriormente. Sin embargo, cuando lo usamos, veremos que si tenemos una opcin seleccionada y presionamos otra, la primera permanece en ese estado. Abramos un nuevo proyecto en Visual Basic, y arrastremos cinco controles CheckBox al formulario, ms o menos como se ve en la figura:

www.ucontrol.com.ar

Pgina 54

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Luego, desde el cuadro de propiedades, modifiquemos su propiedad "Text" para que aparezcan como "Rojo", "Verde", "Azul", "Blanco" y "Negro":

Si ejecutas ahora el proyecto, vers como tranquilamente puedes dejar todos sin marcar (RadioButton obligaba a tener siempre uno elegido), marcar uno solo como si fuese un RadioButton o bien elegir varios de ellos (o todos) Un "truco" til consiste en modificar el texto que aparece al lado de cada caja del CheckBox durante la misma ejecucin del programa. Hay casos en los que las "preguntas" que debemos hacer al usuario dependen de alguna respuesta anterior (por ejemplo, si es hombre o mujer), y mediante la modificacin de la propiedad "Text" del CheckBox se puede lograr cambiar la apariencia del Form. Para establecer valores en el cdigo se hace, por ejemplo, as:
CheckBox1.Text CheckBox2.Text CheckBox3.Text CheckBox4.Text CheckBox5.Text = = = = = "Es un resistor?" "Es de montaje superficial?" "Funciona bien?" "Hay ms de uno?" "Puede reemplazarlo?"

Si este trozo de cdigo lo escribimos dentro del evento Load del Form, cuando se abre la ventana que contiene nuestra aplicacin el aspecto de los CheckBox ser otro (conteniendo los textos anteriores), independientemente de los valores que hayamos elegido para cada "Text" en momento de disear el form. La propiedad Checked del CheckBox es la que cambia al seleccionar (o no) el control. Esta propiedad valdr "1" (o verdadero) en caso de que el control este seleccionado, y "0" (o falso) en caso contrario.

www.ucontrol.com.ar

Pgina 55

Visual Basic 2008 - Creando Interfaces para PIC desde CERO Si hay algo en lo que Visual Basic se destaca, es en lo potente y compacto de su cdigo. Con solo escribir una decena de lneas ya tenemos controles que cambian su valor en tiempo de ejecucin, podemos comprobar el estado de algunos de ellos al presionar un botn, o modificar el texto de una etiqueta en funcin de lo que ha seleccionado el usuario. Esto hace que uno se sienta cmodo y pueda avanzar rpidamente en la comprensin del lenguaje. La prxima entrega de este tutorial tratar sobre como interactuar con el puerto paralelo utilizando la librera inpout.dll

www.ucontrol.com.ar

Pgina 56

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

www.ucontrol.com.ar

Pgina 57

Visual Basic 2008 - Creando Interfaces para PIC desde CERO

Tutorial creado por Ariel. Versin: 1.01 http://www.ucontrol.com.ar/forosmf/programacion-en-visual-basic/visual-basic-2008creando-interfaces-para-pic-desde-cero/ Portado a PDF por Meta. http://electronica-pic.blogspot.com Cualquier sugerencia, dudas o cualquier comentario, puedes realizarlas en el foro aqu. http://www.ucontrol.com.ar/forosmf/programacion-en-visual-basic/re-visual-basic-2008creando-interfaces-para-pic-desde-cero/?PHPSESSID=82a9e11d4dbd2ec59fa1f38fa7f07521
Puede haber futuras actualizaciones, mejoras y contenidos.

www.ucontrol.com.ar

www.ucontrol.com.ar

Pgina 58

Potrebbero piacerti anche