簡體   English   中英

為什么這個 FTDI function 為 fhandle 返回零?

[英]Why does this FTDI function return zero for the fthandle?

我有一個 FTDI USB3 開發板和一些 FTDI 提供的代碼來訪問它。 該代碼適用於設備編號、VID/PID 等內容,但對於“ftHandle”總是返回零。 由於驅動板需要手柄,這沒有幫助嗎? 誰能明白為什么會發生這種情況?

   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;
    }

這確實不是超級直接,但在 FTDI 知識庫中的簡短介紹會產生:

這個function建立一個設備信息列表,返回系統連接的D2XX設備數量。 該列表包含有關打開和打開的設備的信息。

句柄只存在於打開的設備。 因此,我假設您的代碼尚未包含該步驟。 如果是這樣,您需要先打開它,例如使用 FT_Open。 有很多可用的例子。 您可以查看他們的頁面或 stackoverflow 以獲取工作示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM