Voy a intentar hacer un ejmeplo de almacenar la cantidad de datos en Byte[]. Deja ver si me sale y mostrarlo en pantalla.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúByte[] miArray = Encoding.ASCII.GetBytes("Texto o mensaje a enviar.");
Cita de: Serapis en 14 Diciembre 2020, 01:58 AM
Ahora la cuestión es... porqué perder tiempo con la consola para intentar sortear los límites prácticos de la consola cuando hay controles para hacer interfaces de usuario sin las limitaciones de la consola????????. Un chat acaso no será más cómodo en una ventana (form) con alguna caja de texto multilínea... pero en fin, cada uno pierde el tiempo como quiere.
Byte[] unBuffer = Encoding.ASCII.GetBytes("Texto o mensaje a enviar."); // Codificación ASCII y guarda en la variable array tipo byte.
Puerto_serie.Write(miBuffer1, 0, miBuffer1.Length); // Envía los datos del buffer todo su contenido.
Byte[] variable = Console.ReadLine();
Byte[] unBuffer = Encoding.ASCII.GetBytes(variable);
Puerto_serie.Write(miBuffer1, 0, miBuffer1.Length);
using System;
using System.IO;
using System.IO.Ports;
using System.Threading;
namespace Chat_consola_02
{
class Program
{
static bool _continua;
static SerialPort Puerto_serie;
static void Main(string[] args)
{
string COM = "";
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.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[] ports = SerialPort.GetPortNames();
Console.WriteLine("Se encontraron los siguientes puertos series:");
// Muestre el nombre de cada puerto en la consola.
foreach (string port in ports)
{
Console.WriteLine(port);
}
// 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();
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();
// 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) { }
}
}
}
}
using System;
using System.IO;
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 readonly 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) { }
}
}
}
}