Serial port 在Xojo中读取USB到串行端口信息
我正在写一个简单的代码来查找Windows平台中的USB到串行端口,如果该端口是我想要的(可以通过VID/PID号进行过滤),那么程序将打开该端口 我使用MonkeyBread插件WinUSBDeviceMBS,属性为VendorID和ProductID,可以选择特定的USB端口。示例代码如下Serial port 在Xojo中读取USB到串行端口信息,serial-port,usbserial,xojo,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
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,计数为整数
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
但是我找不到一个方法来匹配这两个。有什么想法吗?假设您只使用Windows,则需要使用注册表来获取此信息 您可以在此处获得系统上所有COM端口的列表:
HKEY\U LOCAL\U MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
。值将根据其类型列出,因此实际串行端口将显示名称\Device\Serialn和数据COMxx,其他设备可能不同。如果您查看此处,您可以找到一个名称,用于筛选COM端口属于哪种类型的设备,然后只需在应用程序中列出这些名称即可
您可以在Xojo中通过使用Declare
语句钩住Windows DLL的API来实现这一点:
这是一个关于注册表API函数的文档,它们将按此处所述使用,但使用上面提到的Declare
语句:
假设您只使用Windows,则需要使用注册表来获取此信息 您可以在此处获得系统上所有COM端口的列表:
HKEY\U LOCAL\U MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
。值将根据其类型列出,因此实际串行端口将显示名称\Device\Serialn和数据COMxx,其他设备可能不同。如果您查看此处,您可以找到一个名称,用于筛选COM端口属于哪种类型的设备,然后只需在应用程序中列出这些名称即可
您可以在Xojo中通过使用Declare
语句钩住Windows DLL的API来实现这一点:
这是一个关于注册表API函数的文档,它们将按此处所述使用,但使用上面提到的Declare
语句:
是的,在VB.NET中,我使用类似的方法读取winmgnt:\\.\。。。去读那本书。但是,我不知道如何用Xojo编写代码。正如您在阅读注册表时提到的,您能给出一个示例代码吗?ThanksCheck更新了注释,您需要通过Declare语句使用注册表函数。谢谢!顺便说一句,你知道MacOSX提供了类似的功能让程序员做同样的工作吗?这要看情况而定。由于在OSX上,该设备将显示为tty设备,因此将有所不同。我知道一些供应商的转换器将显示为ttyUSB0,而其他转换器可能显示为特定于供应商的,因此这将取决于您的设备。如果您知道VID/PID并从那里检查tty设备名称,那么可能有一种方法可以通过系统探查器进行跟踪,以获取VID/PID-希望这会有所帮助。是的,在VB.NET中,我使用类似的方法读取winmgnt:\\.\.\。。。去读那本书。但是,我不知道如何用Xojo编写代码。正如您在阅读注册表时提到的,您能给出一个示例代码吗?ThanksCheck更新了注释,您需要通过Declare语句使用注册表函数。谢谢!顺便说一句,你知道MacOSX提供了类似的功能让程序员做同样的工作吗?这要看情况而定。由于在OSX上,该设备将显示为tty设备,因此将有所不同。我知道一些供应商的转换器将显示为ttyUSB0,而其他转换器可能显示为特定于供应商的,因此这将取决于您的设备。如果您知道VID/PID并从那里检查tty设备名称,可能有一种方法可以通过系统探查器进行跟踪,以获取VID/PID-希望这有帮助。