2012-02-13 2 views
1

ftdi 드라이버를 사용하여 장치를 열거하고 해당 장치를 가져 오는 FTDI FTD2XX_NET 라이브러리를 사용하는 C# Windows 양식 프로그램이 있습니다.FTDI를 사용하여 올바른 장치 감지 FTD2xx_NET

내 문제는 내가 찾고있는 하드웨어가 내가 찾고있는 특정 장치인지 구체적으로 판단하고 싶습니다. 이는 사용자 정의 하드웨어이지만 FTDI 칩셋에 대한 일반 PID/VID를 공급 업체가 맡은 것처럼 보입니다.

지금은 명령을 보내고 유효한 응답/시간 초과를 기다렸지 만이 칩셋을 사용하는 수많은 장치가 있으면 큰 세상에서 실패 할 것 같습니다.

이 문제를 해결하기위한 올바른 접근 방법은 무엇입니까? 나는 하드웨어 프로그래머가 아니므로 이것이 최선의 권장 사항이 무엇인지 확신 할 수 없다. 필요한 경우 공급 업체에게 하드웨어 펌웨어를 수정하도록 요청할 수 있습니다.

답변

2

는 공급 업체, 장치 설명을 변경할 수 있습니다/VID 등을 사용합니다. FT PROG. 일반 PID/VID를 남기면서 사용자 정의 설명을 사용하면 수정하지 않고 FTDI의 서명 된 드라이버를 사용할 수 있습니다.

0

제 3자가 개발 한 장치와 통신하려고한다고 가정합니다.

공급 업체가 맞춤 PID/VID를 설정하지 않은 경우 (즉, FTDI가 설정 한 기본 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를 확인하거나 변경할 수 있습니다 : 당신이 통신을 시작하기 전에 그것을 확인 할 수 있습니다 심지어 일반적인 PID/VID와

1

httpstackoverflow.comquestions9264312detecting-정해 장치 사용-FTDI-ftd2xx 넷

  • devicelist [I] .Description 아니라
  • devicelist [I 사용할 수 상술 한 바와 같이이 ] .SerialNumber는 둘 다 FTDI 유틸리티 FT_Prog.exe 또는 일부 사용자 정의 코드로 다시 프로그래밍 할 수 있습니다.이 코드는 장치 Nusbio에 대해 수행합니다.
  • 또한 API를 GetDeviceID FT232RL, FT231X 또는 FT232H이 부호없는 긴
있는 다른 ID와 유형 칩을 감지 할 수 있습니다