Después de actualizar a la versión 1.1 el CDLA, ahora le toca el turno al programa en Visual Basic 6 para controlar las locomotoras desde el PC.
Este programa ya transmitía datos desde el PC al pic, ahora lo que quiero que haga es que lea el control manual y muestre en la pantalla los datos.
Para esto he utilizado el objeto MSCOMM1 que ya trae Visual Basic 6 con la instrucción "MScomm1.input".
Intentare explicarlo un poco y espero que sea comprensible:
Lo que mando desde el pic:
SEROUT portb.1 ,N9600,[#variable1,#variable2,#variable3,"AK"]La variable 1 es una variable tipo BYTE que va desde 0 a 255
La variable 2 es una variable tipo BYTE que va desde 1 a 8
La variable 3 es una variable tipo BIT que va desde 0 a 1
Con serialComunicator de mecanique saldría algo así:
010AK010AK010AK.... (Variable1 = 0, Variable2 =1, Variable3 =0, AK)
12831AK12831AK12831AK... (Variable1 = 128, Variable2 =,3 Variable3 =1, AK)
Esta seria la trama de datos.
¿Ahora como extraemos de esa maraña de datos los que nos interesan? Para obtener los datos tenemos la función .Input de MScomm. con el adquirimos los datos del cual luego iremos desgranando dato por dato.
La rutina que vamos a utilizar esta dentro de un timer como podemos ver en el siguiente ejemplo:
Private Sub Timer1_Timer()
dataIn = MSComm1.Input
If dataIn <> "" Then ' Si no es un texto vacio entonces...
tdataIn = Len(dataIn)
If tdataIn = 7 And Right(dataIn, 2) = "AK" Then
Text2.Text = (Right(dataIn, 2))
Text1.Text = dataIn
Vel = Mid$(dataIn, 1, 3)
total = ""
For X = 1 To Len(Vel)
If InStr("0123456789", Mid$(Vel, X, 1)) Then
total = total & Mid(Vel, X, 1)
N = total
End If
Next X
dataIn = (Right(dataIn, 4))
C = Left(dataIn, 1)
dataIn = Right(dataIn, 3)
T = Left(dataIn, 1)
Text3.Text = C
Text4.Text = T
Text5.Text = N
End If
End If
End Sub
Text1 corresponde a la lectura de toda la trama.
Text2 corresponde a la lectura de los caracteres de confirmación (AK).
Text3 corresponde a la lectura de la Variable2
Text4 corresponde a la lectura de la Variable3
Text5 corresponde a la lectura de la Variable1
El tema de como sacar el los números de una cadena, viene muy bien explicado y con varios ejemplos en este foro de Visual Basic.
Hola amigo esta súper tu explicación y me a orientado mucho, te cuento que yo intento separar 3 variables que mando desde el PIC estas son de 8 Bits 0-255 pero cuando cambian su valor y dejan de ser 3 digitos todo se revuelve en los textBox me podrías orientar un poco sobre que puedo hacer ?
ResponderEliminar