मेरे पीसी में उपलब्ध COM पोर्ट कैसे खोजें? मैं ढांचे v1.1 का उपयोग कर रहा हूँ। क्या सभी COM बंदरगाहों को ढूंढना संभव है? यदि संभव हो, तो समस्या को हल करने में मेरी सहायता करें।उपलब्ध COM पोर्ट कैसे खोजें?
उत्तर
के रूप में सुझाव दिया है, तो आप WMI का उपयोग कर सकते हैं। आप उपयोग कर रहे हैं के बाद से .net 1.1 एक ही विकल्प AxMSCommLib नियंत्रण का उपयोग करने के लिए है एक नमूना in CodeProject
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\WMI",
"SELECT * FROM MSSerial_PortName");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("MSSerial_PortName instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("InstanceName: {0}", queryObj["InstanceName"]);
Console.WriteLine("-----------------------------------");
Console.WriteLine("MSSerial_PortName instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("PortName: {0}", queryObj["PortName"]);
//If the serial port's instance name contains USB
//it must be a USB to serial device
if (queryObj["InstanceName"].ToString().Contains("USB"))
{
Console.WriteLine(queryObj["PortName"] + "
is a USB to SERIAL adapter/converter");
}
}
}
catch (ManagementException e)
{
Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);
}
फ्रेमवर्क v1.1 AFAIK आपको ऐसा करने की अनुमति नहीं देता है।
2.0 में एक स्थिर समारोह
SerialPort.GetPortNames()
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.getportnames.aspx
यूएसबी <-> सीरियल उपकरणों के लिए काम करने के लिए .. –
शायद आप ड्राइवर ठीक से स्थापित नहीं किया दिखाई नहीं देता। क्या यह हाइपरटेरमिनल में दिखाई देता है? – Vanuan
ड्राइवर स्थापित हैं और अन्य सॉफ़्टवेयर उनसे कनेक्ट कर सकते हैं जिनमें हाइपरटेरमिनल भी शामिल है। ये एफटीडीआई यूएसबी <-> धारावाहिक आधारित डिवाइस हैं। मैं इस उत्तर से QueryDosDevices का उपयोग कर समाप्त हुआ: http://stackoverflow.com/questions/1388871/how-do-i-get-a-list-of-available-sialial-ports-in-win32 –
WMI हार्डवेयर जानकारी का एक बहुत कुछ शामिल है नहीं है। Win32_SerialPort के उदाहरणों के लिए क्वेरी।
(OTOH मुझे याद नहीं कर सकते हैं कि कितना WMI क्वेरी समर्थन .NET 1.1 में था।)
.net v1.1 में serialport संचार के लिए कोई समर्थन नहीं है। इसके लिए सबसे आम समाधान एक VB6.0 स्थापना से MSCOMMCTL सक्रिय एक्स नियंत्रण का उपयोग करना था (जोड़ें संदर्भ संवाद बॉक्स से COM घटक के रूप में अपने .net प्रोजेक्ट में आयात करें)।
बाद के संस्करणों में सीरियल पोर्ट समर्थन System.IO.Ports नाम स्थान के माध्यम से उपलब्ध है। कृपया ध्यान दें कि कोई एपीआई नहीं है जो आपको मुफ्त बंदरगाहों की सूची प्राप्त करेगी।
आप सभी पोर्ट नामों की एक सूची प्राप्त कर सकते हैं और फिर कनेक्शन खोलने का प्रयास कर सकते हैं। एक बंदरगाह तब होता है जब पोर्ट पहले से उपयोग में है।
QueryDosDevice
एपीआई फ़ंक्शन का उपयोग करें।
ReDim vRet(0 To 255)
sBuffer = String(100000, 1)
Call QueryDosDevice(0, sBuffer, Len(sBuffer))
sBuffer = Chr$(0) & sBuffer
For lIdx = 1 To 255
If InStr(1, sBuffer, Chr$(0) & "COM" & lIdx & Chr$(0), vbTextCompare) > 0 Then
vRet(lCount) = "COM" & lIdx
lCount = lCount + 1
End If
Next
उपलब्ध सीरियल पोर्ट भी रजिस्ट्री में HKEY_LOCAL_MACHINE\hardware\devicemap\serialcomm
कुंजी पर मूल्यों में पाया जा सकता: यह एक VB6 टुकड़ा है।
कैसे ऑपरेटिंग सिस्टम से सीधे सवाल पूछने के बारे में: दूसरों
using System;
using System.Collections.Generic;
using Microsoft.Win32;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;
public class MyClass
{
private const uint GENERIC_ALL = 0x10000000;
private const uint GENERIC_READ = 0x80000000;
private const uint GENERIC_WRITE = 0x40000000;
private const uint GENERIC_EXECUTE = 0x20000000;
private const int OPEN_EXISTING = 3;
public const int INVALID_HANDLE_VALUE = -1;
public static void Main()
{
for (int i = 1; i <= 32; i++)
Console.WriteLine ("Port {0}: {1}", i, PortExists (i));
}
private static bool PortExists (int number) {
SafeFileHandle h = CreateFile (@"\\.\COM" + number.ToString(), GENERIC_READ + GENERIC_WRITE,
0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);
bool portExists = !h.IsInvalid;
if (portExists)
h.Close();
return portExists;
}
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern SafeFileHandle CreateFile (string lpFileName, System.UInt32 dwDesiredAccess,
System.UInt32 dwShareMode, IntPtr pSecurityAttributes, System.UInt32 dwCreationDisposition,
System.UInt32 dwFlagsAndAttributes, IntPtr hTemplateFile);
}
ठीक है ... कुछ पकड़ा गया है!यह आपको बताएगा कि आवेदन के लिए एक बंदरगाह उपलब्ध है या नहीं। यदि किसी अन्य ऐप द्वारा पोर्ट को कैप्चर किया जाता है, तो पोर्टएक्सिस्ट फ़ंक्शन झूठी वापसी करेगा। यदि आप हार्डवेयर में उपलब्ध बंदरगाह की सूची प्राप्त करना चाहते हैं (भले ही अन्य ऐप्स द्वारा कैप्चर किया गया हो) तो PInvoke GetDefaultCommConfig (http://msdn.microsoft.com/en-us/library/aa363262(VS.85).aspx)। – Hemant
धन्यवाद। यह आकर्षण की तरह काम किया। – aldoblack
पा सकते हैं।
यहां एक वेब पेज है जिसने मुझे एक्सएमएस कॉमलिब नियंत्रण का उपयोग शुरू करने में सहायता की। सूचीबद्ध एक FindDevicePort() विधि भी है जिसे आसानी से संशोधित किया जा सकता है।
मैंने तब से System.IO.Ports पर स्विच किया है जो कि अधिक मजबूत प्रतीत होता है।
http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=320
धन्यवाद
जो
- 1. नया COM पोर्ट उपलब्ध घटना
- 2. उपलब्ध COM पोर्ट्स
- 3. उपलब्ध पोर्ट कैसे ढूंढें?
- 4. COM प्रोजे आईडी कैसे खोजें?
- 5. Arduino COM पोर्ट
- 6. एंड्रॉइड ब्लूटूथ COM पोर्ट
- 7. डीबग COM पोर्ट अन्य अंत
- 8. Arduino COM पोर्ट को स्वतः कैसे पहचानें?
- 9. डिफ़ॉल्ट जेएमएक्स पोर्ट नंबर कैसे खोजें?
- 10. आईपी पते का पोर्ट नंबर कैसे खोजें?
- 11. सर्वर में जेएमएक्स पोर्ट कैसे खोजें?
- 12. किसी भी उपलब्ध पोर्ट से कैसे जुड़ें?
- 13. उपलब्ध वाई-फाई नेटवर्क खोजें
- 14. यादृच्छिक उपलब्ध बंदरगाह का अनुरोध करने के बाद एम्बेडेड जेट्टी पोर्ट कैसे खोजें?
- 15. मैं एक कस्टम पोर्ट यूएसबी डिवाइस को COM पोर्ट के रूप में कैसे दिखा सकता हूं?
- 16. मैक ओएस एक्स पर सीरियल पोर्ट नंबर कैसे खोजें?
- 17. प्रोग्राम में आईफोन में उपलब्ध मेमोरी कैसे खोजें?
- 18. ओरेकल 11 जी सिस्टम पर उपलब्ध निर्देशिका ऑब्जेक्ट्स कैसे खोजें?
- 19. COM
- 20. COM
- 21. COM
- 22. COM, COM +, DCOM, कहां से शुरू करें?
- 23. एटीएल का उपयोग कर गणना COM COM (IDISpatch) विधियां?
- 24. बैच फ़ाइल का उपयोग कर COM पोर्ट से डेटा कैसे पढ़ा जाए?
- 25. कैसे एक COM वस्तु
- 26. COM
- 27. यूएसबी से सीरियल पोर्ट
- 28. यूनिक्स में किसी विशेष प्रक्रिया आईडी के लिए पोर्ट नंबर कैसे खोजें?
- 29. रजिस्ट्री, कमांड लाइन या सॉफ़्टवेयर के माध्यम से COM पोर्ट बदलें?
- 30. जावा का उपयोग कर अपने पीसी में उपलब्ध सीरियल पोर्ट की सूची कैसे प्राप्त करें?
यह कोड .net फ्रेमवर्क 4.0 पर "foreach" पंक्ति पर त्रुटि उत्पन्न करता है। –
मुझे .NET 4.5 – Brendan
पर "एक्सेस अस्वीकृत" त्रुटि मिलती है क्या इस कोड का कहीं पाइथन बराबर है? –