Anexo H - Universidad de Sevilla

Anuncio
Diseño
Integrado
Anexo H: Código de la Aplicación
Primera Aplicación: Escribiendo datos sobre la pantalla.
Aplicación que utilizamos para comprobar que la transmisión entre el módulo
USB del Pic y el ordenador se realiza de forma correcta, verificando que no existe
pérdida de información y que la lectura de los datos se realiza de manera adecuada.
Option Explicit
Dim eje As Integer
Private Sub Conectar_Click()
'comprueva que el puerto este cerrado para poder abrirlo
If MSComm1.PortOpen = False Then
'determina el puerto que hemos seleccionado
MSComm1.CommPort = 6
'determina: 9600-Velocidad en Baudios, N-No utiliza ninguna paridad,
'8-Cantidad de bits de envio y recepcion por paquete,
'1-Determina los bits de parada
MSComm1.Settings = "9600,N,8,1"
'lee todo el buffer de entrada para que quede vacio
MSComm1.InputLen = 0
'Abre el puerto seleccionado
MSComm1.PortOpen = True
Me.Caption = "Conectado por el puerto " & MSComm1.CommPort
End If
End Sub
Private Sub Desconectar_Click()
If MSComm1.PortOpen Then
'cierra el puerto
MSComm1.PortOpen = False
Me.Caption = "Desconectado"
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
Desconectar_Click
End Sub
Universidad de Sevilla
Pág. 183
Diseño
Integrado
ANEXO H
Código Aplicación
Private Sub LIMPIAR_Click()
List1.Clear
List2.Clear
List3.Clear
List4.Clear
End Sub
'El evento OnComm se genera siempre que cambia el valor de la propiedad
'CommEvent e indica que se ha producido un evento o un error en la comunicación.
Private Sub MSComm1_OnComm()
Dim i As Integer
Dim datain As Variant
Dim dato_array() As Byte
Dim TIEMPO(0 To 20000) As Single
Dim TENSION(0 To 20000) As Single
If MSComm1.CommEvent = comEvReceive Then
If MSComm1.InBufferCount = 4 Then
'Recoge el valor de entrada
datain = MSComm1.Input
'Cambio formato a 4 bytes
dato_array = datain
TIEMPO(i) = dato_array(2)
TIEMPO(i) = TIEMPO(i) * 256
TIEMPO(i) = TIEMPO(i) + dato_array(0)
'Obtenemos el valor de tiempo
TENSION(i) = dato_array(6)
TENSION(i) = TENSION(i) * 256
TENSION(i) = TENSION(i) + dato_array(4)
'Obtenemos el valor de la conversión A/D
If eje = 0 Then
List1.AddItem TIEMPO(i)
List2.AddItem TENSION(i)
eje = 1
ElseIf eje = 1 Then
List3.AddItem TENSION(i)
eje = 2
ElseIf eje = 2 Then
List4.AddItem TENSION(i)
eje = 0
End If
i=i+1
End If
End If
End Sub
Pág. 184
Universidad de Sevilla
ANEXO H
Código Aplicación
Diseño
Integrado
Vemos los resultados obtenidos con la aplicación:
CASO 1: Reposo Aplicación Iniciándose
Comprobamos que todos los ejes la aceleración medida en los distintos ejes es
constante, variando la medida del eje z ya que este se encuentra sometido a la
aceleración de la gravedad.
Fig. 105 Escritura de los datos en pantalla. Situación Reposo.
CASO 2: Movimiento sobre una superficie Plana.
En este caso comprobamos como los valores leídos para el eje z se mantienen
en torno a un valor constante mientras que los valores para los ejes x y e varían según
la aceleración a la que se estén viendo sometidos.
Universidad de Sevilla
Pág. 185
Diseño
Integrado
ANEXO H
Código Aplicación
Fig. 106 Escritura de los datos en Pantalla
Pág. 186
Universidad de Sevilla
ANEXO H
Código Aplicación
Diseño
Integrado
Aplicación: PFC_Detector de Movimiento.
Aplicación que dibuja las aceleraciones que el dispositivo envía para cada uno
de los ejes.
Option Explicit
Dim eje As Integer
Dim n As Integer
Private Sub Conectar_Click()
'comprueva que el puerto este cerrado para poder abrirlo
If MSComm1.PortOpen = False Then
'determina el puerto que hemos seleccionado
MSComm1.CommPort = 6
'determina: 9600-Velocidad en Baudios, N-No utiliza ninguna paridad,
'8-Cantidad de bits de envio y recepcion por paquete,
'1-Determina los bits de parada
MSComm1.Settings = "9600,N,8,1"
'lee todo el buffer de entrada para que quede vacio
MSComm1.InputLen = 0
'Abre el puerto seleccionado
MSComm1.PortOpen = True
Me.Caption = "Conectado por el puerto " & MSComm1.CommPort
End If
Picture1.AutoRedraw = True
Picture2.AutoRedraw = True
Picture3.AutoRedraw = True
Picture1.Line
Picture1.Line
Picture2.Line
Picture2.Line
Picture3.Line
Picture3.Line
(0,
(0,
(0,
(0,
(0,
(0,
0)-(1000, 0), vbBlack
0)-(0, 200), vbBlack
0)-(1000, 0), vbBlack
0)-(0, 200), vbBlack
0)-(1000, 0), vbBlack
0)-(0, 200), vbBlack
Picture1.AutoRedraw = False
Picture2.AutoRedraw = False
Picture3.AutoRedraw = False
End Sub
Private Sub Desconectar_Click()
If MSComm1.PortOpen Then
'cierra el puerto
MSComm1.PortOpen = False
Me.Caption = "Desconectado"
End If
End Sub
Universidad de Sevilla
Pág. 187
Diseño
Integrado
ANEXO H
Código Aplicación
Private Sub Form_Unload(Cancel As Integer)
Desconectar_Click
End Sub
Private Sub LIMPIAR_Click()
Picture1.AutoRedraw = False
Picture2.AutoRedraw = False
Picture3.AutoRedraw = False
Picture1.Cls
Picture2.Cls
Picture3.Cls
End Sub
'El evento OnComm se genera siempre que cambia el valor de la propiedad
'CommEvent e indica que se ha producido un evento o un error en la comunicación.
Private Sub MSComm1_OnComm()
Dim i As Integer
Dim datain As Variant
Dim dato_array() As Byte
Dim TIEMPO(0 To 20000) As Single
Dim TENSION(0 To 20000) As Single
If MSComm1.CommEvent = comEvReceive Then
If MSComm1.InBufferCount = 2 Then
'Recoge el valor de entrada
datain = MSComm1.Input
'Cambio formato a 4 bytes
dato_array = datain
TENSION(i)
TENSION(i)
TENSION(i)
TENSION(i)
=
=
=
=
dato_array(2)
TENSION(i) * 256
TENSION(i) + dato_array(0)
((TENSION(i) * 5) / 1024)
If n < 1000 Then
If dato_array(4) = 0 Then
Picture1.PSet (n, TENSION(i) * 40)
ElseIf dato_array (4) = 1 Then
Picture2.PSet (n, TENSION(i) * 40)
ElseIf dato_array(4) = 2 Then
Picture3.PSet (n, TENSION(i) * 40)
n=n+1
End If
Pág. 188
Universidad de Sevilla
ANEXO H
Código Aplicación
Diseño
Integrado
Else
Picture1.AutoRedraw = False
Picture2.AutoRedraw = False
Picture3.AutoRedraw = False
Picture1.Cls
Picture2.Cls
Picture3.Cls
n=0
End If
i=i+1
End If
End If
End Sub
Universidad de Sevilla
Pág. 189
Descargar