我正在编写一个简单的代码,在Windows平台上找到USB转串口,如果端口是我想要的(可以通过VID / PID号过滤),那么程序将打开该端口。
我使用MonkeyBread插件,WinUSBDeviceMBS,具有VendorID和ProductID的属性,我可以选择特定的USB端口。示例代码如下。
Dim devices() As WinUSBDeviceMBS = WinUSBDeviceMBS.devices
For Each d As WinUSBDeviceMBS in devices
msgbox d.vendor+"-" + str(Hex(d.VendorID),"0000") + " " +d.product+"-" + str(Hex(d.ProductID),"0000")+d.serialnumber
Next
'this will give you a message box with "FTDI-0403 FT232R USB UART-6001 A60251HV"
另外,在Serial.serialport.Name的帮助下,我可以获得串口设备的COM端口名称。 昏暗的我,算作整数 count = System.SerialPortCount
for i = 0 to count - 1
Msgbox System.SerialPort( i ).Name
next
'this will popup msgbox with "COM1" or "COM3"... all the valid port number, but no vendor info or product info
但我找不到将这两者结合在一起的方法。有什么想法吗?
答案 0 :(得分:1)
假设您只使用Windows,则需要使用注册表来获取此信息。
您可以在此处获取系统上所有COM端口的列表:HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
。值将根据其类型列出,因此实际串行端口将显示名称\ Device \ Serialn和数据COMxx,其他设备可能不同。如果你看这里你可以找到一个名称,你可以用来过滤COM端口所属的设备类型,然后在你的应用程序中列出这些名称。
您可以使用Declare
语句挂钩到Windows DLL的API中,在Xojo中执行此操作:
https://docs.xojo.com/index.php/Declare
这是一个关于Registry API函数的文档,它们将按照此处的描述使用,但使用上面提到的Declare
语句:
http://support.microsoft.com/kb/145679