Tengo un programa hecho a medias. Está hecho con la consola C#.
Al pulsar la X de la ventana, quiero que haga estas cosas.
Pregunta si realmente quiero salir, si salgo, pone esto.
Código
Si pulso X con el ratón { Puerto_serie.Write("Puerto y aplicación cerrado."); // Enviar mensaje. Puerto_serie.Close(); // Cierra el puerto serie. Environment.Exit(0); // Cerrar aplicación. }
Arriaba está mal planteado.
Primero pregunta si quiero salir, con un Sí y un No, si pulso No, el programa sigue su curso, si pongo Si, cierra el programa y me envía estos datos al puerto serie antes de que cierre del todo.
Código
Puerto_serie.Write("Puerto y aplicación cerrado."); // Enviar mensaje. Puerto_serie.Close(); // Cierra el puerto serie. Environment.Exit(0); // Cerrar aplicación.
Código ejemplo casi completo.
Código
using System; using System.IO.Ports; namespace Introducir_datos_puerto_serie_consola_01 { class Program { static void Main(string[] args) { // Título de la ventana. Console.Title = "Enviar datos al puerto serie"; // Tamaño de la ventana, x, y. Console.SetWindowSize(70, 25); // Color de fondo. Console.BackgroundColor = ConsoleColor.Blue; // Color de las letras. Console.ForegroundColor = ConsoleColor.Yellow; // Limpiar pantalla y dejarlo todo gris. Console.Clear(); // Visible el cursor. Console.CursorVisible = true; // Cree un nuevo objeto SerialPort con la configuración predeterminada. 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; // Milisegundos. Puerto_serie.WriteTimeout = 500; // Detecta cualquier dato recibido. Puerto_serie.Open(); // Abrir puerto. //Console.CursorSize = 1; do { Console.Write("Introduzca un texto: "); string texto; texto = Console.ReadLine(); Console.WriteLine("El texto introducido es: " + texto); //texto = Encoding.ASCII.GetBytes("Luz_ON"); // Codificación ASCII y guarda en la variable array tipo byte. Puerto_serie.Write(texto); // Envía los datos del string todo su contenido. Console.WriteLine("Comando {0} enviado.", texto); // Muestra en pantalla comandos enviado. Console.WriteLine(); // ################ Pregunta aquí si quieres salir. ################ //Si pulso X con el ratón //{ // Puerto_serie.Write("Puerto y aplicación cerrado."); // Enviar mensaje. // Puerto_serie.Close(); // Cierra el puerto serie. // Environment.Exit(0); // Cerrar aplicación. //} // ##################################################################### } while (true); } // Detecta cualquier dato entrante. private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; string entradaDatos = sp.ReadExisting(); // Almacena los datos recibidos en la variable tipo string. Console.WriteLine("Datos recibido desde Arduino: " + entradaDatos); // Muestra en pantalla los datos recibidos. } } }
Gracias camaradas.
Saludos.