Antes que nada, ya que es modo consola, lo pongo en español bien español.
Enviar datos:
1. Configuración del puerto serie.
2. Abrir puerto.
3. La consola espera que introduza datos.
4. Al introducir datos, lo guarda en una variable string, da igual lo que escribas, letras, números o símbolos.
5. Si pulsas Enter envía datos al puerto serie.
Recibir datos:
1. La Consola está en espera de recibir algún dato.
2. Lo guarda en una variable string.
3. La Consola muestra en pantalla los datos recibidos.
4. Si cierra la consola o palicación, cierra el puerto.
El código de enviar datos que he hecho paso a paso es este.
Código
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO.Ports; // No olvidar. using System.Threading; namespace Puerto_serie_consola_CS { class Program { static void Main(string[] args) { Console.Title = "Puerto serie C#"; string Enviar_datos = ""; SerialPort Puerto_serie; // Crear un nuevo objeto SerialPort con la configuración predeterminada. // 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; while (true) { Console.WriteLine("Introduce comandos:"); // Muestra texto en pantalla. Enviar_datos = Console.ReadLine(); // Almacena los datos introducidos en consola a la variable. switch (Enviar_datos) { case "Led_ON": Puerto_serie.Open(); // Abrir puerto serie. byte[] miBuffer = Encoding.ASCII.GetBytes(Enviar_datos); // Guarda un array los datos y codificado en ASCII. Puerto_serie.Write(miBuffer, 0, miBuffer.Length); // Envía al puerto el array almacenado del buffer. Console.WriteLine(); // Salto de línea. //Puerto_serie.Write(Enviar_datos); // Con solo esta línea también vale pero no está codificado. Puerto_serie.Close(); // Cerrar puerto serie. break; case "Led_OFF": Puerto_serie.Open(); // Abrir puerto serie. byte[] miBuffer2 = Encoding.ASCII.GetBytes(Enviar_datos); // Guarda un array los datos y codificado en ASCII. Puerto_serie.Write(miBuffer2, 0, miBuffer2.Length); // Envía al puerto el array almacenado del buffer. Console.WriteLine(); // Salto de línea. //Puerto_serie.Write(Enviar_datos); // Con solo esta línea también vale pero no está codificado. Puerto_serie.Close(); // Cerrar puerto serie. break; } } } } }
Este código de enviar datos lo he probado en Arduino, funciona de maravilla. Antes de continuar con la parte de recibir datos, quiero saber si la forma que lo he programado es suficiente o lo tengo al estilo chapuza. Si alguien sabe mejorarlo de mejor manera, mejor que mejor.
Luego me centro en la parte de enviar datos.
Un cordial salduo.