首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个FTDI函数为fthandle返回零?

为什么这个FTDI函数为fthandle返回零?
EN

Stack Overflow用户
提问于 2022-08-18 12:02:23
回答 1查看 61关注 0票数 0

我有一个FTDI USB3开发板,一些FTDI提供了访问它的代码。代码对设备号、VID/PID等都很好,但对于“ftHandle”总是返回零。因为手柄是驱动板所必需的,这是没有帮助的!有人能明白为什么会发生这种事吗?

代码语言:javascript
运行
复制
   static FT_STATUS displayDevicesMethod2(void)
   {
    FT_STATUS   ftStatus;
    FT_HANDLE   ftHandle = NULL;

    // Get and display the list of devices connected
    // First call FT_CreateDeviceInfoList to get the number of connected devices.
    // Then either call FT_GetDeviceInfoList or FT_GetDeviceInfoDetail to display device 
   info.
    // Device info: Flags (usb speed), device type (600 e.g.), device ID (vendor, 
 product), 
    handle for subsequent data access.
    DWORD numDevs = 0;
    ftStatus = FT_CreateDeviceInfoList(&numDevs);   // Build a list and return number 
    connected.
    if (FT_FAILED(ftStatus))
    {
        printf("Failed to create a device list, status = %d\n", ftStatus);
    }
    printf("Successfully created a device list.\n\tNumber of connected devices: %d\n", 
    numDevs);
    // Method 2: using FT_GetDeviceInfoDetail
    if (!FT_FAILED(ftStatus) && numDevs > 0)
    {
        ftHandle = NULL;
        DWORD Flags = 0;
        DWORD Type = 0;
        DWORD ID = 0;
        char SerialNumber[16] = { 0 };
        char Description[32] = { 0 };
        for(DWORD i = 0; i <numDevs; i++)
        {
            ftStatus = FT_GetDeviceInfoDetail(i, &Flags, &Type, &ID, NULL, SerialNumber, 
    Description, &ftHandle);
            if (!FT_FAILED(ftStatus))
            {
                printf("Device[%d] (using FT_GetDeviceInfoDetail)\n", i);
                printf("\tFlags: 0x%x %s | Type: %d | ID: 0x%08X | ftHandle=0x%p\n",
                    Flags,
                    Flags & FT_FLAGS_SUPERSPEED? "[USB 3]":
                    Flags & FT_FLAGS_HISPEED? "[USB 2]":
                    Flags & FT_FLAGS_OPENED? "[OPENED]": "",
                    Type,
                    ID,
                    ftHandle);
                printf("\tSerialNumber=%s\n", SerialNumber);
                printf("\tDescription=%s\n", Description);
            }
         }
      }
    return ftStatus;
    }
EN

回答 1

Stack Overflow用户

发布于 2022-08-28 13:16:16

这确实不是超级直截了当的,而是对FTDI知识库的一个简短的窥视:

此函数构建一个设备信息列表,并返回连接到系统的D2XX设备的数量。该列表包含有关的信息,包括未打开的和打开的设备。

一个句柄只存在于打开的设备上。因此,我假设您的代码还没有包含该步骤。如果是这样的话,您需要首先打开它,例如使用FT_Open。有很多可用的例子。您可以检查它们的页面或堆栈溢出以获得一个工作示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73402756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档