새 COM 장치 또는 USB 장치를 컴퓨터에 연결하면(USB 모뎀, 휴대폰, Bluetooth 어댑터, 직렬-USB 변환기 등) Windows는 플러그 앤 플레이를 사용하여 이를 감지하고 COM 포트 번호 1 ~ 255 범위 (COM1, COM2, COM3 등). 이 장치를 다시 연결하면 예약된 COM(Communication
, 또는 Serial
) 포트 번호가 할당됩니다. 새 장치는 첫 번째 사용 가능한 COM 포트 번호를 얻습니다. 연결되면 외부 장치가 한 번에 여러 개의 COM 포트를 생성하는 경우가 종종 있습니다. 제 경우에는 블루투스 어댑터를 연결한 후 10!!! 새로운 COM 포트가 시스템에 나타났습니다.
많은 레거시 응용 프로그램은 두 자리 COM 포트 번호만 지정할 수 있으며 COM100 이상에서는 작동하지 않습니다. 최악의 경우 이러한 프로그램은 COM1-COM9에서만 작동합니다. 포트. 장치의 COM 포트 번호가 더 높으면 어떻게 됩니까? 예약된 COM 포트의 번호를 재설정하고 할당된 포트를 삭제할 수 있습니까?
내용:
- Windows에서 장치의 COM 포트 번호를 변경하는 방법
- Windows에서 직렬 COM 포트를 사용하는 프로세스 찾기
- Windows 레지스트리에서 COM 포트 번호 재설정
Windows에서 장치의 COM 포트 번호를 변경하는 방법
Windows에서는 장치에 할당된 COM 포트 번호를 수동으로 변경할 수 있습니다. 필요한 COM 포트가 이미 사용 중이고 이를 해제하려고 한다고 가정합니다.
devmgmt.msc
를 실행하여 장치 관리자를 엽니다. 명령;- 보기->숨겨진 기기 표시 선택 메뉴에서;
- 그런 다음 포트(COM 및 LPT)를 확장합니다. 목록에서 기기를 찾습니다.
- 포트 설정으로 이동 탭을 클릭하고 고급을 클릭합니다. 버튼;
- 기기에 할당된 현재 COM 포트 번호는 COM 포트 번호에서 찾을 수 있습니다. 필드;
- 변경하려면 드롭다운 목록을 열고 설정하려는 COM 포트 번호를 선택합니다.
그러나 "하위" COM 포트가 모두 이미 사용 중이기 때문에 하드웨어 속성에서 할당된 COM 포트 번호를 다른 것으로 변경할 수 없는 경우가 더 많습니다. 이 경우 COM 포트 예약을 제거해야 합니다.
- 포트 확장 (COM 및 LPT) 분기, 필요한 COM 포트 번호가 할당되어 있는지 찾으십시오(창백한 아이콘은 이 COM 포트가 할당되었지만 이 장치가 현재 연결되어 있지 않음을 의미함).
- 마우스 오른쪽 버튼으로 클릭하고 제거를 선택합니다. ;
- 이제 해제된 COM 포트를 다른 장치에 할당할 수 있습니다. 다시 한 번 기기의 속성을 열고 포트 설정으로 이동합니다. -> 고급 탭. 그런 다음 항구로 이동합니다. 설정 탭을 클릭하고 고급을 클릭합니다. . 드롭다운 목록에서 사용 가능한 COM 포트를 선택합니다.
그러나 이 방법을 사용하면 모든 경우에 사용 중인 COM 포트를 해제할 수 없습니다.
PowerShell을 사용하여 Windows에서 사용 중인 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
Windows에서 직렬 COM 포트를 사용하는 프로세스 찾기
Windows 또는 실행 중인 프로그램(프로세스)에서 사용하는 장치의 COM 포트를 해제할 수 없습니다. 먼저 현재 COM 포트를 사용하고 있는 프로세스를 중지해야 합니다. 프로세스 탐색기를 사용할 수 있습니다. 특정 COM 포트 번호(https://docs.microsoft.com/en-gb/sysinternals/downloads/process-explorer)를 사용하여 프로세스 이름을 찾는 도구(Sysinternals 제공)
먼저 COM 포트를 사용하는 서비스의 이름을 표시해야 합니다. PowerShell 명령 실행:
get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service
특정 COM 포트의 서비스 이름은 서비스에 표시됩니다. 열. 예를 들어 COM2의 경우 직렬입니다. . 이제 Process Explorer를 관리자로 실행하고 찾기 를 선택해야 합니다. -> 핸들 또는 DLL 찾기 메뉴에서. 핸들 또는 DLL 하위 문자열에서 줄에 이전에 얻은 서비스 값을 입력합니다. 이 예에서는 Serial
입니다. .
Process Explorer는 현재 COM 포트를 사용하고 있는 프로세스 이름을 표시해야 합니다. COM 포트를 해제하려면 프로세스나 프로그램을 종료하십시오.
Windows 레지스트리에서 COM 포트 번호 재설정
사용 중인 COM 포트에 대한 정보는 CommDB에 저장됩니다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter 아래의 레지스트리 매개변수 reg 키.
- 레지스트리 편집기(
regedit.exe
) 위에서 언급한 레지스트리 키로 이동합니다. 중요! 작업을 수행하기 전에 이 레지스트리 키(파일 -> 내보내기)를 백업하는 것이 좋습니다. 문제가 발생하면 원래 COM 포트 구성을 복원할 수 있습니다. - ComDB의 가치 바이너리 형식의 매개변수는 Windows에 예약된 COM 포트 목록을 결정합니다. 각 비트는 해당 포트의 상태를 결정합니다(1~255). 예를 들어 COM3에 대해서만 예약을 남겨야 하는 경우 ComDB의 16진수 값은 04(0000 0100)와 같습니다.
중요! 매우 주의하고 매개변수에 추가 비트를 추가하지 마십시오. 그렇지 않으면 시스템이 BSOD로 실패하기 시작합니다. - 모든 COM 포트 바인딩을 재설정해야 하는 경우 ComDB 값을 변경합니다. 0으로;
참고 . 레지스트리 키 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM에서 Windows에 연결된 COM 포트의 전체 목록을 볼 수 있습니다. SERIALCOMM 아래의 레지스트리 항목은 기본 장치가 연결되고 준비된 경우에만 존재할 수 있습니다. 이 하위 키는 HARDWARE 키의 일부이며 시스템이 시작될 때마다 다시 생성됩니다. - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports 레지스트리 키는 할당된 모든 COM 포트 번호 목록을 포함합니다. 불필요한 포트 예약을 모두 제거할 수 있습니다. 이 예에서는 COM3만 남기고 나머지 포트는 삭제합니다.
- 모든 외부 장치의 플러그를 뽑고 컴퓨터를 다시 시작합니다.
- 재부팅 후 장치를 필요한 순서대로 연결하고 USB-직렬 변환기를 다시 설치하는 등의 작업을 수행합니다. 감지된 모든 COM 포트 장치는 시스템에서 자동으로 감지하고 순차적인 COM 포트 번호를 할당합니다.
다음 무료 도구를 사용하여 예약된 COM 포트를 정리할 수도 있습니다.
- COM 이름 중재자 도구 – 이 도구는 COM 포트 예약을 재설정하고 사용된 COM 포트 번호를 찾는 데 도움이 될 수 있습니다. 도구를 다운로드하고 관리자로 실행하십시오. 해제하려는 COM 포트를 선택하고 사용하지 않는 예약 지우기를 클릭합니다. 그리고 존재하지 않는 기기를 제거합니다.
- 기기 정리 도구 – 유틸리티는 레지스트리에서 이전에 연결된 장치를 검색하는 데 사용됩니다(레지스트리 키
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
아래). ), 사용하지 않는 장치를 제거하고 COM 포트 예약을 지웁니다.