WindowsでUSBシリアルを繋いだ場合、そのCOM番号が何になったのかを確認するにはデバイスマネージャーの表示で確認する必要がある。
まぁ、いちいち面倒なので、ポートが認識されるとポップアップ表示をしてくれる「PortPop」とか、GUIで一覧を表示する「ViewComPorts」があったりする。
で、ViewComPortsを試してみようと思ったら、こちらはコンパイル済みバイナリが無い・・・ソースを見てみるとWMIから情報を引っ張っているっぽい。
ということはPowerShellで実装できるのでは?
と試してみたところ成功
バッチファイルの内容は下記3行。
@echo off
powershell -sta -ExecutionPolicy Unrestricted -Command "Get-WmiObject -Class Win32_PnPEntity -Filter \"PNPClass='Ports'\" | select Name,Manufacturer,DeviceID"
pause
なお、最初オンボードのIntel Active Managamentが「Service:Serial」だったので、それでfilterしようとしたら、FDTIのは「Service:FTSER2K」だったので、両方に共通の「PNPClass:Ports」を選択しています。
FDTIのWMI出力サンプル
__GENUS : 2
__CLASS : Win32_PnPEntity
__SUPERCLASS : CIM_LogicalDevice
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_PnPEntity.DeviceID="FTDIBUS\\VID_0403+PID_6001+FTHG96ISA\\0000"
__PROPERTY_COUNT : 26
__DERIVATION : {CIM_LogicalDevice, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER : WIN10PC
__NAMESPACE : root\cimv2
__PATH : \\WIN10PC\root\cimv2:Win32_PnPEntity.DeviceID="FTDIBUS\\VID_0403+PID_6001+FTHG96ISA\\0000"
Availability :
Caption : USB Serial Port (COM4)
ClassGuid : {4d36e978-e325-11ce-bfc1-08002be10318}
CompatibleID :
ConfigManagerErrorCode : 0
ConfigManagerUserConfig : False
CreationClassName : Win32_PnPEntity
Description : USB Serial Port
DeviceID : FTDIBUS\VID_0403+PID_6001+FTHG96ISA\0000
ErrorCleared :
ErrorDescription :
HardwareID : {FTDIBUS\COMPORT&VID_0403&PID_6001}
InstallDate :
LastErrorCode :
Manufacturer : FTDI
Name : USB Serial Port (COM4)
PNPClass : Ports
PNPDeviceID : FTDIBUS\VID_0403+PID_6001+FTHG96ISA\0000
PowerManagementCapabilities :
PowerManagementSupported :
Present : True
Service : FTSER2K
Status : OK
StatusInfo :
SystemCreationClassName : Win32_ComputerSystem
SystemName : WIN10PC
PSComputerName : WIN10PC
Intel Active ManagementのWMI出力サンプル
__GENUS : 2
__CLASS : Win32_PnPEntity
__SUPERCLASS : CIM_LogicalDevice
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_PnPEntity.DeviceID="PCI\\VEN_8086&DEV_A2BD&SUBSYS_82B4103C&REV_00\\3&11583659&1&B3"
__PROPERTY_COUNT : 26
__DERIVATION : {CIM_LogicalDevice, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER : WIN10PC
__NAMESPACE : root\cimv2
__PATH : \\WIN10PC\root\cimv2:Win32_PnPEntity.DeviceID="PCI\\VEN_8086&DEV_A2BD&SUBSYS_82B4103C&REV_00\\3&11583659&1&B3"
Availability :
Caption : Intel(R) Active Management Technology - SOL (COM3)
ClassGuid : {4d36e978-e325-11ce-bfc1-08002be10318}
CompatibleID : {PCI\VEN_8086&DEV_A2BD&REV_00, PCI\VEN_8086&DEV_A2BD, PCI\VEN_8086&CC_070002, PCI\VEN_8086&CC_0700...}
ConfigManagerErrorCode : 0
ConfigManagerUserConfig : False
CreationClassName : Win32_PnPEntity
Description : Intel(R) Active Management Technology - SOL
DeviceID : PCI\VEN_8086&DEV_A2BD&SUBSYS_82B4103C&REV_00\3&11583659&1&B3
ErrorCleared :
ErrorDescription :
HardwareID : {PCI\VEN_8086&DEV_A2BD&SUBSYS_82B4103C&REV_00, PCI\VEN_8086&DEV_A2BD&SUBSYS_82B4103C, PCI\VEN_8086&DEV_A2BD&CC_070002, PCI\VEN_8086&DEV_A2BD&CC_0700}
InstallDate :
LastErrorCode :
Manufacturer : Intel
Name : Intel(R) Active Management Technology - SOL (COM3)
PNPClass : Ports
PNPDeviceID : PCI\VEN_8086&DEV_A2BD&SUBSYS_82B4103C&REV_00\3&11583659&1&B3
PowerManagementCapabilities :
PowerManagementSupported :
Present : True
Service : Serial
Status : OK
StatusInfo :
SystemCreationClassName : Win32_ComputerSystem
SystemName : WIN10PC
PSComputerName : WIN10PC
古いの記事にすみません。
ViewComPorts ですが、WMI を止めて setupapi.dll の API を使うように変更したことで、速度が劇早になりました。
バイナリも置いてますので、またお試し下さいませ~
お知らせありがとうございます。
たしかにすみやかに検出されますね。