gpt4 book ai didi

c - 为什么我无法在 Raspberry Pi 上使用 D2XX 访问我的 FTDI 设备?

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:46 25 4
gpt4 key购买 nike

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

  • 我下载了 1.3.6 ARMv6 hard-float 版本的驱动程序(声明它适用于 Raspberry Pi),然后按照 Readme 说明将其安装到/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;
}

我从这个小程序得到的输出是一致的。它总是:

Devices: 1

Error: FT_Open(2)

我总是构建这个程序:

gcc -lftd2xx -o test test.c

事实上,第一位确实说有一个连接的设备让我希望我可以让它工作。但基本上所有其他函数(FT_Open、FT_OpenEx,甚至 FT_ListDevices)都失败并出现相同的 #2 错误。我错过了什么?

最佳答案

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

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

关于c - 为什么我无法在 Raspberry Pi 上使用 D2XX 访问我的 FTDI 设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42375995/

25 4 0
文章推荐: c - printf 函数字符串打印输出参数用法
文章推荐: python - 从传递参数的网站读取数据
文章推荐: html - 如何让 2 个单独的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com