เมื่อคุณเชื่อมต่ออุปกรณ์ COM ใหม่หรืออุปกรณ์ USB เข้ากับคอมพิวเตอร์ของคุณ (โมเด็ม USB, โทรศัพท์มือถือ, อะแดปเตอร์ Bluetooth, ตัวแปลงอนุกรมเป็น USB ฯลฯ) Windows จะตรวจพบโดยใช้ Plug-n-Play และกำหนดให้ COM หมายเลขพอร์ต ในช่วง 1 ถึง 255 (COM1, COM2, COM3 เป็นต้น) หากอุปกรณ์นี้เชื่อมต่ออีกครั้ง COM ที่สงวนไว้ (Communication
หรือ Serial
) หมายเลขพอร์ตถูกกำหนดให้กับมัน อุปกรณ์ใหม่จะได้รับหมายเลขพอร์ต COM แรกฟรี บ่อยครั้งเมื่อเชื่อมต่อ อุปกรณ์ภายนอกจะสร้างพอร์ต COM หลายพอร์ตพร้อมกัน ในกรณีของฉันหลังจากเชื่อมต่ออะแดปเตอร์บลูทูธ 10!!! มีพอร์ต COM ใหม่ปรากฏในระบบ
แอปพลิเคชันรุ่นเก่าจำนวนหนึ่งสามารถระบุหมายเลขพอร์ต COM สองหลักเท่านั้น และจะไม่ทำงานกับ COM100 ขึ้นไป ในกรณีที่เลวร้ายที่สุด โปรแกรมเหล่านี้ใช้งานได้เฉพาะกับ COM1-COM9 พอร์ต จะเกิดอะไรขึ้นหากอุปกรณ์มีหมายเลขพอร์ต COM ที่สูงกว่า เป็นไปได้ไหมที่จะรีเซ็ตการกำหนดหมายเลขสำหรับพอร์ต COM ที่สงวนไว้และลบพอร์ตที่กำหนด?
สารบัญ:
- จะเปลี่ยนหมายเลขพอร์ต COM สำหรับอุปกรณ์ใน Windows ได้อย่างไร
- ค้นหาว่ากระบวนการใดใช้พอร์ต Serial COM ใน Windows
- การรีเซ็ตหมายเลขพอร์ต COM ในรีจิสทรีของ Windows
จะเปลี่ยนหมายเลขพอร์ต COM สำหรับอุปกรณ์ใน Windows ได้อย่างไร
ใน Windows คุณสามารถเปลี่ยนหมายเลขพอร์ต COM ที่กำหนดให้กับอุปกรณ์ได้ด้วยตนเอง สมมติว่าพอร์ต COM ที่จำเป็นไม่ว่างอยู่แล้ว และคุณต้องการลองทำให้ว่าง
- เปิดตัวจัดการอุปกรณ์โดยเรียกใช้
devmgmt.msc
คำสั่ง; - เลือก ดู->แสดงอุปกรณ์ที่ซ่อนอยู่ ในเมนู;
- จากนั้นขยาย พอร์ต (COM &LPT) และค้นหาอุปกรณ์ของคุณในรายการ
- ไปที่ การตั้งค่าพอร์ต แท็บแล้วคลิก ขั้นสูง ปุ่ม;
- หมายเลขพอร์ต COM ปัจจุบันที่กำหนดให้กับอุปกรณ์สามารถพบได้ใน หมายเลขพอร์ต COM ฟิลด์;
- ในการเปลี่ยนแปลง ให้เปิดรายการดรอปดาวน์และเลือกหมายเลขพอร์ต COM ที่คุณต้องการตั้งค่า
แต่บ่อยครั้ง คุณไม่สามารถเปลี่ยนหมายเลขพอร์ต COM ที่กำหนดเป็นหมายเลขอื่นในคุณสมบัติของฮาร์ดแวร์ได้ เนื่องจากพอร์ต COM ที่ "ต่ำกว่า" ทั้งหมดถูกใช้ไปแล้ว ในกรณีนี้ คุณต้องลองลบการจองพอร์ต COM
- ขยาย พอร์ต (COM &LPT) ค้นหาหมายเลขพอร์ต COM ที่คุณต้องการถูกกำหนด (ไอคอนซีดหมายความว่าพอร์ต COM นี้ถูกกำหนดแล้ว แต่อุปกรณ์นี้ไม่ได้เชื่อมต่ออยู่)
- คลิกขวาและเลือก ถอนการติดตั้ง ;
- ตอนนี้ คุณสามารถกำหนดพอร์ต COM ที่ว่างให้กับอุปกรณ์อื่นได้ เปิดคุณสมบัติของอุปกรณ์ของคุณอีกครั้ง ไปที่ การตั้งค่าพอร์ต -> ขั้นสูง แท็บ จากนั้นไปที่ พอร์ต การตั้งค่า แท็บแล้วคลิก ขั้นสูง . เลือกพอร์ต COM ฟรีในรายการดรอปดาวน์
อย่างไรก็ตาม วิธีนี้ไม่อนุญาตให้คุณเพิ่มพอร์ต COM ที่ไม่ว่างในทุกกรณี
คุณสามารถรับรายการพอร์ต COM ที่ไม่ว่างทั้งหมดบน Windows ได้โดยใช้ PowerShell:
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
ค้นหาว่ากระบวนการใดกำลังใช้พอร์ต Serial COM ใน Windows
คุณจะไม่สามารถปล่อยพอร์ต COM ของอุปกรณ์ที่ใช้โดย Windows หรือโปรแกรมที่ทำงานอยู่ (กระบวนการ) ขั้นแรก คุณต้องหยุดกระบวนการที่กำลังใช้พอร์ต COM คุณสามารถใช้ Process Explorer เครื่องมือ (โดย Sysinternals) เพื่อค้นหาชื่อของกระบวนการโดยใช้หมายเลขพอร์ต COM เฉพาะ (https://docs.microsoft.com/en-gb/sysinternals/downloads/process-explorer)
ขั้นแรก คุณต้องแสดงชื่อของบริการที่ใช้พอร์ต COM เรียกใช้คำสั่ง PowerShell:
get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service
ชื่อบริการของพอร์ต COM เฉพาะจะแสดงใน บริการ คอลัมน์. ตัวอย่างเช่น สำหรับ COM2 จะเป็น Serial . ตอนนี้ คุณต้องเรียกใช้ Process Explorer ในฐานะผู้ดูแลระบบ และเลือก ค้นหา -> ค้นหา Handle หรือ DLL จากเมนู ใน สตริงย่อย Handle หรือ DLL บรรทัด ป้อนค่าบริการที่ได้รับก่อนหน้านี้ ในตัวอย่างของเรา นี่คือ Serial
.
Process Explorer ควรแสดงชื่อกระบวนการที่กำลังใช้พอร์ต COM ของคุณ หากต้องการปล่อยพอร์ต COM ให้ฆ่ากระบวนการหรือโปรแกรม
การรีเซ็ตหมายเลขพอร์ต COM ในรีจิสทรีของ Windows
ข้อมูลเกี่ยวกับพอร์ต COM ที่ใช้งานถูกเก็บไว้ใน CommDB พารามิเตอร์รีจิสทรีภายใต้ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter คีย์ reg.
- เปิด Registry Editor (
regedit.exe
) และไปที่รีจิสตรีคีย์ที่กล่าวถึงข้างต้น สำคัญ! เราขอแนะนำให้คุณสำรองข้อมูลคีย์รีจิสทรีนี้ (ไฟล์ -> ส่งออก) ก่อนดำเนินการใดๆ หากมีข้อผิดพลาด คุณสามารถคืนค่าการกำหนดค่าพอร์ต COM เดิมได้ - คุณค่าของ ComDB พารามิเตอร์ในรูปแบบไบนารีจะกำหนดรายการพอร์ต COM ที่สงวนไว้ใน Windows แต่ละบิตกำหนดสถานะของพอร์ตที่เกี่ยวข้อง (ตั้งแต่ 1 ถึง 255) ตัวอย่างเช่น หากคุณต้องการออกจากการจองสำหรับ COM3 เท่านั้น ค่าฐานสิบหกของ ComDB จะเท่ากับ 04 (0000 0100)
สำคัญ! ระวังให้มาก และอย่าเพิ่มบิตเพิ่มเติมในพารามิเตอร์ มิฉะนั้นระบบจะเริ่มล้มเหลวใน BSOD - หากคุณต้องรีเซ็ตการเชื่อมโยงพอร์ต COM ทั้งหมด ให้เปลี่ยนค่าของ ComDB เป็น 0;
หมายเหตุ . คุณสามารถดูรายการพอร์ต COM ทั้งหมดที่เชื่อมต่อใน Windows ได้ที่คีย์รีจิสทรี HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM รายการรีจิสทรีภายใต้ SERIALCOMM สามารถแสดงได้ก็ต่อเมื่ออุปกรณ์พื้นฐานเชื่อมต่อและพร้อมใช้งานเท่านั้น คีย์ย่อยนี้เป็นส่วนหนึ่งของคีย์ HARDWARE และสร้างขึ้นใหม่ทุกครั้งที่ระบบเริ่มทำงาน - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports คีย์รีจิสทรีประกอบด้วยรายการหมายเลขพอร์ต COM ที่กำหนดทั้งหมด คุณสามารถลบการจองพอร์ตที่ไม่จำเป็นทั้งหมดออกได้ ในตัวอย่างของเรา เราจะปล่อยเฉพาะ COM3 และลบพอร์ตที่เหลือ
- ถอดปลั๊กอุปกรณ์ภายนอกทั้งหมดและรีสตาร์ทคอมพิวเตอร์
- หลังจากการรีบูต ให้เชื่อมต่ออุปกรณ์ตามลำดับที่จำเป็น ติดตั้งตัวแปลง USB เป็นซีเรียลใหม่ ฯลฯ อุปกรณ์พอร์ต COM ที่ตรวจพบทั้งหมดจะถูกตรวจพบโดยอัตโนมัติโดยระบบและกำหนดหมายเลขพอร์ต COM ตามลำดับ
คุณยังสามารถใช้เครื่องมือฟรีต่อไปนี้เพื่อล้างพอร์ต COM ที่สงวนไว้:
- COM Name Arbiter Tool – เครื่องมือนี้สามารถช่วยคุณรีเซ็ตการจองพอร์ต COM และค้นหาหมายเลขพอร์ต COM ที่ใช้ ดาวน์โหลดเครื่องมือและเรียกใช้ในฐานะผู้ดูแลระบบ เลือกพอร์ต COM ที่คุณต้องการปล่อยและคลิกล้างการจองที่ไม่ได้ใช้ และ นำอุปกรณ์ที่ไม่มีอยู่ออก
- เครื่องมือล้างข้อมูลอุปกรณ์ – ยูทิลิตี้นี้ใช้เพื่อค้นหารีจิสทรีสำหรับอุปกรณ์ที่เชื่อมต่อก่อนหน้านี้ (ภายใต้คีย์รีจิสทรี
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
) นำอุปกรณ์ที่ไม่ได้ใช้ออก และล้างการจองพอร์ต COM