guía de laboratorio

Transcripción

guía de laboratorio
GUÍA DE LABORATORIO
GL-PCS2201-L14O
COMUNICACIÓN SERIAL CON VISUAL BASIC
CARRERA:
441402 INGENIERÍA DE EJECUCIÓN EN ELECTRICIDAD Y ELECTRÓNICA
444803 TÉCNICO EN ELECTRICIDAD Y ELECTRÓNICA
ASIGNATURA: PCS2201 “PROGRAMACIÓN DE COMPUTADORES”
SEMESTRE: II
PROFESOR:
GUILLERMO BADILLO A.
1. Introducción
La siguiente actividad tiene como finalidad familiarizar al alumno con la programación del puerto
serial con visual Basic y la comunicación entre dos computadores a través de un cable serial RS232
Null MODEM por intermedio de los puertos seriales.
2. Objetivos
Al completar esta guía el alumno será capaz de:
Describir el proceso de la programación del puerto serial en Visual Basic.
Controlar los eventos de recepción y transmisión de datos por el puerto serie.
Realizar una comunicación entre dos computadores con puerto serie.
3. Duración
180 minutos
4. Prerrequisitos
Antes de realizar esta guía el alumno debe haber realizado satisfactoriamente la guía GL-PCS2201
L12O PROGRAMACIÓN DEL PUERTO SERIE EN LENGUAJE C
5. Bibliografía previa
Internet Programación del puerto serial en lenguaje Visual Basic
Apuntes entregado por el profesor.
6. Marco teórico
Cómo: Mostrar los puertos serie disponibles en Visual Basic
Visual Basic utiliza My.Computer.Ports para mostrar los puertos serie disponibles del equipo.
El siguiente bloque de código recorre todas las cadenas que devuelve la propiedad
My.Computer.Ports.SerialPortNames. Estas cadenas son los nombres de los puertos serie
disponibles en el equipo.
Normalmente, un usuario selecciona el puerto serie que la aplicación debe utilizar en la lista de
puertos disponibles. En este ejemplo, los nombres de puertos serie se almacenan en un control
ListBox.
Sub GetSerialPortNames() ' Muestra los puertos disponibles
GUÍA DE LABORATORIO
For Each sp As String In My.Computer.Ports.SerialPortNames
ListBox1.Items.Add(sp)
Next
End Sub
Nota
Los nombres de puerto que devuelve My.Computer.Ports.SerialPortNames pueden ser
incorrectos cuando se utiliza Windows 98. Para evitar errores de la aplicación, utilice el control
de excepciones, por ejemplo las instrucciones Try...Catch...Finally o Using, cuando utilice
nombres de puertos para abrirlos.
Cómo: Enviar cadenas a puertos serie en Visual Basic
En este párrafo se explica cómo utilizar My.Computer.Ports para enviar cadenas a los puertos
serie del equipo en Visual Basic. Este ejemplo envía una cadena al puerto serie COM1.
Utilice el método My.Computer.Ports.OpenSerialPort para obtener una referencia al puerto.
El bloque Using permite a la aplicación cerrar el puerto serie aun cuando se genere una
excepción. Todo el código que manipula el puerto serie debe aparecer dentro de este bloque o
dentro de un bloque Try...Catch...Finally.
El método WriteLine envía los datos al puerto serie.
Sub SendSerialData(ByVal data As String) ' envía un Strin a un puerto serial.
Using com1 As IO.Ports.SerialPort = _ My.Computer.Ports.OpenSerialPort("COM1")
com1.WriteLine(data)
End Using
End Sub
Cómo: Recibir cadenas de puertos serie en Visual Basic
Para recibir cadenas del puerto serie
1. Inicialice la cadena de devolución.
Dim returnStr As String = ""
2. Determine qué puerto serie debe proporcionar las cadenas. Este ejemplo supone que es
COM1.
3. Utilice el método My.Computer.Ports.OpenSerialPort para obtener una referencia al
puerto. Para obtener más información, vea My.Computer.Ports.OpenSerialPort (Método).
El bloque Using permite a la aplicación cerrar el puerto serie aun cuando se genere una
excepción. Todo el código que manipula el puerto serie debe aparecer dentro de este
bloque o dentro de un bloque Try...Catch...Finally.
Using com1 As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort("COM1") End Using
4. Cree un bucle Do para leer las líneas de texto hasta que no queden líneas disponibles.
Do Loop
GUÍA DE LABORATORIO
5. Utilice el método ReadLine para leer en el puerto serie la siguiente línea de texto
disponible.
Dim Incoming As String = com1.ReadLine()
6. Utilice una instrucción If para determinar si el método ReadLine devuelve Nothing (lo que
significa que no hay más texto disponible). Si devuelve Nothing, salga del bucle Do.
If Incoming Is Nothing Then Exit Do End If
7. Agregue un bloque Else a la instrucción If para controlar el caso de que realmente se lea la
cadena. El bloque anexa la cadena del puerto serie a la cadena de devolución.
Else returnStr &= Incoming & vbCrLf
8. Devuelva la cadena.
Return returnStr
Ejemplo
Function ReceiveSerialData() As String ' Recive strings desde un puerto serial
Dim returnStr As String = "" Using com1 As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort("COM1") Do Dim Incoming As String =
com1.ReadLine()
If Incoming Is Nothing Then Exit Do Else returnStr &= Incoming & vbCrLf
End If Loop End Using Return returnStr End Function
7. Actividades a realizar
7.1. Actividad 1: COMUNICACIÓN SERIAL ENTRE DOS COMPUTADORES POR PUERTO
SERIE CON VISUAL BASIC
a. Equipos requeridos
-
1 Computador PC con sistema operativo Windows XP.
Software Microsoft Visual Studio.Net 2005
1 Cable RS232 Null Modem
b. Número de alumnos sugerido por equipo
Se recomienda realizar esta actividad en forma grupal, con un máximo dos alumnos.
c. Instrumentos requeridos
-
No Hay
d. Herramientas requeridas
-
No Hay
e. Descripción y procedimiento
En esta actividad desarrollaremos un chat pc a pc a través del puerto serial. Para lo cual necesitará
un cable RS 232 null MODEM para intercomunicar los computadores. El mismo cable usado en la
guía #12.
GUÍA DE LABORATORIO
1.- Abra Visual Studio .NET 2005. Cree un nuevo proyecto de Visual Basic tipo aplicación para
Windows, y siga los procesos estándar aprendidos para nombrar y guardar el proyecto.
2.- Agregue al formulario los siguientes controles :
dos label
Un combobox
Tres Button
Un RichTextBox
Un Textbox
3.- Dispóngalos de acuerdo a la figura 1
Combox1
Button1
Button2
Label1
Label2
RichTextBox
Textbox1
Button3
Figura 1: HMI Chat de PC a PC
4.- Modifique las propiedades de los controles de acuerdo a las siguiente tabla
Control
Propiedad
Valor
Control
Form1
Name
Text
Combox1
Name
Text
cbbCOMPorts
Label1
Name
Text
FrmMain
Chat PC a PC
RS232
Label1
Puertos COM
Disponibles
lblMessage
Button1
Name
Text
btnconnect
Conectar
Button2
false
FixedSingle
txtDataReceived
Button3
Name
Text
Name
Text
name
btndisconnect
desconectar
btnsend
Enviar
txtDataToSend
Label2
Name
Text
Autosize
BorderStyle
RichEditBox1
Name
Textbox1
Propiedad
Valor
GUÍA DE LABORATORIO
Multiline
true
5.- Declare la siguiente variable
Dim WithEvents serialport As New IO.Ports.SerialPort
6.- Declare el siguiente procedimiento
Public Delegate Sub myDelegate()
7.- En el evento load de la Form1, escriba el siguiente bloque de código
For i As Integer = 0 To My.Computer.Ports.SerialPortNames.Count - 1
CbbCOMPorts.Items.Add(My.Computer.Ports.SerialPortNames(i))
Next
8.- En el evento Clic del botón conectar escriba el siguiente bloque de código.
If serialPort.IsOpen Then
serialPort.Close()
End If
Try
With serialPort
.PortName = CbbCOMPorts.Text
.BaudRate = 9600
.Parity = IO.Ports.Parity.None
.DataBits = 8
.StopBits = IO.Ports.StopBits.One
End With
serialPort.Open()
lblMessage.Text = CbbCOMPorts.Text & " conectado."
btnConnect.Enabled = False
btnDisconnect.Enabled = True
Catch ex As Exception
MsgBox(ex.ToString)
End Try
9.- En el evento clic del botón desconectar escriba el siguiente bloque de código:
Try
serialport.Close()
lblMessage.Text = serialport.PortName & " disconnected."
btnconnect.Enabled = True
btndisconnect.Enabled = False
Catch ex As Exception
MsgBox(ex.ToString)
End Try
10.- En el evento click del boton enviar
Try
serialport.Write(txtDataToSend.Text & vbCrLf)
With txtDataReceived
.SelectionColor = Color.Black
.AppendText(txtDataToSend.Text & vbCrLf)
.ScrollToCaret()
End With
txtDataToSend.Text = String.Empty
GUÍA DE LABORATORIO
Catch ex As Exception
MsgBox(ex.ToString)
End Try
11.- En el evento DataReceived del componente serialport escriba el siguiente bloque de código:
txtDataReceived.Invoke(New myDelegate(AddressOf updateTextBox), _
New Object() {})
12.- Vea la figura para más detalles
13.- Cree un procedimiento “updateTextBox” en la clase Form1
Public Sub updateTextBox()
With txtDataReceived
.Font = New Font("Garamond", 12.0!, FontStyle.Bold)
.SelectionColor = Color.Red
.AppendText(serialPort.ReadExisting)
.ScrollToCaret()
End With
End Sub
14.- Salve el proyecto desde la opción Guardar Todo.
15.-
ATENCIÓN: En este momento debe llamar al profesor para que corrobore su trabajo,
NO DEBE CONTINUAR CON EL PRÓXIMO PASO HASTA QUE EL PROFESOR LO
AUTORICE
16.- Inicie la depuración
y ejecute el programa, verificando que se encuentre libre de
errores.
17.- Verifique en el combobox “cbbCOMPorts” la detección de los puertos disponibles de su PC
18.- Baje su aplicación.
19.- NO DEBE CONECTAR EL CABLE SERIAL CON LA APLICACIÓN EJECUTANDOSE.
PUEDE DAÑAR GRAVEMENTE EL PUERTO SERIAL DEL COMPUTADOR.
GUÍA DE LABORATORIO
20.- Verifique que su compañero esté en la misma situación y dispóngase a conectar el cable
serial entre los computadores.
21.- Arranque nuevamente su aplicación y seleccione el puerto de comunicación a usar.
22.- Conecte el puerto seleccionado en el combobox y verifique que en el label1 aparezca el
texto “COM1 conectado”, además verifique el botón conectar pierda el focus.
23.- Escriba un texto en el TextBox y envíelo al PC de su compañero, presionando el botón
enviar.
24.- Al recibir datos por el puerto serial, estos se mostrarán en el componente RichTextBox,
mostrando el string recibido en color rojo, y el string enviado en negrita.
GUÍA DE LABORATORIO
25.- Realizada la actividad pase a la actividad de evaluación.
f.
Guía de auto evaluación para el alumno
1.- ¿Cuál es el objetivo de declarar la variable serialport con eventos (withevents)?
2.- ¿Cuál es el bucle utilizado para detectar las puertas seriales del PC?
3.- ¿Cuáles son los eventos usados para enviar los datos?
4.- ¿Qué significa 9600,8,N,1 en la transmisión de datos?
5.- ¿Qué cambio debe realizar para programar la puerta serial con los siguientes parámetros:
2400,7,E,1?
GUÍA DE LABORATORIO
g. Pauta de evaluación de la actividad
Actitudes
Logrado
No Logrado
Descripción
Orden
Realiza un trabajo en forma ordena mientras realiza la actividad.
Cuidado
Realiza la experiencia cuidando no producir daños físicos y materiales a los
componentes, compañeros y a él mismo, los cuales son intrínsicos a la
actividad.
Seguridad
Observa las normas y ocupa los implementos de seguridad al trabajar
Autocontrol
Se mantiene controlado a pesar de los intentos fallidos y ante la presión del
tiempo para realizar las actividades
Habilidades
Logrado
No Logrado
Descripción
U/ Herramientas
Usa correctamente el entorno de desarrollo de visual Basic
U/ Instrumentos
Usa correctamente las herramientas ayuda
P/ Diagnóstico
Realiza el diagnóstico ayudado por el depurador (Debugger)
U/ Información
Utiliza la información técnica para guiar su diagnóstico.
Determinación de la falla y/o actividad
Primer
intento
Falla y/o
Actividad
Segundo
intento
Tercer
intento
Descripción
Determina una falla o realiza la actividad de forma satisfactoria
GUÍA DE LABORATORIO
8. Pauta de evaluación de la guía
GUÍA DE LABORATORIO
Rut
Nota
Alumno
Asignatura
Programación de Computadores
Sigla
PCS2201
Sección
Nº Guía
14 Nombre
Descripción
Uso de clases y eventos para la comunicación serial entre dos computadoras.
COMUNICACIÓN SERIAL CON VISUAL BASIC
60% Habilidades
7 - Logrado
1 - No
Logrado
%
Descripción
P/
Programación
10%
Programa correctamente usando las clases y eventos de Visual
Basic asociados a la comunicación serial entre dos computadoras.
P/ Compilación
20%
Realiza correctamente la compilación del código fuente y logra
interpretar los errores de compilación.
P/ Ejecución
15%
Realiza correctamente la ejecución del programa y logra
interpretar los errores de ejecución.
P/ Validación
P/ Depuración
U/ Ayuda
15%
Valida correctamente la entrada de datos al programa.
Usa las herramientas de Depuración y de Ayuda del IDE de Visual
Basic
40% Configuración solicitada y/o actividad
Primer
intento:
7
Segundo
4
intento:
Tercer
1
intento:
Diseño
30%
Funcionamiento
10%
Descripción
Realiza el código fuente para un problema matemático bajo la
estructura del lenguaje C/C++, solicitado por el profesor de
forma satisfactoria.
Realiza la explicación del funcionamiento lógico del código
fuente solicitado por el profesor de forma satisfactoria.
N1:
Actitudes : Descuento (si se aplica) en cada ítem  - Máximo 3,5 puntos menos de la nota
 - Logrado
 - No
Logrado
Descripción
Orden
0.5
Limpieza
0.5
Cuidado
1.0
Mantiene su espacio de trabajo ordenado mientras realiza la
experiencia y se comporta en forma ordena mientras realiza las
actividades
Mantiene su espacio de trabajo limpio mientras realiza la
experiencia y se preocupa de que quede limpio al finalizar la
actividad
Realiza la experiencia cuidando no producir daños físicos a los
componentes, compañeros y a sí mismo.
Seguridad
1.0
Observa las normas de seguridad al trabajar en un laboratorio de
computación.
Autocontrol
0.5
Se mantiene controlado a pesar de los intentos fallidos y ante la
presión del tiempo para realizar las actividades.
Descuento
El alumno debe
Firma
Alumno
Repetir la experiencia
Pasar a la experiencia
siguiente
Nota: N1 – N2.
GUÍA DE LABORATORIO

Documentos relacionados