首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用FTDI D2XX驱动程序API获得Linux设备?

如何使用FTDI D2XX驱动程序API获得Linux设备?
EN

Stack Overflow用户
提问于 2015-11-11 11:08:48
回答 1查看 8.4K关注 0票数 4

我正在使用FTDI D2XX驱动程序API与FTDI设备通信。它给了我一些关于这个设备的信息,比如迷幻剂,序列号,描述,但这还不够。

如何使用此API获取设备号(/dev/ttyUSBXX)或总线或端口。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-04-20 08:51:24

正如D2XX程序员指南在导言中所述:

对于Linux、Mac (10.4及更高版本)和Windows (4.2及更高版本),D2XX驱动程序和VCP驱动程序是相互排斥的选项,因为对于给定的设备ID,在给定时间只能安装一种驱动程序类型。

问题是您的Linux可能会自动加载VCP驱动程序(ftdi_sio),因此不能使用D2XX驱动程序。在终端中键入以下内容以确保加载了ftdi_sio

代码语言:javascript
复制
sudo lsmod | grep -a "ftdi_sio"

通过的文章,我成功地克服了这个问题。我的工作解决方案是在/etc/udev/rules.d/下创建两个文本文件。第一个从ftdi_sio驱动程序中解除对我的设备的绑定,第二个则调整我的设备的权限。假设解除绑定我的设备的第一个文件命名为98-my-device.rules,并具有以下内容:

代码语言:javascript
复制
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{product}=="FTDI Device",\
PROGRAM="/bin/sh -c '\
    echo -n $id:1.0 > /sys/bus/usb/drivers/ftdi_sio/unbind;\
    echo -n $id:1.1 > /sys/bus/usb/drivers/ftdi_sio/unbind\
'"

现在,假设第二个文件(它使我的设备在没有根权限的情况下可用)被命名为99-my-device.rules,并具有以下内容:

代码语言:javascript
复制
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{product}=="FTDI Device",\
MODE="0666"

这些规则将在下一次重新启动时处于活动状态,或者可以通过以下方法应用:

代码语言:javascript
复制
sudo udevadm trigger

设备的属性(供应商id、产品id和产品描述)可以通过sudo lsusb -v命令获得,但这将显示太多的信息。您可以使用这样的方法过滤结果:

代码语言:javascript
复制
sudo lsusb -v | grep -a "Bus ... Device ...:\|idVendor\|idProduct\|iProduct"

在成功阻止Linux为特定设备加载ftdi_sio驱动程序之后,可以使用D2XX API。要从所有连接的设备获取信息,请尝试D2XX程序员指南中的函数D2XX示例代码。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33649296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档