ค้นหาเว็บไซต์

วิธีล้างข้อมูลหรือรีเซ็ตหมายเลขพอร์ต COM ใน Windows


เมื่อคุณเชื่อมต่ออุปกรณ์ 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 ได้อย่างไร

ใน Windows คุณสามารถเปลี่ยนหมายเลขพอร์ต COM ที่กำหนดให้กับอุปกรณ์ได้ด้วยตนเอง สมมติว่าพอร์ต COM ที่จำเป็นไม่ว่างอยู่แล้ว และคุณต้องการลองทำให้พอร์ตว่าง

  1. เปิดตัวจัดการอุปกรณ์โดยเรียกใช้

    devmgmt.msc

    สั่งการ;

  2. เลือก ดู->แสดงอุปกรณ์ที่ซ่อนอยู่ ในเมนู

  3. จากนั้นขยายพอร์ต (COM & LPT) และค้นหาอุปกรณ์ของคุณในรายการ

  4. ไปที่แท็บ การตั้งค่าพอร์ต แล้วคลิกปุ่ม ขั้นสูง

  5. หมายเลขพอร์ต COM ปัจจุบันที่กำหนดให้กับอุปกรณ์สามารถพบได้ในฟิลด์ หมายเลขพอร์ต COM

  6. หากต้องการเปลี่ยน ให้เปิดรายการดรอปดาวน์แล้วเลือกหมายเลขพอร์ต COM ที่คุณต้องการตั้งค่า

แต่บ่อยครั้งที่คุณไม่สามารถเปลี่ยนหมายเลขพอร์ต COM ที่กำหนดเป็นหมายเลขอื่นในคุณสมบัติฮาร์ดแวร์ได้ เนื่องจากพอร์ต COM "ล่าง" ทั้งหมดมีการใช้งานอยู่แล้ว ในกรณีนี้ คุณต้องพยายามลบการสำรองพอร์ต COM

  1. ขยายสาขา พอร์ต (COM & LPT) ค้นหาหมายเลขพอร์ต COM ที่คุณต้องการกำหนดให้กับ (ไอคอนสีซีดหมายความว่าพอร์ต COM นี้ได้รับการกำหนด แต่อุปกรณ์นี้ ยังไม่ได้เชื่อมต่อ);

  2. คลิกขวาแล้วเลือก ถอนการติดตั้ง

  3. ตอนนี้คุณสามารถกำหนดพอร์ต 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 /กระบวนการสำรวจ).

ขั้นแรก คุณต้องแสดงชื่อบริการที่ใช้พอร์ต COM เรียกใช้คำสั่ง PowerShell:

get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service

ชื่อบริการของพอร์ต COM ที่ระบุจะแสดงในคอลัมน์ บริการ ตัวอย่างเช่น สำหรับ COM2 จะเป็น อนุกรม ตอนนี้ คุณต้องเรียกใช้ Process Explorer ในฐานะผู้ดูแลระบบ และเลือก ค้นหา -> ค้นหาหมายเลขอ้างอิงหรือ DLL จากเมนู ในบรรทัด Handle หรือ DLL substring ให้ป้อนค่าบริการที่ได้รับก่อนหน้านี้ ในตัวอย่างของเรา นี่คือ

Serial

Process Explorer ควรแสดงชื่อกระบวนการที่กำลังใช้พอร์ต COM ของคุณ หากต้องการปล่อยพอร์ต COM ให้ฆ่ากระบวนการหรือโปรแกรม

การรีเซ็ตหมายเลขพอร์ต COM ใน Windows Registry

