Autor Tema: Como obtener datos para graficar  (Leído 3694 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
Como obtener datos para graficar
« en: 10 de Junio de 2004, 18:39:00 »
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....


 

anything