Hola:
Estoy haciendo una pequeña prueba. Recibo en el puerto serie / USB datos que recoge Visual C# de 0 a 1023 y lo muestro en un label.
Hasta ahí funciona bien.
Tengo dos label más. El segundo tiene que demostrar el porcentaje del 0 % a 100% según el dato obtenido del 0 a 1023.
En el otro label, el tercero debemostrar número con decimales del 0.00 a 5.00.
A pesar de encontrar la fórmula, no se implementarlo en C#.
El código es este:
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;
int Porcentaje;
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> leodato1 = new List<string>();
// Procesar los datos recibidos en el bufer y extraer tramas completas.
private void Actualizar(object sender, EventArgs e)
{
// En el evento
leodato1.Clear();
leodato1.AddRange(Recibidos.Split(separador,StringSplitOptions.RemoveEmptyEntries));
label_Lectura_Potenciometro.Text = leodato1[0].ToString();
progressBar1.Value = Convert.ToInt32(leodato1[0].ToString());
progressBar1.PerformStep();
}
}
}
Saludos.