Autor Tema: DataLogger Visual Basic 2010  (Leído 14540 veces)

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

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Re: DataLogger Visual Basic 2010
« Respuesta #15 en: 27 de Febrero de 2014, 20:33:29 »

Os presento aquí una guía rápida de como capturar datos desde el puerto serie el PC y representarlos en dato numérico y en una gráfica. Tened en cuenta que este programa lo he hecho en el tiempo que puesto el ultimo post hasta ahora, parando 15 min para cenar y que aquí ya son horas de irse a la cama que mañana hay que trabajar....  :D

Herramientas necesarias:
-   Visual Basic
-   Tarjeta electrónica que nos envíe datos al PC.

Para comenzar vamos a la página de Visual  Studio y nos bajamos la versión express de Visual Basic:
Visual Basic

Es posible que podáis bajar alguna versión más reciente, en mi caso lo he intentado pero por mi versión de Windows no puedo instalarlo.
Yo he descargado Visual Basic 2010 Express. Lo descargamos e instalamos.
Una vez instalado Visual Basic pasamos a la tarjeta electrónica. En mi caso, por sencillez y rapidez para hacer el ejemplo, voy a usar una tarjeta Arduino Mega que tengo por casa.



La programaré para que el dato enviado varíe simulando una sinusoide con la función sin(), así el ejemplo será más vistoso cuando veamos el dato reflejado en la gráfica.

Código: [Seleccionar]
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  float something = millis()/1000.0;
  int value = 128.0 + 128 * sin( something * 2.0 * PI  );
  Serial.println(value);
}

Una vez programada la tarjeta, comprobamos que la comunicación funciona, para esto abrimos una aplicación como el Hyperterminal de Windows u otro programa similar.
Por ejemplo HERCULES
En mi caso usaré el mismo IDE de Arduino que ya incorpora un terminal serie para comprobar que la comunicación funciona correctamente.



 Una vez comprobado que nuestra tarjeta y el programa funcionan correctamente pasamos a hacer el programa de Visual Basic.

MANOS A LA OBRA:
Abrimos Visual Basic y le damos a “Nuevo proyecto”


 
Seleccionamos “Aplicación de Windows Form” y le damos un nombre al proyecto en la parte inferior de la ventana.



Le damos al botón “Aceptar” y nos aparecerá nuestro primer Form para moldearlo y poner los controles que necesitemos.



Lo primero que vamos a hacer con este form es estirarlo para tener más sitio para nuestro grafico y cambiarle el nombre. Para cambiar el nombre seleccionamos el Form y en el panel derecho de “Propiedades” cambiamos la casilla “Text” por el nombre que queremos que aparezca en el form.



Escondido en el lado izquierdo tenemos el cuadro de herramientas. Lo abrimos y añadimos a nuestro form los siguientes controles: Button, 2 Labels, ComboBox, TextBox, Chart, Timer y SerialPort.
Nos quedará algo así:


 
El resumen de lo que vamos a hacer con cada componente es el siguiente:
ComboBox: lo usaremos para listar todos los puertos serie del PC
TextBox: Representaremos en este TextBox el dato que recibimos por el puerto serie
Labels: La usaremos como texto, para indicar que el combobox es la lista de puertos serie y el TextBox es el Dato que recibimos.
Button: Lo usaremos para conectarnos al puerto serie una vez seleccionado el puerto al que queremos conectar.
Chart: Como su nombre indica es el componente que representará el dato en una gráfica.
Timer: Nos permitirá hacer un refresco del dato y la gráfica cada X tiempo
SerialPort: Aunque no lo veremos en el form en tiempo de ejecución este control es que el controlará el puerto serie del PC.



Selección del tipo de grafico: Seleccionamos el Chart y en la ventana de propiedades del lado derecho hacemos clic en “Series” y dentro de la ventana de configuración de la serie buscamos “ChartType” y seleccionamos el tipo de grafico que queremos representar, en mi caso voy a poner Line.
 
