Macos 基于总线位置ID打开FTDI设备
我有一些FTDI设备连接到我的Mac。它们都具有相同的描述、PID和VID。我希望能够向FT_OpenEx()指定要打开的文件 我可以使用IO工具包API获取我感兴趣的设备的总线位置ID。FT_OpenEX()API允许我传入一个位置,而不是描述或序列号 但是,返回位置ID的FT API返回的值与总线位置ID完全不同。我连接的其中一个设备的总线位置ID为0x1a127000,当我使用FT API获取所有设备的位置时,它会显示0x1a051和0x1a052Macos 基于总线位置ID打开FTDI设备,macos,ftdi,Macos,Ftdi,我有一些FTDI设备连接到我的Mac。它们都具有相同的描述、PID和VID。我希望能够向FT_OpenEx()指定要打开的文件 我可以使用IO工具包API获取我感兴趣的设备的总线位置ID。FT_OpenEX()API允许我传入一个位置,而不是描述或序列号 但是,返回位置ID的FT API返回的值与总线位置ID完全不同。我连接的其中一个设备的总线位置ID为0x1a127000,当我使用FT API获取所有设备的位置时,它会显示0x1a051和0x1a052 有没有办法从IO Kit总线位置ID和F
有没有办法从IO Kit总线位置ID和FT位置转换,或者以其他方式指定要使用的设备?我最近遇到了一个类似的问题:在某些位置和设备上,我得到了0作为位置ID。我向FTDI写了一个协助请求,这就是我得到的: 我们测试了USB 3.0主机PCI卡,发现它与我们的 原因如下 Windows计算机上的现有主机端口在 格式:\device\usbfdo-#其中#是一个数字 USB 3.0卡被称为\设备\设备,其中\是一个数字 USB 3.0主机端口不符合标准命名约定 在windows计算机上,我们不尝试打开此端口进行发送 枚举和尝试加载驱动程序时的设备ID 正如我们所期望的,微软在添加对 3.0,我们希望问题从我们的角度消失。因此,我们仍然认为问题在于3.0主机,而不是主机 我们的司机 即使可以进行更改以支持此主机 控制器很可能是您尝试的下一个主机设备 (不同制造商)将有另一个需要 不同的修改。这将不是一个可持续发展的模式 与USB的PnP精神背道而驰 我们相信这个问题已经在Windows8中解决了。我们目前正在 我希望我们正在为新的Windows8驱动程序进行认证 这项服务将于2月底提供 这不是很令人满意,但至少它描述了它不起作用的原因。当我有时间时,我将尝试使用libusbX获取位置id,然后使用ftdiapi例程打开它。 但不确定什么时候会这样
Veit因为我已经为linux做过一次,并且有了一个可行的解决方案,所以我想我也应该尝试为mac解决这个问题。 我不确定我做得是否正确,但我想到的是: 基本上,将MacOSX位置id右移16位,二进制&使用0xff00并添加设备地址。 这应该等于您从ftdi驱动程序获得的位置ID 示例:
在“系统信息”程序中,我可以找到我的USB设备并看到如下内容:
Location ID: 0x14100000 / 21
这似乎是“位置id/设备号”。
现在将其插入公式:
0x141000000>>16 = 0x1410
0x1410&0xff00 = 0x1400
0x1400|21 = 0x1415
因此,在十进制表示法中,位置id是:5141,它与FTDI返回的内容相匹配。注意,上面使用的21是十六进制中的0x15
我在30分钟前就解决了这个问题,所以如果这个实现有问题,请告诉我。我也需要它可靠地工作。我试着在mac和设备之间安装一个集线器,这个公式仍然适用
IOKit调用是:
kr = (*dev)->GetLocationID(dev, &locationid);
kr = (*dev)->GetDeviceAddress(dev, &address);
在网站上描述
编辑
由于您的FTDI位置id中有5位数字,我想知道您的设备编号。也许我的方法在你的情况下不起作用?这是一个有用的答案,但它根本不能回答问题:(