Ya me salió.
Código C++:
Ver originalusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports; // No olvidar.
namespace Arduino_In_Analogico_prueba_01
{
public partial class Form1 : Form
{
// Utilizaremos un string como buffer de recepción.
string Recibidos;
public Form1()
{
InitializeComponent();
if (!serialPort1.IsOpen)
{
try
{
serialPort1.Open();
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
}
// Al recibir datos.
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// Acumula los caracteres recibidos a nuestro 'buffer' (string).
Recibidos = serialPort1.ReadLine();
// Invocar o llamar al proceso de tramas.
Invoke(new EventHandler(Actualizar));
}
// Como variables de clase
private string[] Separador = new string[] { ",", "\r", "\n", "/n" };
private List<string> Leo_Dato1 = new List<string>();
// Procesar los datos recibidos en el bufer y extraer tramas completas.
private void Actualizar(object sender, EventArgs e)
{
double Voltaje = 0;
double Porcentaje = 0;
// En el evento
Leo_Dato1.Clear();
Leo_Dato1.AddRange(Recibidos.Split(Separador, StringSplitOptions.RemoveEmptyEntries));
label_Lectura_Potenciometro.Text = Leo_Dato1[0].ToString();
progressBar1.Value = Convert.ToInt32(Leo_Dato1[0].ToString());
double Dato_Voltaje = Convert.ToDouble(Leo_Dato1[0]);
double Dato_Porcentaje = Convert.ToDouble(Leo_Dato1[0]);
Voltaje = Dato_Voltaje * (5.00 / 1023.00);
Porcentaje = Dato_Porcentaje * (100.00 / 1023.00);
label_Voltio.Text = Voltaje.ToString("N2") + " V.";
label_Portentaje.Text = Porcentaje.ToString("N0") + " %";
}
}
}