c - 尝试从设备读取时,Raspberry Pi 上出现 FT_DEVICE_NOT_FOUND - sudo 不起作用

标签 c raspberry-pi serial-port ftdi d2xx

第一篇文章,请随意攻击我。

尝试对 FTDI 设备使用 FT_Open()。该函数用于 FTDI 驱动程序的示例“读取”程序,目前在那里失败。我在树莓派 4 上运行这个程序,但也在 Ubuntu 上尝试,但出现了同样的错误。

在两台设备上,FTDI 都可以在 lsusb 的结果中找到,显示我需要连接的序列号。我尝试使用 FT_Open() 通过端口号打开,但这不起作用,返回 FT_DEVICE_NOT_FOUND 的 ftStatus 代码。

在运行示例“读取”程序时,我尝试使用 sudo 来纠正此问题,但这不起作用,但作为对之前问题的修复提到了。

这是正在打印的代码和错误消息。这与我的笔记本电脑和树莓派上的代码相同,它们都会导致相同的问题。

    if(ftStatus != FT_OK) {
        /* 
            This can fail if the ftdi_sio driver is loaded
            use lsmod to check this and rmmod ftdi_sio to remove
            also rmmod usbserial
         */
        printf("FT_Open(%d): %d failed\n", iport, ftStatus);
        return 1;
    }

我预计这甚至不会打印,但目前我正在打印

FT_Open(6):2 失败。

关于该做什么有什么想法吗?此 FTDI 设备的 ProductId 不同,因为它实际上是 PLMS Developments 销售的 Nistune Consult 电缆。我正在尝试通过 Linux 连接到它,目前仅支持 Windows。

编辑:好吧,在将我正在使用的 FT232R 芯片上的 EEPROM 重新编程为默认设置后,我最终确实让它工作了。

但是我试图做到这一点而不需要这样做。我想将默认的供应商 ID 与芯片的不同产品 ID 一起使用。以前,每次我拔掉设备时,它都会重新加载 ftdi_sio 和 usbserial 模块。这将导致它永远无法正确连接。正如我在其他问题中看到的那样,这个问题可以解决。

现在我需要找到一种在 Linux 驱动程序软件中接受自定义产品 ID 的方法。我尝试更改所有看似相关的信息,但它再次无法识别该设备。

最佳答案

首先,您应该使用以下命令设置自定义 VID-PID 值。

ftStatus = FT_SetVIDPID(custom_VID, custom_PID);

关于c - 尝试从设备读取时,Raspberry Pi 上出现 FT_DEVICE_NOT_FOUND - sudo 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57440522/

相关文章:

c - 生成没有良好随机源的初始化 vector

c - c中的malloc char数组指针给出错误

docker - 在Raspberry pi/dev/spi *上的Dockerfile中执行chmod

c++ - QSerialPort 正确发送多行

c - 逐行读取文件,将随机行写入 C 中的另一个文件

c - 如何在 Turbo C 的 C 代码中包含汇编代码?

python-3.x - 无法从通过 Cron 运行的 python 脚本执行 url - Raspberry Pi

git - 无法纠正突发 "server certificate verification failed"

macos - Mac 命令行 - 列出可用的串行端口?

Java串行通信和多线程