Quiero mejorar el código si o si. En este caso el programa funciona de mil maravillas menos una cosa que no me gusta, a veces la pantalla parpadea, debido bajo mi punto de vista que hace refrezco.
Quiero consejos de como hacer que se refrezca los datos y la bara amarilla. Hacer mejor código.
El código original es este.
Código C++:
Ver original
using System; using System.IO.Ports; // No olvidar. using System.IO; namespace Porcentaje_Barra_P_Serie_Consola_2_CS { class Program { public static string Recibidos = ""; public static double Resultado_Porcentaje = 0; public static double Resultado_Voltios = 0; public static double Mitad_barra = 0; static void Main(string[] args) { Console.WindowWidth = 55; Console.WindowHeight = 15; Console.Title = "Serial Port C#"; SerialPort Puerto_serie; // Crear un nuevo objeto SerialPort con la configuración predeterminada. Puerto_serie = new SerialPort(); // Configuración. Puerto_serie.PortName = "COM4"; // Número del puerto serie. Puerto_serie.BaudRate = 115200; // Baudios. Puerto_serie.Parity = Parity.None; // Paridad. Puerto_serie.DataBits = 8; // Bits de datos. Puerto_serie.StopBits = StopBits.Two; // Bits de parada. Puerto_serie.Handshake = Handshake.None; // Control de flujo. // Establecer la lectura / escritura de los tiempos de espera. Puerto_serie.ReadTimeout = 500; Puerto_serie.WriteTimeout = 500; try { Puerto_serie.Open(); // Abrir el puerto serie. } catch (IOException) { Console.ForegroundColor = ConsoleColor.Red; Console.CursorVisible = false; Console.SetCursorPosition(16, 6); Console.WriteLine(@"El puerto " + Puerto_serie.PortName + @" no existe o no lo encuentra."); } Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); Console.Read(); } private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; Recibidos = sp.ReadLine(); Console.Clear(); Recibidos = Recibidos.Replace("\n\r", ""); int Variar_este_valor = Convert.ToInt32(Recibidos); Console.WriteLine(); Resultado_Porcentaje = Variar_este_valor * (100.00 / 1023.00); Resultado_Voltios = Variar_este_valor * (5.00 / 1023.00); //Console.Clear(); Console.WriteLine("Datos recibidos: {0}", Recibidos); Console.CursorVisible = false; // Mostrar barra de porcentaje en pantalla. Console.WriteLine(); Console.WriteLine("0 % 50 % 100 %"); Console.WriteLine("┌────────────────────────┬───────────────────────┐"); Console.ForegroundColor = ConsoleColor.Yellow; // Se dibide por dos la barra del porcentaje para que quepa decuadamente en la pantalla. Mitad_barra = Resultado_Porcentaje / 2; if (Mitad_barra > 50) { Mitad_barra = 50; } for (int i = 1; i <= Mitad_barra; i++) { Console.Write("█"); // Muestra ASCII 219 Dec y DB en Hex. } // Si sobre pasa 100, muestra # al final de la barra del porcentaje de color rojo. if (Resultado_Porcentaje > 100) { Console.ForegroundColor = ConsoleColor.Red; Console.Write("#"); } Console.ForegroundColor = ConsoleColor.Gray; // Vuelve al color gris. Console.WriteLine("\n"); Console.Write("Percentage: " + Resultado_Porcentaje.ToString("N2") + " %."); Console.WriteLine(); Console.Write("Voltage: " + Resultado_Voltios.ToString("N2") + " V."); Console.WriteLine("\n"); } } }
¿Algún consejo?
Saludos.