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....

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 BasicEs 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.
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
HERCULESEn 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:
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.