Sei sulla pagina 1di 4

Introducción a la Comunicación serie en VB.NET (Visual 2008) utilizando el Componente SerialPort

John Caipa Roldan 1

En este ejemplo, vamos a escribir una sencilla aplicación de Windows en VB.NET que permite la comunicación bidireccional a través del puerto serie de comunicaciones (COM1). Esta aplicación por ejemplo la podemos utilizar para comunicarnos con un microcontrolador o con otro computador.

1. Abra Visual Studio 2008

o con otro computador. 1. Abra Visual Studio 2008 2. Vaya a archivo - > Nuevo

2. Vaya a archivo - > Nuevo proyecto - > Aplicación de Windows Forms (proyecto de Visual Basic)

3. Nombre su proyecto, por ejemplo: ComSerialApp y clic en Aceptar

su proyecto, por ejemplo: ComSerialApp y clic en Aceptar 4. A continuación, verá Form1.vb [Design] en

4. A continuación, verá Form1.vb [Design] en la ventana principal de Visual Studio.

5. Pasar el ratón sobre el cuadro de herramientas (parte izquierda), vaya a la sección de componentes. Arrastrar y soltar el componente SerialPort en su formulario. Esto creara una instancia de un objeto SerialPort dentro de su aplicación. SerialPort aparecerá en la parte inferior de Form1.vb

SerialPort aparecerá en la parte inferior de Form1.vb 6. Haga clic con el botón derecho en

6. Haga clic con el botón derecho en SerialPort y vaya a propiedades. En la parte inferior derecha de Visual Studio, habrá un panel de propiedades que le permiten cambiar la configuración de SerialPort. Por ahora la propiedad PortName debe estar con COM1. WriteTimeOut y ReadTimeOut en 500ms (opcional). BaudRate en 9600 y StopBits en Two.

1 E-mail: John.caipa@uptc.edu.co

7. Después pase de nuevo al cuadro de herramientas y arrastre un control Button al formulario. Establezca la propiedad Text del control (en el panel de propiedades) con la frase: Abrir Puerto.

(en el panel de propiedades) con la frase: Abrir Puerto . 8. Haga doble clic en

8. Haga doble clic en el botón Abrir puerto y al instante será trasladado a la vista de código de la aplicación.

9. Cortar y pegar estas líneas de código en el interior del Sub Button1_Click. Este código esencialmente abre y cierra el puerto COM serie haciendo clic en el control Button que acabamos de colocar (llamado Button1). Además cambiará los estados en el texto del botón para que coincida con la acción actual que realice (abrir o cerrar el puerto). También activa o desactiva el control Button2 (que añadiremos en el siguiente paso) que utilizaremos para dar la orden de enviar los datos, esto con el fin evitar una operación no válida.

If Button1.Text Is "Abrir Puerto" Then

SerialPort1.Open()

Button1.Text = " Cerrar Puerto " Button2.Enabled = True

ElseIf Button1.Text Is "Cerrar Puerto" Then

SerialPort1.Close()

Button1.Text = " Abrir Puerto " Button2.Enabled = False End If

10. Después vaya a la vista de diseño de Form1.vb. Arrastrar y soltar otro control Button en el formulario. Establecer el texto del Button2 con Enviar. Además arrastre y suelte un control TextBox

Button en el formulario. Establecer el texto del Button2 con Enviar . Además arrastre y suelte

11. Haga doble clic en el botón Enviar y llénelo con el siguiente código dentro del Sub Button2_Click. Este fragmento de código funciona para enviar los datos que se encuentren escritos en el control TextBox que añadimos en el paso anterior, además muestra un historial de lo que se ha enviado en un control ListBox que vamos a agregar en el paso siguiente.

SerialPort1.WriteLine(TextBox1.Text)

ListBox1.Items.Add("enviado:" + TextBox1.Text)

12. A continuación, volver a la vista Diseño y arrastrar y soltar dos controles ListBox en el formulario. Cambiar el tamaño como necesarias para adaptarse a la forma.

el tamaño como necesarias para adaptarse a la forma. 13. Por último haga clic una vez

13. Por último haga clic una vez en el SerialPort en la parte inferior. A continuación, vaya al panel de propiedades, haga clic en el símbolo del relámpago. Verá Misc, DataReceived, ErrorReceived, PinChanged. Haga doble clic en DataReceived y coloque dentro del sub este código.

ListBox2.Items.Add("recibido:" + SerialPort1.ReadExisting())

Esta función se ejecutará o llamará siempre que existan datos almacenados en el búfer de entrada. La emplearemos para mostrar los datos de entrada desde el puerto de comunicaciones serie en el control ListBox2 que añadimos en el formulario en el paso anterior.

14. Has completado la aplicación. Ahora presione Ctrl-F5 para iniciar sin depurar. La aplicación se debe ejecutar. Prueba la aplicación, haga clic en Abrir puerto, escriba algunos datos en el cuadro de texto y, a continuación, haga clic en Enviar. Asegúrese de que esté conectado el cable Rs232 entre 2 equipos o al MAX si está utilizando microcontroladores PIC.

OJO: Si por alguna razón al momento de RECIBIR datos en la aplicación se produce el siguiente error:

Operación no válida a través de subprocesos: Se tuvo acceso al control 'ListBox2' desde un subproceso distinto a aquel en que lo creó., hay que deshabilitar la excepción System.InvalidOperationException de la siguiente manera:

Control.CheckForIllegalCrossThreadCalls = False

Enhorabuena, has escrito correctamente un programa de comunicaciones serie que utiliza la clase SerialPort en VB.NET (Visual Studio 2008)!!

Cuando conozca mejor el entorno de trabajo, puede intentar mejorar su aplicación colocando un botón para salir, o tal vez colocar 2 controles ComboBox para que el usuario pueda seleccionar los baudios y el puerto de comunicaciones, etc. Al final con algo de trabajo obtendrá algo como lo siguiente:

final con algo de trabajo obtendrá algo como lo siguiente: INTENTALO! REFERENCIAS:

INTENTALO!

REFERENCIAS:

VERSION #3