ข้อมูลเกี่ยวกับพอร์ต COM ที่ใช้งานจะถูกจัดเก็บไว้ในพารามิเตอร์รีจิสทรี CommDB ภายใต้คีย์ reg HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter

  1. เปิดตัวแก้ไขรีจิสทรี (

    regedit.exe

    ) และไปที่คีย์รีจิสทรีที่กล่าวถึงข้างต้น

    สำคัญ! เราขอแนะนำให้คุณสำรองคีย์รีจิสทรีนี้ (ไฟล์ -> ส่งออก) ก่อนที่จะดำเนินการใดๆ หากมีข้อผิดพลาด คุณสามารถคืนค่าการกำหนดค่าพอร์ต COM เดิมได้

  2. ค่าของพารามิเตอร์ ComDB ในรูปแบบไบนารีกำหนดรายการพอร์ต COM ที่สงวนไว้ใน Windows แต่ละบิตกำหนดสถานะของพอร์ตที่เกี่ยวข้อง (ตั้งแต่ 1 ถึง 255) ตัวอย่างเช่น หากคุณต้องการออกจากการจองสำหรับ COM3 เท่านั้น ค่าฐานสิบหกของ ComDB จะเท่ากับ 04 (0000 0100)

    สำคัญ! ระวังให้ดี และอย่าเพิ่มบิตเพิ่มเติมให้กับพารามิเตอร์ มิฉะนั้นระบบจะเริ่มล้มเหลวใน BSOD

  3. หากคุณต้องรีเซ็ตการเชื่อมโยงพอร์ต COM ทั้งหมด ให้เปลี่ยนค่าของ ComDB เป็น 0

    หมายเหตุ คุณสามารถดูรายการพอร์ต COM ทั้งหมดที่เชื่อมต่อใน Windows ภายใต้คีย์รีจิสทรี HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM รายการรีจิสทรีภายใต้ SERIALCOMM จะแสดงได้ก็ต่อเมื่ออุปกรณ์พื้นฐานเชื่อมต่อและพร้อมใช้งานเท่านั้น คีย์ย่อยนี้เป็นส่วนหนึ่งของคีย์ฮาร์ดแวร์ และจะสร้างขึ้นใหม่ทุกครั้งที่ระบบเริ่มทำงาน

  4. คีย์รีจิสทรี HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports มีรายการหมายเลขพอร์ต COM ที่กำหนดทั้งหมด คุณสามารถลบการจองพอร์ตที่ไม่จำเป็นทั้งหมดได้ ในตัวอย่างของเรา เราจะปล่อยเฉพาะ COM3 และลบพอร์ตที่เหลือ

  5. ถอดปลั๊กอุปกรณ์ภายนอกทั้งหมดแล้วรีสตาร์ทคอมพิวเตอร์

  6. หลังจากรีบูต ให้เชื่อมต่ออุปกรณ์ตามลำดับที่จำเป็น ติดตั้งตัวแปลง USB-to-serial ใหม่ ฯลฯ ทั้งหมด อุปกรณ์พอร์ต COM ที่ตรวจพบจะถูกตรวจพบโดยอัตโนมัติโดยระบบและกำหนดหมายเลขพอร์ต COM ตามลำดับ

คุณยังสามารถใช้เครื่องมือฟรีต่อไปนี้เพื่อล้างพอร์ต COM ที่สงวนไว้:

  • COM Name Arbiter Tool - เครื่องมือนี้สามารถช่วยคุณรีเซ็ตการจองพอร์ต COM และค้นหาหมายเลขพอร์ต COM ที่ใช้ ดาวน์โหลดเครื่องมือและเรียกใช้ในฐานะผู้ดูแลระบบ เลือกพอร์ต COM ที่คุณต้องการปล่อย และคลิก ล้างการจองที่ไม่ได้ใช้ และ ลบอุปกรณ์ที่ไม่ได้อยู่ในปัจจุบัน

  • เครื่องมือล้างข้อมูลอุปกรณ์ - ยูทิลิตีนี้ใช้เพื่อค้นหารีจิสทรีสำหรับอุปกรณ์ที่เชื่อมต่อก่อนหน้านี้ (ใต้คีย์รีจิสทรี

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum

    ) ลบอุปกรณ์ที่ไม่ได้ใช้ และล้างการจองพอร์ต COM

บทความที่เกี่ยวข้อง