using System;
using System.IO.Ports;
using System.Threading;
namespace Introducir_datos_puerto_serie_consola_02
{
class Program
{
static bool _continua;
// Cree un nuevo objeto SerialPort con la configuración predeterminada.
static SerialPort Puerto_serie
= new SerialPort
("COM2");
static void Main(string[] args)
{
string nombre;
string mensaje;
StringComparer comparaString = StringComparer.OrdinalIgnoreCase;
Thread readThread
= new Thread
(Leer
);
// 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;
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
// Abrir puerto serie.
Puerto_serie.Open();
_continua = true;
readThread.Start();
// Mostrar texto Nombre y se
Console.Write("Nombre: ");
// guarda en la variable nombre.
nombre = Console.ReadLine();
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;
}
// No. Entonces, envía por el puerto serie tu nick
// y mensaje que haz escrito.
else
{
Puerto_serie.WriteLine(
String.Format("<{0}>: {1}", nombre, mensaje));
}
}
// 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) { }
}
}
}
}