2010-12-21 2 views
15

से डिवाइस का नाम प्राप्त करें I सर्च पोर्ट से जुड़े सामग्री का डिवाइस नाम कैसे प्राप्त करें Iसीरियल पोर्ट

मेरे पास दो अलग-अलग प्रकार की सामग्री है जो इससे जुड़ सकती हैं।

पहले एक: एक प्रिंटर (केवल डेटा प्राप्त करता है और कुछ भी नहीं वापस भेज) दूसरा एक: एक संतुलन (केवल डेटा भेजने और प्राप्त करता है कुछ भी नहीं है)

मैं सामग्री के इस दो प्रकार के कैसे अलग कर सकते हैं?

धन्यवाद।

+0

बैलेंस समय-समय पर डेटा नहीं भेजता है, यह केवल तब होता है जब कुछ घटना दूसरी छोर पर होती है;) –

उत्तर

9

सीरियल पोर्ट (यूएआरटी आरएस 232) उपकरणों की पहचान करने का कोई अनोखा तरीका नहीं है।

जब तक डिवाइस में विशेष आदेश नहीं होते हैं, तो आप डिवाइस को भेज सकते हैं और इसे पहचानने वाली जानकारी के साथ जवाब दे सकते हैं, आप ऐसा नहीं कर सकते हैं।

आमतौर पर धारावाहिक बंदरगाह पर भरोसा करने वाला एक मानक सेटिंग स्क्रीन होगी जिसमें उपयोगकर्ता सीरियल पोर्ट को कॉन्फ़िगर करने के लिए उपयोग करेगा, डिवाइस बॉड रेट, समानता बिट्स, स्टॉप बिट्स और डेटा बिट्स जैसी चीजों के लिए पोर्ट कॉन्फ़िगरेशन । यदि एक ही पोर्ट पर एकाधिक डिवाइस स्विच किए जा सकते हैं, तो ऑपरेटर डिवाइस के साथ संवाद करने से पहले लक्ष्य डिवाइस के लिए सही कॉन्फ़िगरेशन चुनने के लिए ज़िम्मेदार होगा।

यह यूएसबी आदि जैसी नई प्रौद्योगिकियों का लाभ है जहां डिवाइस पहचान मानक में बनाई गई है।

+0

मैं एक औद्योगिक परियोजना में हूं, इसलिए यूएसबी हर जगह लागू नहीं है ... :(आप इस मामले को कैसे प्रबंधित करेंगे –

+0

@ अर्नुड: उपयोगकर्ता से पूछें (शायद सिर्फ एक बार और जवाब याद रखें) –

+0

@ अर्नुनाफ, क्योंकि आरएस -232 स्पेक में इसके लिए मानक नहीं है, तो आप सीरियल पोर्ट और आशा की जांच कर सकते हैं पूरी तरह से डिवाइसों में कुछ प्रकार की पहचान करने वाली प्रतिक्रिया होती है जिसका आप उपयोग कर सकते हैं। यदि आप भाग्यशाली हैं तो डिवाइस में एक दस्तावेज़ वाली कमांड भाषा भी हो सकती है जिसका उपयोग आप डिवाइस को संवाद और क्वेरी करने के लिए कर सकते हैं, लेकिन यह डिवाइस के आधार पर कुछ प्रकार का ह्युरिस्टिक होगा प्रश्न में। आमतौर पर इसे किसी एप्लिकेशन की सेटिंग के हिस्से के रूप में संभाला जाता है, जहां उपयोगकर्ता डिवाइस और सीरिया की पहचान करने के लिए ज़िम्मेदार होता है एल पोर्ट कॉन्फ़िगरेशन (बाउड दर, समानता इत्यादि) –

10

इस प्रयास करें:

 ManagementObjectCollection ManObjReturn; 
     ManagementObjectSearcher ManObjSearch; 
     ManObjSearch = new ManagementObjectSearcher("Select * from Win32_SerialPort"); 
     ManObjReturn = ManObjSearch.Get(); 

     foreach (ManagementObject ManObj in ManObjReturn) 
     { 
      //int s = ManObj.Properties.Count; 
      //foreach (PropertyData d in ManObj.Properties) 
      //{ 
      // MessageBox.Show(d.Name); 
      //} 
      MessageBox.Show(ManObj["DeviceID"].ToString()); 
      MessageBox.Show(ManObj["PNPDeviceID"].ToString()); 
       MessageBox.Show(ManObj["Name"].ToString()); 
       MessageBox.Show(ManObj["Caption"].ToString()); 
       MessageBox.Show(ManObj["Description"].ToString()); 
       MessageBox.Show(ManObj["ProviderType"].ToString()); 
       MessageBox.Show(ManObj["Status"].ToString()); 

     } 
0
static void Main(string[] args) 
{ 
    ManagementObjectCollection ManObjReturn; 
    ManagementObjectSearcher ManObjSearch; 
    ManObjSearch = new ManagementObjectSearcher("Select * from **Win32_ParallelPort**"); 
    ManObjReturn = ManObjSearch.Get(); 

    foreach (ManagementObject ManObj in ManObjReturn) 
    { 
     //int s = ManObj.Properties.Count; 
     //foreach (PropertyData d in ManObj.Properties) 
     //{ 
     // MessageBox.Show(d.Name); 
     //} 
     Console.WriteLine(ManObj["DeviceID"].ToString()); 
     Console.WriteLine(ManObj["PNPDeviceID"].ToString()); 
     Console.WriteLine(ManObj["Name"].ToString()); 
     Console.WriteLine(ManObj["Caption"].ToString()); 
     Console.WriteLine(ManObj["Description"].ToString()); 
     Console.WriteLine(ManObj["ProviderType"].ToString()); 
     Console.WriteLine(ManObj["Status"].ToString()); 

    } 

} 

http://www.seeques.com/20766280/the-port-name-is-illegal-or-couldnt-be-connected-to-the-device.html

बंदरगाह नाम अवैध है कैसे इस तरह एक त्रुटि संदेश है ... fio।!