2012-02-13 61 views
1

我有一個C#窗體窗體程序,它使用FTDI FTD2XX_NET庫來枚舉使用ftdi驅動程序的設備並獲得它們的優點。使用FTDI檢測正確的設備FTD2xx_NET

我的問題是我想確定具體是否我正在說的硬件是我正在尋找的特定設備。這是一個自定義的硬件,但看起來供應商留下了FTDI芯片組的通用PID/VID。

現在我已經使出發送命令並等待有效響應/超時,但是這似乎可能在更廣闊的世界失敗鑑於大量採用這種芯片的設備。

解決此問題的正確方法是什麼?我不是一個硬件程序員,所以我不確定最佳實踐建議是什麼。如有需要,我可以要求供應商修改硬件固件。

回答

2

即使是一個普通的PID/VID,供應商可以更改設備的描述,這樣你就可以開始通信前檢查:

// Create new instance of the FTDI device class 
var ftdiDevice = new FTDI(); 

// Check how many FTDI devices are connected 
uint deviceNum = 0; 
ftdiDevice.GetNumberOfDevices(ref deviceNum); 

var status = FTDI.FT_STATUS.FT_DEVICE_NOT_FOUND;    
if (deviceNum > 0) 
{ 
    // Get information about the connected devices 
    var devicelist = new FTDI.FT_DEVICE_INFO_NODE[deviceNum]; 
    ftdiDevice.GetDeviceList(devicelist); 
    for (uint i = 0; i < deviceNum; i++) 
    { 
     if (devicelist[i].Description == "My Device Description") 
     { 
      status = ftdiDevice.OpenByIndex(i); 
      break; 
     } 
    } 
} 

if (status != FTDI.FT_STATUS.FT_OK) 
{ 
    throw new Exception("Unable to connect"); 
} 

您可以查看或更改設備描述,序列號,PID/VID等,使用FT PROG。在保留通用PID/VID的同時使用自定義描述將允許您在不做任何修改的情況下使用來自FTDI的簽名驅動程序。

0

我假設您正在嘗試與第三方開發的設備進行通信?

如果供應商沒有設置自定義的PID/VID(即它保留爲FTDI設置的默認PID/VID),那麼試圖通過通信協議與設備通信似乎是合理的。通信協議通常以一組握手命令開始,以確保您正在與正確的設備進行通信。設備是否有這樣的命令?

1

httpstackoverflow.comquestions9264312detecting使用-FTDI-ftd2xx淨正確器件用

正如上面提到可以使用

  • DEVICELIST [I]。說明,但也
  • DEVICELIST [I ] .SerialNumber,都可以用FTDI實用程序FT_Prog.exe或一些自定義代碼重新編程,這是我爲設備Nusbio所做的。
  • 還可以檢測與API GetDeviceID FT232RL,FT231X或FT232H具有不同的ID,其是一個無符號長
類型芯片