Hola:
Muchos se pierden en el nuevo .Net 5.0 en el que se hizo este mini tutorial ya no saben como acceder al puerto serie. Se usará con Visual Studio 2019 y el lenguaje C#. El .Net Framwork antiguo es el 4.8 que se quedará ahí sin evolucionar. A partir del .Net 6.0 en adelante ya estará unificado la plataformas, Windows, Mac, Linux, IOs, Android para no tener que programas más de una vez en cada plataforma.
Ahora a parte de añadir en using System.IO.Ports, hay que descargar dicha dll. Ya no incluye el componente serialPort en el cuadro de herramientas, todo es a código, al menos no han quitado esta función de controlar el puerto serie.
Con el nuevo .Net 5.0 bajo Visual C#, ha cambiado mucho a la hora de crear Interfaz que comunique con el puerto serie. Se usa ahora mismo Visual Studio community 2.019 gratuino.
Dejo un mini tutorial sobre envío de datos por el puerto serie.
Paso 1.
Usaremos Windows Form con .Net 5.0. Arrastramos dos botones al formulario.

Paso 2.
Esta parte ha cambiado, ahora hay que añadir referencia del System.IO.Ports, a parte de añadirlo también en using. Enel Explorador de soluciones, vete a Dependencias y con el segundo botón, Administrar paquetes NuGet.

Paso 3.
En buscar poner serialPort, que sea .NET que es el oficial, pulsa el botón instalar.
Paso 4.
Te pondrá un aviso que habrá cambios. Simplemente aceptas y ya lo tienes.

Código fuente C#:
using System;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports; // No olvidar y añadir en referencia.
namespace Puerto_serie_con_Net_50
{
public partial class Form1 : Form
{
SerialPort serialPort1 = new SerialPort();
public Form1()
{
InitializeComponent();
Configuracion();
}
void Configuracion()
{
// Configuramos el puerto serie.
serialPort1.BaudRate = 9600; // Baudios. 115200
serialPort1.PortName = "COM2"; // Nombre del puerto serie.
serialPort1.Parity = Parity.None; // Sin paridad.
serialPort1.DataBits = 8; // 8 Bits.
serialPort1.StopBits = StopBits.Two; // Bits de parada.
serialPort1.ReadBufferSize = 4096; // Tamaño del Búffer de lectura en Bytes.
serialPort1.WriteBufferSize = 2048; // Tamaño del Búffer de escritura en Bytes.
serialPort1.ReadTimeout = 500;
serialPort1.WriteTimeout = 500;
serialPort1.DtrEnable = false;
serialPort1.RtsEnable = false;
// Abrir puerto mientras se ejecuta la palicación.
if (!serialPort1.IsOpen)
{
try
{
serialPort1.Open(); // Abrir puerto.
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
private void button_ON_Click(object sender, EventArgs e)
{
byte[] mBuffer = Encoding.ASCII.GetBytes("Led_ON");
serialPort1.Write(mBuffer, 0, mBuffer.Length);
}
private void button_OFF_Click(object sender, EventArgs e)
{
// Variable tipo arreglo codificado en ASCII.
byte[] mBuffer = Encoding.ASCII.GetBytes("Led_OFF");
// Envía en la variable mBuffer "Led_OFF" al puerto serie.
serialPort1.Write(mBuffer, 0, mBuffer.Length);
}
// Al cerrar la ventana o el formulario
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
serialPort1.Close(); // Cerrar puerto.
}
catch (Exception error)
{
MessageBox.Show(error.Message, "Aviso:",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
}
Gracias por tu tiempo. ![]()



