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