【问题标题】:Why can't I access my FTDI device using D2XX on a Raspberry Pi?为什么我无法在 Raspberry Pi 上使用 D2XX 访问我的 FTDI 设备?
【发布时间】:2017-02-21 19:14:04
【问题描述】:

我正在尝试利用 FTDI 的 D2XX 驱动程序来访问 Raspberry Pi 3 上的 USB 串行设备。这是我目前所做的:

  • 我下载了 1.3.6 ARMv6 hard-float 版本的驱动(说明它适用于树莓派),然后按照自述文件的说明将其安装到 /usr/local/lib 文件夹中李>
  • 我按照建议运行了sudo rmmod ftdi_siosudo 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


【解决方案1】:

由于 FTDI D2XX 驱动程序只是在后端使用 libusb 以便与设备进行实际通信,因此您需要具有适当的权限才能与它实际通信。最简单的方法是简单地在sudo 下运行程序,这样您就拥有完全的root 权限。

或者,如果由于某种原因您无法在sudo 下运行程序,则应该可以将access the device 作为非root 用户。

【讨论】:

    猜你喜欢
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2020-07-09
    • 2016-01-02
    相关资源
    最近更新 更多