परिचय
जब आप अपने कंप्यूटर से एक नया COM डिवाइस या USB डिवाइस कनेक्ट करते हैं (USB मॉडेम, मोबाइल फोन, ब्लूटूथ एडाप्टर, सीरियल टू USB कन्वर्टर्स, आदि), तो विंडोज़ प्लग-एन-प्ले का उपयोग करके इसका पता लगाता है और इसे COM पोर्ट नंबर की रेंज 1 से 255 (COM1, COM2, COM3, आदि) में असाइन करता है। यदि यह डिवाइस फिर से कनेक्ट किया जाता है, तो आरक्षित COM (Communication, या Serial) पोर्ट नंबर इसे असाइन किया जाता है। एक नए डिवाइस को पहला फ्री COM पोर्ट नंबर मिलता है। अक्सर ऐसा होता है कि कनेक्ट होने पर, बाहरी डिवाइस एक साथ कई COM पोर्ट्स बना देते हैं। मेरे मामले में ब्लूटूथ एडाप्टर कनेक्ट करने के बाद सिस्टम में 10!!! नए COM पोर्ट्स दिखाई दिए।
कई लिगेसी एप्लिकेशन केवल दो-अंकीय COM पोर्ट नंबरों को संबोधित करने में सक्षम हैं, और COM100 और उच्चतर के साथ काम नहीं करेंगे। सबसे खराब मामलों में, ये प्रोग्राम केवल COM1-COM9 पोर्ट्स के साथ काम करते हैं। क्या होगा यदि किसी डिवाइस को उच्च COM पोर्ट नंबर मिल गया हो? क्या आरक्षित COM पोर्ट्स की नंबरिंग रीसेट करना और असाइन किए गए पोर्ट्स को हटाना संभव है?
सामग्री
- विंडोज़ में डिवाइस के लिए COM पोर्ट नंबर कैसे बदलें?
- विंडोज़ में सीरियल COM पोर्ट का उपयोग करने वाली प्रक्रिया का पता लगाएं
- विंडोज़ रजिस्ट्री में COM पोर्ट नंबर रीसेट करना
विंडोज़ में डिवाइस के लिए COM पोर्ट नंबर कैसे बदलें?
विंडोज़ में, आप डिवाइस को असाइन किए गए COM पोर्ट नंबर को मैन्युअली बदल सकते हैं। मान लीजिए आवश्यक COM पोर्ट पहले से ही व्यस्त है, और आप इसे फ्री करने का प्रयास करना चाहते हैं।
devmgmt.mscकमांड चलाकर डिवाइस मैनेजर खोलें;- मेनू में View → Show Hidden Devices चुनें;
- फिर Ports (COM & LPT) का विस्तार करें और सूची में अपना डिवाइस ढूंढें;
- Port Settings टैब पर जाएं और Advanced बटन पर क्लिक करें;
- डिवाइस को असाइन किया गया वर्तमान COM पोर्ट नंबर COM Port Number फ़ील्ड में पाया जा सकता है;
- इसे बदलने के लिए, ड्रॉप-डाउन सूची खोलें और वह COM पोर्ट नंबर चुनें जिसे आप सेट करना चाहते हैं।
लेकिन अधिक बार आप हार्डवेयर गुणों में असाइन किए गए COM पोर्ट नंबर को दूसरे में नहीं बदल सकते, क्योंकि सभी "निचले" COM पोर्ट पहले से ही उपयोग में हैं। इस मामले में, आपको COM पोर्ट आरक्षण को हटाने का प्रयास करने की आवश्यकता है:
- Ports (COM & LPT) शाखा का विस्तार करें, ढूंढें कि आपको कौन सा COM पोर्ट नंबर असाइन किया गया है (पीला आइकन का अर्थ है कि यह COM पोर्ट असाइन किया गया है, लेकिन यह डिवाइस वर्तमान में कनेक्ट नहीं है);
- इस पर राइट-क्लिक करें और Uninstall चुनें;
- अब आप फ्री किए गए COM पोर्ट को दूसरे डिवाइस को असाइन कर सकते हैं। एक बार फिर अपने डिवाइस के गुण खोलें, Port Settings → Advanced टैब पर जाएं। फिर Port Settings टैब पर जाएं और Advanced पर क्लिक करें। ड्रॉप-डाउन सूची में फ्री COM पोर्ट चुनें।
हालांकि, यह विधि सभी मामलों में व्यस्त COM पोर्ट को फ्री करने की अनुमति नहीं देती है।
आप PowerShell का उपयोग करके विंडोज़ पर व्यस्त COM पोर्ट्स की पूरी सूची प्राप्त कर सकते हैं:
Get-WMIObject Win32_SerialPort | Select-Object Name,DeviceID,Description
आप इसके नाम से किसी विशिष्ट डिवाइस के लिए COM पोर्ट नंबर प्राप्त कर सकते हैं, उदाहरण के लिए:
Get-WMIObject Win32_SerialPort | Where-Object { $_.Name -like "*Arduino*" } | select name, deviceid
या
Get-WMIObject Win32_SerialPort | Where-Object { $_.Name -like "*GPS*" } | select name, deviceid
विंडोज़ में सीरियल COM पोर्ट का उपयोग करने वाली प्रक्रिया का पता लगाएं
आप उस डिवाइस का COM पोर्ट रिलीज़ नहीं कर पाएंगे जिसका उपयोग विंडोज़ या कोई चल रहा प्रोग्राम (प्रक्रिया) कर रहा है। सबसे पहले, आपको उस प्रक्रिया को रोकने की आवश्यकता है जो वर्तमान में COM पोर्ट का उपयोग कर रही है। आप किसी विशेष COM पोर्ट नंबर का उपयोग करने वाली प्रक्रिया का नाम पता लगाने के लिए Process Explorer टूल (Sysinternals द्वारा) का उपयोग कर सकते हैं (https://docs.microsoft.com/en-gb/sysinternals/downloads/process-explorer)।
सबसे पहले, आपको उस सेवा का नाम प्रदर्शित करने की आवश्यकता है जो COM पोर्ट का उपयोग करती है। PowerShell कमांड चलाएं:
get-pnpdevice -class Ports -ea 0 | Select Name, PNPDeviceID, Status, Service
विशिष्ट COM पोर्ट का सेवा नाम Service कॉलम में दिखाया गया है। उदाहरण के लिए, COM2 के लिए यह Serial है। अब आपको Process Explorer को एडमिनिस्ट्रेटर के रूप में चलाने और मेनू से Find → Find Handle or DLL चुनने की आवश्यकता है। Handle or DLL substring लाइन में, पहले प्राप्त Service मान दर्ज करें। हमारे उदाहरण में, यह Serial है।
Process Explorer को आपके COM पोर्ट का उपयोग करने वाली प्रक्रिया का नाम दिखाना चाहिए। COM पोर्ट को रिलीज़ करने के लिए, प्रक्रिया या प्रोग्राम को समाप्त करें।
विंडोज़ रजिस्ट्री में COM पोर्ट नंबर रीसेट करना
उपयोग में COM पोर्ट्स के बारे में जानकारी CommDB रजिस्ट्री पैरामीटर में HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter रजिस्ट्री कुंजी के अंतर्गत संग्रहीत होती है।
- रजिस्ट्री एडिटर (
regedit.exe) खोलें और ऊपर बताई गई रजिस्ट्री कुंजी पर जाएं;
महत्वपूर्ण! हम कुछ भी करने से पहले इस रजिस्ट्री कुंजी का बैकअप लेने की दृढ़ता से सलाह देते हैं (File → Export)। यदि कुछ गलत होता है, तो आप मूल COM पोर्ट कॉन्फिगरेशन को पुनर्स्थापित कर सकते हैं। - ComDB पैरामीटर का बाइनरी फॉर्मेट में मान विंडोज़ में आरक्षित COM पोर्ट्स की सूची निर्धारित करता है। प्रत्येक बिट संबंधित पोर्ट की स्थिति निर्धारित करता है (1 से 255 तक)। उदाहरण के लिए, यदि आपको केवल COM3 के लिए आरक्षण छोड़ने की आवश्यकता है, तो ComDB का हेक्स मान 04 (0000 0100) के बराबर होगा;
महत्वपूर्ण! बहुत सावधान रहें, और पैरामीटर में कोई अतिरिक्त बिट न जोड़ें, अन्यथा सिस्टम BSOD में फेल होना शुरू हो जाएगा। - यदि आपको सभी COM पोर्ट बाइंडिंग्स रीसेट करने की आवश्यकता है, तो ComDB का मान 0 पर बदलें;
नोट: आप विंडोज़ में कनेक्टेड COM पोर्ट्स की पूरी सूची रजिस्ट्री कुंजी HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM के अंतर्गत देख सकते हैं। SERIALCOMM के अंतर्गत रजिस्ट्री एंट्रीज़ केवल तभी मौजूद हो सकती हैं जब अंतर्निहित डिवाइस कनेक्टेड और तैयार हों। यह सबकी HARDWARE कुंजी का हिस्सा है, और यह हर बार सिस्टम शुरू होने पर पुनर्निर्मित होती है। - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports रजिस्ट्री कुंजी में सभी असाइन किए गए COM पोर्ट नंबरों की सूची होती है। आप सभी अनावश्यक पोर्ट आरक्षण हटा सकते हैं। हमारे उदाहरण में, हम केवल COM3 छोड़ेंगे और बाकी पोर्ट्स को हटा देंगे;
- सभी बाहरी डिवाइस अनप्लग करें और अपने कंप्यूटर को पुनरारंभ करें;
- रीबूट के बाद, डिवाइस को आवश्यक क्रम में कनेक्ट करें, USB-to-सीरियल कन्वर्टर्स को पुनर्स्थापित करें, आदि। सभी पहचाने गए COM पोर्ट डिवाइस सिस्टम द्वारा स्वचालित रूप से पहचाने जाएंगे और अनुक्रमिक COM पोर्ट नंबर असाइन किए जाएंगे।
आप आरक्षित COM पोर्ट्स को साफ़ करने के लिए निम्न मुफ्त टूल्स का भी उपयोग कर सकते हैं:
- COM Name Arbiter Tool - यह टूल COM पोर्ट आरक्षण रीसेट करने और उपयोग किए गए COM पोर्ट नंबर खोजने में मदद कर सकता है। टूल डाउनलोड करें और इसे एडमिनिस्ट्रेटर के रूप में चलाएं। उन COM पोर्ट्स को चुनें जिन्हें आप रिलीज़ करना चाहते हैं और Clear unused Reservations और Remove non-present devices पर क्लिक करें;
- Device Cleanup Tool - यह यूटिलिटी रजिस्ट्री में पहले से कनेक्टेड डिवाइसेज (रजिस्ट्री कुंजी
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enumके अंतर्गत) खोजने, अनुपयोगी डिवाइसेज को हटाने, और COM पोर्ट आरक्षण साफ़ करने के लिए उपयोग की जाती है।