2011-03-26 5 views
10

J'ai un très petit code qui montre les ports COM disponibles.Liste des ports COM disponibles

Ma question est:

est-il un moyen facile d'avoir le programme à exécuter dans le bac et ne pop-up lorsqu'un nouveau port COM est disponible et est-il possible d'ajouter le nom du port COM que vous peut voir dans le gestionnaire de périphériques ec "port série USB"?

J'ajoute/enlève souvent un comverter USB-> RS232 et je trouve ça pénible parce que je dois aller dans le gestionnaire de périphériques pour voir à quel port COM il est assigné. Ce n'est pas la même chaque fois

Peut-être il y a déjà une petite application qui peut faire cela, mais je ne ai pas trouvé sur Google encore

using System; 
using System.Windows.Forms; 
using System.IO.Ports; 

namespace Available_COMports 

{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
    { 
     InitializeComponent(); 

     //show list of valid com ports 
     foreach (string s in SerialPort.GetPortNames()) 
     { 
      listBox1.Items.Add(s); 
     } 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
    } 

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
    } 
} 

}

Répondre

5

Jetez un oeil à this question. Il utilise WMI pour trouver les ports COM disponibles. Vous pouvez garder une trace de ce que les ports COM existent, et seulement notifier les nouveaux.

0

Le code pour obtenir le numéro COM de certains périphériques.

List<USBDeviceInfo> devices = new List<USBDeviceInfo>(); 
ManagementObjectSearcher searcher = 
    new ManagementObjectSearcher("root\\CIMV2", 
    "SELECT * FROM Win32_PnPEntity"); 
foreach (ManagementObject queryObj in searcher.Get()) 
{ 
    devices.Add(new USBDeviceInfo(
     (string)queryObj["DeviceID"], 
     (string)queryObj["PNPDeviceID"], 
     (string)queryObj["Name"] 
    )); 
} 

foreach (USBDeviceInfo usbDevice in devices) 
{ 
    if (usbDevice.Description != null) 
    { 
     if (usbDevice.Description.Contains("NAME OF Device You are Looking for")) //use your own device's name 
     { 
      int i = usbDevice.Description.IndexOf("COM"); 
      char[] arr = usbDevice.Description.ToCharArray(); 
      str = "COM" + arr[i + 3]; 
      if (arr[i + 4] != ')') 
      { 
       str += arr[i + 4]; 
      } 
      break; 
     } 
    } 
} 

mySerialPort = new SerialPort(str); 
Questions connexes