第一篇文章,随时欢迎进入我。
试图将FT_Open()用于FTDI设备。该功能在FTDI驱动程序的示例“读取”程序中使用,目前在该程序中失败。我在树莓派4上运行此程序,但也在Ubuntu上尝试出现相同错误。
在两个设备上,FTDI都在lsusb的结果中找到,显示了我需要连接的序列号。我尝试使用FT_Open()通过端口号打开,但这不起作用,返回了FT_DEVICE_NOT_FOUND的ftStatus代码。
[在运行示例'read'程序时,我试图使用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 failed.
关于做什么的任何想法?该FTDI设备的productId不同,因为它实际上是PLMS Developments出售的Nistune Consult Cable。我正在尝试通过Linux连接到它,目前仅支持Windows。
编辑:好的,所以我将要使用的FT232R芯片上的EEPROM重新编程为默认设置后,最终还是可以使它正常工作。
但是我尝试这样做而不需要这样做。我想将默认的vendorID与其他productID一起使用。以前,每次拔下设备电源时,都会重新加载ftdi_sio和usbserial模块。这将导致它永远无法正确连接。正如我在其他问题中看到的那样,可以解决此问题。
现在,我需要找到一种在Linux驱动程序软件中接受自定义productID的方法。我尝试更改所有似乎相关的信息,但又无法识别该设备。
首先,您应该使用以下命令设置自定义VID-PID值。
ftStatus = FT_SetVIDPID(custom_VID, custom_PID);