我正在使用FTDI D2XX驱动程序API与FTDI设备通信。它给了我一些关于这个设备的信息,比如迷幻剂,序列号,描述,但这还不够。
如何使用此API获取设备号(/dev/ttyUSBXX)或总线或端口。
谢谢
发布于 2017-04-20 08:51:24
正如D2XX程序员指南在导言中所述:
对于Linux、Mac (10.4及更高版本)和Windows (4.2及更高版本),D2XX驱动程序和VCP驱动程序是相互排斥的选项,因为对于给定的设备ID,在给定时间只能安装一种驱动程序类型。
问题是您的Linux可能会自动加载VCP驱动程序(ftdi_sio),因此不能使用D2XX驱动程序。在终端中键入以下内容以确保加载了ftdi_sio:
sudo lsmod | grep -a "ftdi_sio"通过这的文章,我成功地克服了这个问题。我的工作解决方案是在/etc/udev/rules.d/下创建两个文本文件。第一个从ftdi_sio驱动程序中解除对我的设备的绑定,第二个则调整我的设备的权限。假设解除绑定我的设备的第一个文件命名为98-my-device.rules,并具有以下内容:
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,并具有以下内容:
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{product}=="FTDI Device",\
MODE="0666"这些规则将在下一次重新启动时处于活动状态,或者可以通过以下方法应用:
sudo udevadm trigger设备的属性(供应商id、产品id和产品描述)可以通过sudo lsusb -v命令获得,但这将显示太多的信息。您可以使用这样的方法过滤结果:
sudo lsusb -v | grep -a "Bus ... Device ...:\|idVendor\|idProduct\|iProduct"在成功阻止Linux为特定设备加载ftdi_sio驱动程序之后,可以使用D2XX API。要从所有连接的设备获取信息,请尝试D2XX程序员指南中的函数D2XX示例代码。
https://stackoverflow.com/questions/33649296
复制相似问题