2011-03-26 11 views
10

मेरे पास एक बहुत छोटा कोड है जो उपलब्ध COM पोर्ट दिखाता है।उपलब्ध COM पोर्ट्स

मेरा प्रश्न है:

वहाँ एक आसान तरीका ट्रे और केवल पॉप-अप में चलाने के लिए कार्यक्रम के लिए जब एक नया COM पोर्ट उपलब्ध है और इसे COM पोर्ट के लिए नाम जोड़ने के लिए संभव है कि आप डिवाइस मैनेजर ec "यूएसबी सीरियल पोर्ट" में देख सकते हैं?

मैं अक्सर यूएसबी-> आरएस 232 कॉमवर्टर जोड़ता/निकालता हूं और इसे गधे में दर्द महसूस करता हूं क्योंकि मुझे यह देखने के लिए डिवाइस मैनेजर में जाना होगा कि यह कौन सा COM पोर्ट असाइन किया गया है। यह वही नहीं हर बार

हो सकता है कि पहले से ही है कि यह कर सकते हैं एक छोटे से एप्लिकेशन है, लेकिन मैं गूगल पर यह पाया नहीं किया अभी तक

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) 
    { 
    } 
} 

}

उत्तर

5

this question पर एक नजर डालें है। यह उपलब्ध COM पोर्ट खोजने के लिए WMI का उपयोग करता है। आप ट्रैक बंदरगाहों का पता लगा सकते हैं, और केवल नए लोगों के बारे में सूचित कर सकते हैं।

4

यह पता लगाने के लिए कि डिवाइस हॉट-प्लग किए जाने पर, आप WM_DEVICECHANGE को संभालना चाहते हैं। इन सूचनाओं के वितरण को सक्षम करने के लिए RegisterDeviceNotification पर कॉल करें।

0

कुछ डिवाइस की COM संख्या प्राप्त करने के लिए कोड।

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);