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