【发布时间】:2017-02-21 19:14:04
【问题描述】:
我正在尝试利用 FTDI 的 D2XX 驱动程序来访问 Raspberry Pi 3 上的 USB 串行设备。这是我目前所做的:
- 我下载了 1.3.6 ARMv6 hard-float 版本的驱动(说明它适用于树莓派),然后按照自述文件的说明将其安装到 /usr/local/lib 文件夹中李>
- 我按照建议运行了
sudo rmmod ftdi_sio和sudo rmmod usbserial命令以卸载默认内核驱动程序 - 在我的程序中,我要做的第一件事是调用
FT_SetVIDPID函数,以便为我的特定设备正确配置它 - 在我的程序中,我可以通过
FT_CreateDeviceInfoList函数验证是否插入了 1 个设备
但是,在我的程序中,尝试调用 FT_Open 始终失败,并出现 FT_DEVICE_NOT_FOUND (2)。我将程序复制到这里以供参考:
#include <stdio.h>
#include "ftd2xx.h"
int main(int argc, char[] argv)
{
FT_HANDLE ftHandle;
FT_STATUS ftStatus;
int iNumDevs = 0;
ftStatus = FT_SetVIDPID(0x0403, 0x6015);
if (FT_OK != ftStatus)
{
printf("Error: FT_SetPIDVID(%d)\n", (int)ftStatus);
return 1;
}
ftStatus = FT_CreateDeviceInfoList(&iNumDevs);
if (FT_OK != ftStatus)
{
printf("Error: FT_CreateDeviceInfoList(%d)\n", (int)ftStatus);
return 1;
}
printf("Devices: %d\n", iNumDevs);
ftStatus = FT_Open(0, &ftHandle);
if (FT_OK != ftStatus)
{
printf("Error: FT_Open(%d)\n", (int)ftStatus);
return 1;
}
// ...
return 0;
}
我从这个小程序得到的输出是一致的。它总是:
设备:1
错误:FT_Open(2)
我总是用以下方式构建这个程序:
gcc -lftd2xx -o test test.c
第一位确实说有一个连接的设备的事实让我希望我可以让它工作。但基本上任何其他功能(FT_Open、FT_OpenEx 甚至 FT_ListDevices)都会失败,并出现相同的 #2 错误。我错过了什么?
【问题讨论】:
-
我已经有一段时间没有使用 D2XX 驱动程序了,但是您是否在
sudo下运行程序?由于 D2XX 只是在后端使用 libusb,因此它需要对内核中的 USB 设备进行原始访问。 -
我没有用 sudo 运行它。我会尝试并报告!
-
解决了!如果您想发布一个答案,告诉我我需要使用 sudo 运行它,我很乐意接受这个答案。
-
在尝试打开设备时遇到了完全相同的问题。我不知道我需要成为
sudo。
标签: c serial-port raspberry-pi ftdi d2xx