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

时间:2013-11-08 21:30:19

标签: serial-port usbserial xojo

我正在编写一个简单的代码,在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

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

1 个答案:

答案 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