Display data on screen with console in C #

Metaconta 41 Reputation points
2021-02-20T07:28:13.007+00:00

Hello: In an interface made only in console mode in the C # language, I want you to read me through the serial port some numbers from 0 to 1023 which are, for example, in six parts. For now only the image is shown. C # console window. ![1655584][1] This other program can send it through the serial port as indicated below. Visual C # with Windows Form. ![1655586][2] [1]: https://social.msdn.microsoft.com/Forums/getfile/1655584 [2]: https://social.msdn.microsoft.com/Forums/getfile/1655586 Source code to receive the data from the interface in console mode, what I have done so far, I show below. For now I do not receive a single data. C # code: using System; using System.IO; using System.IO.Ports; using System.Text; using System.Threading; namespace Lectura_seis_potenciometros_Arduino_consola_01 { class Program { // Utilizaremos un string "Recibidos" como buffer de recepción. static string Recibidos; static bool _continua; static SerialPort Puerto_serie; static void Main(string[] args) { string COM = ""; StringComparer comparaString = StringComparer.OrdinalIgnoreCase; Thread readThread = new Thread(Leer); // Título de la ventana. Console.Title = "Lectura 6 potenciómetros desde Arduino"; // Tamaño de la ventana, x, y. Console.SetWindowSize(45, 20); // Color de fondo. Console.BackgroundColor = ConsoleColor.Gray; // Color de las letras. Console.ForegroundColor = ConsoleColor.Black; // Limpiar pantalla y dejarlo todo gris. Console.Clear(); // Visible el cursor. Console.CursorVisible = true; // Crear un nuevo objeto SerialPort con la configuración predeterminada. Puerto_serie = new SerialPort(); // Obtenga una lista de nombres de puertos serie. string[] puertos = SerialPort.GetPortNames(); Console.WriteLine("Se encontraron los siguientes puertos series:"); // Muestre el nombre de cada puerto en la consola. foreach (string puerto in puertos) { Console.WriteLine(puerto); } // Configuración. Console.Write(@" Introduzca un número para seleccionar puerto COM. Por ejemplo el 4, sería COM4. Puerto: "); COM = Console.ReadLine(); // Escribir el número del puerto. Console.Clear(); // Limpiar pantalla. Puerto_serie.PortName = "COM" + COM; // Número del puerto serie. // Configuración del puerto serie. Puerto_serie.BaudRate = 115200; Puerto_serie.Parity = Parity.None; Puerto_serie.StopBits = StopBits.One; Puerto_serie.DataBits = 8; Puerto_serie.Handshake = Handshake.None; Puerto_serie.RtsEnable = true; // Establecer los tiempos de espera de lectura / escritura. Puerto_serie.ReadTimeout = 500; // 500 // Milisegundos. Puerto_serie.WriteTimeout = 500; // 500 // Comprueba si puede abrir el puerto serie. try { Puerto_serie.Open(); // Abrir el puerto serie. } // En caso que diera algún error como que no encuentra el puerto seleccionado // muestra una excepción. catch (IOException) { Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo. Console.CursorVisible = false; Console.SetCursorPosition(16, 6); Console.WriteLine(@"El puerto " + Puerto_serie.PortName + @" no existe o no lo encuentra."); Console.ReadKey(); // Pulse cualquier tecla. Environment.Exit(1); // Salir de la aplicación. } _continua = true; readThread.Start(); // Cursos invisible. Console.CursorVisible = false; // Mostrar dibujo en pantalla. Console.SetCursorPosition(3, 3); Console.Write("Potenciómetro A0: "); Console.SetCursorPosition(3, 5); Console.Write("Potenciómetro A1: "); Console.SetCursorPosition(3, 7); Console.Write("Potenciómetro A2: "); Console.SetCursorPosition(3, 9); Console.Write("Potenciómetro A3: "); Console.SetCursorPosition(3, 11); Console.Write("Potenciómetro A4: "); Console.SetCursorPosition(3, 13); Console.Write("Potenciómetro A5: "); Console.SetCursorPosition(0,15); // Generar línea. for (int i = 0; i <= 44; i++) { Console.Write("─"); // ASCII: Alt + 196: ─ } Console.SetCursorPosition(17, 17); Console.Write("Serie"); //Console.WriteLine("Escriba salir para salir"); //while (_continua) //{ // // Cualquier caracter recibido se guarda en la variable mensaje. // mensaje = Console.ReadLine(); // // Compara salir con el mensaje salir si lo haz escrito igual. // // ¿Escribiste la palabra salir? // if (comparaString.Equals("salir", mensaje)) // { // // Sí. Entonces, pone esta variable _continue en false. // _continua = false; // Console.Write("Saliendo..."); // } //} // Bloquea el subproceso. readThread.Join(); // Cierra el puerto serie. Puerto_serie.Close(); } // Lee mensaje recibido. public static void Leer() { // Si _continue es true se ejecuta todas las instrucciones dentro de while. while (_continua) { try { // Almacena en la variable mensaje cualquier caracter o mensaje recibido. string mensaje = Puerto_serie.ReadLine(); // Muestra en pantalla mensaje recibido. Console.WriteLine(mensaje); } catch (TimeoutException) { } } string[] datosArray = Recibidos.Split(','); if (datosArray.Length == 6) // 6 potenciómetros. { Console.SetCursorPosition(20, 3); Console.Write(datosArray[0]); // Entrada analógica A0. Console.SetCursorPosition(20, 5); Console.Write(datosArray[1]); // Entrada analógica A1. Console.SetCursorPosition(20, 7); Console.Write(datosArray[2]); // Entrada analógica A2. Console.SetCursorPosition(20, 9); Console.Write(datosArray[3]); // Entrada analógica A3. Console.SetCursorPosition(20, 11); Console.Write(datosArray[4]); // Entrada analógica A4. Console.SetCursorPosition(20, 13); Console.Write(datosArray[5]); // Entrada analógica A5. } // Limpiar buffer. Recibidos = ""; } } } Any ideas? Have a nice day. ;)

Azure Container Instances
Azure Container Instances
An Azure service that provides customers with a serverless container experience.
635 questions
{count} votes