Hola
Mi pregunta va relacionada a como tengo que enviar los datos desde el pic para poderlos graficarlos en visual basic. Mi tutor me pasó un programa que el hizo donde manda los datos como byte, y pues hasta ahí todo bien, pero no se como me manda los datos el pic, ya que dichos datos son los convertidos por el CAD. En el programa de visual mi tutor espera datos altos y bajos, yo aquí les pongo el código para que lo chequen y me echen la mano en saber con qué tipo de datos se está manejando el pic.
Codigo:
Public Sub adquiere(numdat, sampling As Integer)
"Esta en la nueva función para poder leer datos a 100 Hz
Dim data(5) As String
Dim dato(5) As Long
Dim ix As Integer
Dim bytehigh, bytelow As Byte
Dim resultado As Integer
Dim lee As Integer
Dim IntDatosLeidos As Integer
Dim nada As String
MDITermo.Timer2.Enabled = True "Habilita el segundo timer (timeout comunicación serial)
MDITermo.serport.CommPort = puerto "Configura el número de puerto
MDITermo.serport.Settings = "9600,N,8,1"
MDITermo.serport.InputLen = 1 "Lee todo el buffer con cada input
MDITermo.serport.PortOpen = True "Abrir el puerto
"Vacía el buffer
While MDITermo.serport.InBufferCount > 0
nada = MDITermo.serport.Input
Wend
" Envia una i para iniciar la comunicación
MDITermo.serport.Output = "I"
" Espera a recibir cualquier dato
Do
dummy = DoEvents()
Loop Until MDITermo.serport.InBufferCount >= 1 Or MDITermo.Timer2.Enabled = False
If MDITermo.Timer2.Enabled = False Then
MDITermo.serport.PortOpen = False
Exit Sub
End If
" Lee el dato del puerto serial
InString$ = MDITermo.serport.Input
"Envia el canal
MDITermo.serport.Output = Chr(11) "selecciona adquisiciòn con num muestras y periodo
"Manda el numero de datos y el periodo de muestreo
bytehigh = CByte(numdat / 256)
MDITermo.serport.Output = Chr(bytehigh)
bytelow = numdat Mod 256
MDITermo.serport.Output = Chr(bytelow)
bytehigh = CByte(sampling / 256)
MDITermo.serport.Output = Chr(bytehigh)
bytelow = sampling Mod 256
MDITermo.serport.Output = Chr(bytelow)
IntDatosLeidos = 0
" Meter esto en un do while **************************
"*****************************************************
MDITermo.Timer2.Enabled = False
Do
" Espera a recibir los datos (parte alta y baja)
Do
dummy = DoEvents()
Loop Until MDITermo.serport.InBufferCount >= 2 "Or MDITermo.Timer2.Enabled = False
"If MDITermo.Timer2.Enabled = False Then
" MDITermo.serport.PortOpen = False
" Exit Sub
"End If
data(1) = MDITermo.serport.Input
data(2) = MDITermo.serport.Input
For ix = 1 To 2 "los convierte de ascii
dato(ix) = Asc(data(ix))
Next ix
lee = CInt((dato(1) * 256 + dato(2)))
indice = indice + 1 "incrementa el indice de datos leidos
IntDatosLeidos = IntDatosLeidos + 1
If indice > numdatos Then
numdatos = numdatos + 10
ReDim Preserve ydata1(numdatos)
End If
ydata1(indice) = lee "****** LEE DATO ******
Barra1.Value = ydata1(indice) "actualiza texto
Label2.Caption = ydata1(indice) "actualiza barra
"CWGraph1.PlotY ydata1, 0, periodo * 2
CWGraph1.PlotY ydata1, 0, periodo
Loop Until IntDatosLeidos >= numdat
"*****************************************************
"Fin del do while ************************************
MDITermo.serport.PortOpen = False
MDITermo.Timer2.Enabled = False
End Sub
El detalle de todo esto está en como manipular los datos que obtengo del pic, según yo....