在 Xojo 中读取 USB 到串行端口信息



我正在编写一个简单的代码来查找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端口名称。 dim i,计为整数 计数 = 系统.串行端口计数

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

但是我找不到将这两者匹配在一起的方法。有什么想法吗?

假设您只使用 Windows,您将需要使用注册表来获取此信息。

您可以在此处获取系统上所有COM端口的列表:HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPSERIALCOMM。值将根据其类型列出,因此真正的串行端口将显示名称\设备\串行和数据COMxx,其他设备可能不同。如果您查看此处,您可以找到可用于过滤COM端口所属的设备类型的名称,然后只需在应用程序中列出这些名称即可。

您可以在 Xojo 中使用 Declare 语句挂接到 Windows DLL 的 API 中执行此操作:https://docs.xojo.com/index.php/Declare

以下是有关注册表 API 函数的文档,它们将按此处所述使用,但使用上面提到的Declare语句:http://support.microsoft.com/kb/145679

最新更新