Aceptamos y salimos.
Timer: Lo seleccionamos y en la ventana de propiedades ponemos un intervalo de 50ms y lo avilitamos poniendo “Enabled” a “True”.
Como código del programa ponemos lo siguiente:

Código: [Seleccionar]
Public Class Form1

    Dim dato

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Muestra los puertos serie disponibles en el PC.
        For Each sp As String In My.Computer.Ports.SerialPortNames
            ComboBox1.Items.Add(sp)
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        If SerialPort1.IsOpen Then
            SerialPort1.Close()
            Button1.Text = "Conectar"
        Else
            If ComboBox1.SelectedItem <> "" Then
                SerialPort1.BaudRate = 9600
                SerialPort1.PortName = ComboBox1.SelectedItem
                SerialPort1.Open()
                Button1.Text = "Desconectar"
            End If
        End If

    End Sub

    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        On Error GoTo Salir

        dato = CStr(SerialPort1.ReadLine)


Salir:
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        If SerialPort1.IsOpen Then
            If dato = vbEmpty Then
                dato = 0
            End If

            TextBox1.Text = dato
            Chart1.Series("Series1").Points.AddY(dato)
        End If

    End Sub
End Class

Ejecutamos, seleccionamos el puerto correspondiente y le damos al botón “Conectar”. EL resultado es el siguiente:



Bueno, hasta aquí de momento que me muero de sueño. Ya veo que han surgido algunas dudas y algunas respuestas. Yo he intentado hacer algo sencillo y muy básico para que todos puedan entenderlo, pero veo que hay algunas preguntas con un poco más de nivel que el ejemplo. En cualquier caso ya iremos solucionando entre todos las dudas que surjan.

Espero que os sea útil. Otro día más.

 :ni)
 
BitPIC

Desconectado compu_chips

  • PIC10
  • *
  • Mensajes: 1
Re: DataLogger Visual Basic 2010
« Respuesta #16 en: 15 de Agosto de 2014, 12:25:00 »
Amigo, yo estoy obteniendo datos de un plc ya los tengo en visual, pero los quiero graficar en tiempo real pero tambien quiero que se guarde un historial en un archivo .dat o algo asi para poderlos consultar, tienes alguna idea????

Saludos

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Re: DataLogger Visual Basic 2010
« Respuesta #17 en: 15 de Agosto de 2014, 13:31:45 »
Amigo, yo estoy obteniendo datos de un plc ya los tengo en visual, pero los quiero graficar en tiempo real pero tambien quiero que se guarde un historial en un archivo .dat o algo asi para poderlos consultar, tienes alguna idea????

Saludos

Hola, mira en este link, a ver si los métodos save te pueden servir para tu aplicación:
MSDN

Si lo que necesitas es registrar los datos y no te sirven estos métodos puedes hacerlo tu guardando los datos que recibes por el puerto serie en una base de datos o en un archivo antes o después de mostrarlos en la gráfica.

Saludos
BitPIC

Desconectado jl33

  • PIC10
  • *
  • Mensajes: 1
Re: DataLogger Visual Basic 2010
« Respuesta #18 en: 23 de Marzo de 2015, 22:20:22 »
Hola a todos, muy buen tutorial de la aldquisicion de datos en visual basic.
Quisiera saber como adquirir la señal de dos sensores?
No se como recibir los datos por el puerto serie en visual basic. Por favor ayuda



Desconectado pipete01

  • PIC10
  • *
  • Mensajes: 1
Re:DataLogger Visual Basic 2010
« Respuesta #19 en: 12 de Septiembre de 2016, 13:31:15 »
Hola bitpic, me encuentro realizando un proyecto similar en visual studio, en el foro no me permite ver las fotografías que publicaste y el link del código ya esta des-habilitado para la descarga, me puedes ayudar con esto por favor, la verdad ya no se como graficar las señales que llegan por el puerto serial en el MS CHart de visual, por favor ayúdame.