我在AutoIT中编程。简而言之,我需要找到Comport Number (不是从FriendlyName解析并将解释)所有虚拟串行端口 具有VID 403和PID 6001.它是FTDI虚拟串行端口。
我正在使用WMI调用Win32_PnPEntity并排除没有的端口 DeviceID“FTDIBUS \ VID_0403 + PID_6001”。 $ oItem.name会产生一些东西 比如“USB串口(COM17)”。这是设备管理说明。然后我可以解析出“COM17”并通过RS232开始与该端口进行通信。问题.... COM17是FriendlyName,实际端口是25.是的,这是正确的。设备管理器显示“USB串口(COM17)”butif你右键单击它并转到属性实际端口号是25.我使用putty验证它,实际上它是COM25。所以“FriendlyName”确实反映了真正的Comport Number。
我找到了一个小的实用程序,由uwe-sieber ComPortMan提供 实用程序名为listports.exe。这是输出:
PortName:COM25 KernelName:\ Device \ VCP0 DeviceID:FTDIBUS \ VID_0403 + PID_6001 + A901R735A \ 0000 ParentDeviceID:USB \ VID_0403& PID_6001 \ A901R735 DriverKeyName:{4D36E978-E325-11CE-BFC1-08002BE10318} \ 0088 友情名称:USB串口(COM17)
正如您所看到的,真正的Comport是25,但是友好名称是“USB Serial Port(COM17)”。所以......我需要找到一种方法来检索实际的“PortName”而不是解析“FriendlyName”。如前所述,对Win32_PnPEntity的WMI调用返回FriendlyName。对Win32_SerialPort的WMI调用不适用于Virtial ComPorts。我很茫然。我知道它可以完成,因为listports实用程序可以完成它。我不知道从哪里开始。救命啊!