Hice un ejemplo muy pequeño, que detecta los puertos COM físico y virtuales en el ComboBox, en el cual solo muestra COM1 y COM4 a seas.
Como se puede ver en el Administrador de dispositivos.
¿Cómo puedo hacer que se muestre el nomrbre del dispositivo detectado por el comboBox que muestre el nombre?
El código de lo que he hecho es este.
Código
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO.Ports; // No olvidar. namespace Nombre_COM { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // Añado los puertos disponible en el PC con SerialPort.GetPortNames() al combo try { comboBox_Puerto.DataSource = SerialPort.GetPortNames(); } catch { MessageBox.Show("No encuentra ningún puerto físico ni virtual.", "Aviso:", MessageBoxButtons.OK, MessageBoxIcon.Warning); } // Añado los puertos disponible en el PC con SerialPort.GetPortNames() al combo comboBox_Puerto.DataSource = SerialPort.GetPortNames(); // // Añade puertos disponibles físicos y virtuales. serialPort1.PortName = comboBox_Puerto.Text.ToString(); } // Detecta USB o puerto serie virtual cuando lo conecta y desconecta del cable. protected override void WndProc(ref Message USB) { if (USB.Msg == 0x219) { comboBox_Puerto.DataSource = SerialPort.GetPortNames(); } base.WndProc(ref USB); // Detecta si hay cambios en el usb y si los hay los refleja. } private void button_Conectar_Click(object sender, EventArgs e) { try { serialPort1.PortName = comboBox_Puerto.Text.ToString(); // Puerto seleccionado previamente. serialPort1.Open(); // Abrir puerto. comboBox_Puerto.Enabled = false; button_Conectar.Enabled = false; button_Desconectar.Enabled = true; } catch { MessageBox.Show("El puerto no existe.", "Aviso:", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } private void button_Desconectar_Click(object sender, EventArgs e) { serialPort1.Close(); // Cerrar puerto. comboBox_Puerto.Enabled = true; button_Conectar.Enabled = true; button_Desconectar.Enabled = false; } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (serialPort1.IsOpen) // ¿El puerto está abierto? { serialPort1.Close(); // Cerrar puerto. } } } }
Felices fiestas 2.015.