본문 바로가기
임베디드.일렉트로닉스

FTDI. FTD2XX.DLL. PC프로그램에서FTDI USB칩과 통신코딩 라이브러리.

by i.got.it 2016. 1. 31.

 

 

개요.

 
FTD2XX.DLL : FTDI 사의 자사 USB 칩의 PC드라이버 통신용 DLL형식의 라이브러리.
아래 계층 구조에서 파박 부분. FTD2XX.DLL 활용하여 응용프로그램개발시 Visual C++  최적.
 
 
 
 

 

 

함수 활용법 - 연결상태 , 정보

 

USB 경유 PC에 연결된 FTDI 칩의 정보 확보함수 3개.


1. FT_STATUS  FT_CreateDeviceInfoList (LPDWORD lpdwNumDevs)


 - 호출시점 : 아래 2, 3  함수 호출하기 전에 가장 먼저 호출해야한다.
 - 기능 : DTD2XX.DLL 내부에 정의되어있는 구조체배열 "FT_DEVICE_LIST_INFO_NODE" FTDI USB 칩 정보 갱신하고, PC에 연결된 FTDI 칩의 수량을 함수인자로 lpdwNumDevs 로 반환한다.
 - 주의사항 :  이 함수 호출시점의 FTDU USB 칩의 USb 연결정보만을 보여준다. 즉, 호출된 이후 USB 연결 해제된 경우 DLL내부 "리스트컬렉션의 정보가 자동갱신되지 않고, 이 함수가 다시 호출되어야 신규 정보로 갱신된다.




2. FT_STATUS FT_GetDeviceInfoList (FT_DEVICE_LIST_INFO_NODE *pDest,  LPDWORD lpdwNumDevs)
 - 호출시점 : 상기 1 먼저 호출하고,  이 함수 호출되어야 한다.
- 기능 : 구조체배열 FT_DEVICE_LIST_INFO_NODE 포인터 반환받는다. 
- 코드예.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
FT_STATUS ftStatus; 
FT_DEVICE_LIST_INFO_NODE *devInfo; 
DWORD numDevs; 
 
// create the device information list 
ftStatus = FT_CreateDeviceInfoList(&numDevs);  
 
if (ftStatus == FT_OK) {  printf("Number of devices is %d\n",numDevs); }  
 
if (numDevs > 0) {  
    // allocate storage for list based on numDevs  
    devInfo = (FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*numDevs);
 
    // get the device information list  
    ftStatus = FT_GetDeviceInfoList(devInfo,&numDevs);
 
    if (ftStatus == FT_OK) {
        for (int i = 0; i < numDevs; i++) {
                  printf("Dev %d:\n",i);
                  printf("  Flags=0x%x\n",devInfo[i].Flags);
                  printf("  Type=0x%x\n",devInfo[i].Type);
                  printf("  ID=0x%x\n",devInfo[i].ID);
                  printf("  LocId=0x%x\n",devInfo[i].LocId);
                  printf("  SerialNumber=%s\n",devInfo[i].SerialNumber);
                  printf("  Description=%s\n",devInfo[i].Description); 
                  printf("  ftHandle=0x%x\n",devInfo[i].ftHandle);
        }
     }
}  
 
구조체 FT_DEVICE_LIST_INFO_NODE 정의.


1
2
3
4
5
6
7
8
9
10
11
12
13
 
typedef struct _ft_device_list_info_node {  
 
 DWORD Flags;  
 DWORD Type;  
 DWORD ID;  
 DWORD LocId;   
 char SerialNumber[16];   
 char Description[64];   
 FT_HANDLE ftHandle;  
 
} FT_DEVICE_LIST_INFO_NODE;  
 












3. FT_STATUS FT_GetDeviceInfoDetail ( DWORD dwIndex,
                                                     LPDWORD lpdwFlags,
                                                     LPDWORD lpdwType,
                                                     LPDWORD lpdwID,
                                                     LPDWORD lpdwLocId,
                                                     PCHAR pcSerialNumber,
                                                     PCHAR pcDescription,
                                                     FT_HANDLE *ftHandle )


 - 호출시점 : 상기 1 먼저 호출하고, 이 함수 호출되어야 한다.
 - 기능 : 인자 dwIndex에 해당하는 기기의 정보를 인자들로 반환한다. 상기2의 함수로 모두 확보되는 정보이므로 상기 2 사용시 본함수는 쓸데없음.





 

연관 

 

본 DLL 로 통신 가능 칩 예 

 

칩 . FT240XQ . USB to 8bit FIFO . 1MBytes/sec

FT240XQ - USB to 8bit FIFO. 1MByte/sec. 외형 특징. Entire USB protocol handled on the chip. No USB specific firmware programming required. Fully integrated 2048 byte MTP Memory for storing device descriptors and CBUS I/O configuration. Fully integrated

igotit.tistory.com

 

 

 

 

 


첫 등록 : 2016.01.31

최종 수정 : 2023.07.21

단축 주소 : https://igotit.tistory.com/647


 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5