GLa*_*ros 1 driver libusb linux-device-driver ftdi d2xx
我正在使用FTDI D2XX驱动程序API与FTDI设备进行通信.它给了我一些关于设备的信息,比如locid,serialnumber,description,但这还不够.
如何/dev/ttyUSBXX使用此API 获取设备编号()或总线或端口.
谢谢
正如D2XX程序员指南在简介中所述:
对于Linux,Mac OS X(10.4及更高版本)和Windows CE(4.2及更高版本),D2XX驱动程序和VCP驱动程序是 互斥选项,因为在给定设备ID的给定时间内只能安装一种驱动程序类型.
问题是您的Linux可能会自动加载VCP驱动程序(ftdi_sio),因此您无法使用D2XX驱动程序.在终端中键入以下内容以确保ftdi_sio已加载:
sudo lsmod | grep -a "ftdi_sio"
Run Code Online (Sandbox Code Playgroud)
通过这篇文章,我成功克服了这个问题.我的工作解决方案是创建两个文本文件/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\
'"
Run Code Online (Sandbox Code Playgroud)
现在让我们假设第二个文件使我的设备在没有root权限的情况下可用,99-my-device.rules并且具有以下内容:
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{product}=="FTDI Device",\
MODE="0666"
Run Code Online (Sandbox Code Playgroud)
这些规则将在下次重启时生效,或者可以通过以下方式应用:
sudo udevadm trigger
Run Code Online (Sandbox Code Playgroud)
设备的属性(供应商ID,产品ID和产品描述)可以通过sudo lsusb -v命令获得,但这将显示太多信息.您可以使用以下内容过滤结果:
sudo lsusb -v | grep -a "Bus ... Device ...:\|idVendor\|idProduct\|iProduct"
Run Code Online (Sandbox Code Playgroud)
在您成功阻止Linux加载ftdi_sio特定设备的驱动程序后,您可以使用D2XX API.要从所有连接的设备获取信息,请尝试FT_GetDeviceInfoDetail使用D2XX Programmer's Guide中的示例函数代码.
| 归档时间: |
|
| 查看次数: |
2625 次 |
| 最近记录: |