📄 ftd2xx.h
字号:
UCHAR USBVersionEnable; // non-zero if chip uses USBVersion WORD USBVersion; // BCD (0x0200 => USB2) // // FT2232C extensions // UCHAR Rev5; // non-zero if Rev5 chip, zero otherwise UCHAR IsoInA; // non-zero if in endpoint is isochronous UCHAR IsoInB; // non-zero if in endpoint is isochronous UCHAR IsoOutA; // non-zero if out endpoint is isochronous UCHAR IsoOutB; // non-zero if out endpoint is isochronous UCHAR PullDownEnable5; // non-zero if pull down enabled UCHAR SerNumEnable5; // non-zero if serial number to be used UCHAR USBVersionEnable5; // non-zero if chip uses USBVersion WORD USBVersion5; // BCD (0x0200 => USB2) UCHAR AIsHighCurrent; // non-zero if interface is high current UCHAR BIsHighCurrent; // non-zero if interface is high current UCHAR IFAIsFifo; // non-zero if interface is 245 FIFO UCHAR IFAIsFifoTar; // non-zero if interface is 245 FIFO CPU target UCHAR IFAIsFastSer; // non-zero if interface is Fast serial UCHAR AIsVCP; // non-zero if interface is to use VCP drivers UCHAR IFBIsFifo; // non-zero if interface is 245 FIFO UCHAR IFBIsFifoTar; // non-zero if interface is 245 FIFO CPU target UCHAR IFBIsFastSer; // non-zero if interface is Fast serial UCHAR BIsVCP; // non-zero if interface is to use VCP drivers // // FT232R extensions // UCHAR UseExtOsc; // Use External Oscillator UCHAR HighDriveIOs; // High Drive I/Os UCHAR EndpointSize; // Endpoint size UCHAR PullDownEnableR; // non-zero if pull down enabled UCHAR SerNumEnableR; // non-zero if serial number to be used UCHAR InvertTXD; // non-zero if invert TXD UCHAR InvertRXD; // non-zero if invert RXD UCHAR InvertRTS; // non-zero if invert RTS UCHAR InvertCTS; // non-zero if invert CTS UCHAR InvertDTR; // non-zero if invert DTR UCHAR InvertDSR; // non-zero if invert DSR UCHAR InvertDCD; // non-zero if invert DCD UCHAR InvertRI; // non-zero if invert RI UCHAR Cbus0; // Cbus Mux control UCHAR Cbus1; // Cbus Mux control UCHAR Cbus2; // Cbus Mux control UCHAR Cbus3; // Cbus Mux control UCHAR Cbus4; // Cbus Mux control UCHAR RIsVCP; // zero if using VCP drivers } FT_PROGRAM_DATA, *PFT_PROGRAM_DATA;FTD2XX_APIFT_STATUS WINAPI FT_EE_Program( FT_HANDLE ftHandle, PFT_PROGRAM_DATA pData );FTD2XX_APIFT_STATUS WINAPI FT_EE_ProgramEx( FT_HANDLE ftHandle, PFT_PROGRAM_DATA lpData, char *Manufacturer, char *ManufacturerId, char *Description, char *SerialNumber ); FTD2XX_APIFT_STATUS WINAPI FT_EE_Read( FT_HANDLE ftHandle, PFT_PROGRAM_DATA pData );FTD2XX_APIFT_STATUS WINAPI FT_EE_ReadEx( FT_HANDLE ftHandle, PFT_PROGRAM_DATA lpData, char *Manufacturer, char *ManufacturerId, char *Description, char *SerialNumber ); FTD2XX_APIFT_STATUS WINAPI FT_EE_UASize( FT_HANDLE ftHandle, LPDWORD lpdwSize );FTD2XX_APIFT_STATUS WINAPI FT_EE_UAWrite( FT_HANDLE ftHandle, PUCHAR pucData, DWORD dwDataLen );FTD2XX_APIFT_STATUS WINAPI FT_EE_UARead( FT_HANDLE ftHandle, PUCHAR pucData, DWORD dwDataLen, LPDWORD lpdwBytesRead );FTD2XX_APIFT_STATUS WINAPI FT_SetLatencyTimer( FT_HANDLE ftHandle, UCHAR ucLatency );FTD2XX_APIFT_STATUS WINAPI FT_GetLatencyTimer( FT_HANDLE ftHandle, PUCHAR pucLatency );FTD2XX_APIFT_STATUS WINAPI FT_SetBitMode( FT_HANDLE ftHandle, UCHAR ucMask, UCHAR ucEnable );FTD2XX_APIFT_STATUS WINAPI FT_GetBitMode( FT_HANDLE ftHandle, PUCHAR pucMode );FTD2XX_APIFT_STATUS WINAPI FT_SetUSBParameters( FT_HANDLE ftHandle, ULONG ulInTransferSize, ULONG ulOutTransferSize ); FTD2XX_APIFT_STATUS WINAPI FT_SetDeadmanTimeout( FT_HANDLE ftHandle, ULONG ulDeadmanTimeout ); FTD2XX_APIFT_STATUS WINAPI FT_GetDeviceInfo( FT_HANDLE ftHandle, FT_DEVICE *lpftDevice, LPDWORD lpdwID, PCHAR SerialNumber, PCHAR Description, LPVOID Dummy );FTD2XX_APIFT_STATUS WINAPI FT_StopInTask( FT_HANDLE ftHandle );FTD2XX_APIFT_STATUS WINAPI FT_RestartInTask( FT_HANDLE ftHandle );FTD2XX_APIFT_STATUS WINAPI FT_SetResetPipeRetryCount( // Linux, OS X: Not supported FT_HANDLE ftHandle, DWORD dwCount );FTD2XX_APIFT_STATUS WINAPI FT_ResetPort( // Linux, OS X: Not supported FT_HANDLE ftHandle ); FTD2XX_APIFT_STATUS WINAPI FT_CyclePort( // Linux, OS X: Not supported FT_HANDLE ftHandle );//// Win32-type functions//FTD2XX_APIFT_HANDLE WINAPI FT_W32_CreateFile( LPCSTR lpszName, DWORD dwAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreate, DWORD dwAttrsAndFlags, HANDLE hTemplate );FTD2XX_APIBOOL WINAPI FT_W32_CloseHandle( FT_HANDLE ftHandle );FTD2XX_APIBOOL WINAPI FT_W32_ReadFile( FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped );FTD2XX_APIBOOL WINAPI FT_W32_WriteFile( FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesWritten, LPOVERLAPPED lpOverlapped );FTD2XX_APIDWORD WINAPI FT_W32_GetLastError( FT_HANDLE ftHandle );FTD2XX_APIBOOL WINAPI FT_W32_GetOverlappedResult( // Linux, OS X: Not supported FT_HANDLE ftHandle, LPOVERLAPPED lpOverlapped, LPDWORD lpdwBytesTransferred, BOOL bWait );FTD2XX_APIBOOL WINAPI FT_W32_CancelIo( // Linux, OS X: Not supported FT_HANDLE ftHandle );//// Win32 COMM API type functions//typedef struct _FTCOMSTAT { DWORD fCtsHold : 1; DWORD fDsrHold : 1; DWORD fRlsdHold : 1; DWORD fXoffHold : 1; DWORD fXoffSent : 1; DWORD fEof : 1; DWORD fTxim : 1; DWORD fReserved : 25; DWORD cbInQue; DWORD cbOutQue;} FTCOMSTAT, *LPFTCOMSTAT;typedef struct _FTDCB { DWORD DCBlength; /* sizeof(FTDCB) */ DWORD BaudRate; /* Baudrate at which running */ DWORD fBinary: 1; /* Binary Mode (skip EOF check) */ DWORD fParity: 1; /* Enable parity checking */ DWORD fOutxCtsFlow:1; /* CTS handshaking on output */ DWORD fOutxDsrFlow:1; /* DSR handshaking on output */ DWORD fDtrControl:2; /* DTR Flow control */ DWORD fDsrSensitivity:1; /* DSR Sensitivity */ DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */ DWORD fOutX: 1; /* Enable output X-ON/X-OFF */ DWORD fInX: 1; /* Enable input X-ON/X-OFF */ DWORD fErrorChar: 1; /* Enable Err Replacement */ DWORD fNull: 1; /* Enable Null stripping */ DWORD fRtsControl:2; /* Rts Flow control */ DWORD fAbortOnError:1; /* Abort all reads and writes on Error */ DWORD fDummy2:17; /* Reserved */ WORD wReserved; /* Not currently used */ WORD XonLim; /* Transmit X-ON threshold */ WORD XoffLim; /* Transmit X-OFF threshold */ BYTE ByteSize; /* Number of bits/byte, 4-8 */ BYTE Parity; /* 0-4=None,Odd,Even,Mark,Space */ BYTE StopBits; /* 0,1,2 = 1, 1.5, 2 */ char XonChar; /* Tx and Rx X-ON character */ char XoffChar; /* Tx and Rx X-OFF character */ char ErrorChar; /* Error replacement char */ char EofChar; /* End of Input character */ char EvtChar; /* Received Event character */ WORD wReserved1; /* Fill for now. */} FTDCB, *LPFTDCB;typedef struct _FTTIMEOUTS { DWORD ReadIntervalTimeout; /* Maximum time between read chars. */ DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */ DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */ DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */ DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */} FTTIMEOUTS,*LPFTTIMEOUTS;FTD2XX_APIBOOL WINAPI FT_W32_ClearCommBreak( FT_HANDLE ftHandle );FTD2XX_APIBOOL WINAPI FT_W32_ClearCommError( FT_HANDLE ftHandle, LPDWORD lpdwErrors, LPFTCOMSTAT lpftComstat );FTD2XX_APIBOOL WINAPI FT_W32_EscapeCommFunction( FT_HANDLE ftHandle, DWORD dwFunc );FTD2XX_APIBOOL WINAPI FT_W32_GetCommModemStatus( FT_HANDLE ftHandle, LPDWORD lpdwModemStatus );FTD2XX_APIBOOL WINAPI FT_W32_GetCommState( FT_HANDLE ftHandle, LPFTDCB lpftDcb );FTD2XX_APIBOOL WINAPI FT_W32_GetCommTimeouts( FT_HANDLE ftHandle, FTTIMEOUTS *pTimeouts );FTD2XX_APIBOOL WINAPI FT_W32_PurgeComm( FT_HANDLE ftHandle, DWORD dwMask );FTD2XX_APIBOOL WINAPI FT_W32_SetCommBreak( FT_HANDLE ftHandle );FTD2XX_APIBOOL WINAPI FT_W32_SetCommMask( FT_HANDLE ftHandle, ULONG ulEventMask );FTD2XX_APIBOOL WINAPI FT_W32_SetCommState( FT_HANDLE ftHandle, LPFTDCB lpftDcb );FTD2XX_APIBOOL WINAPI FT_W32_SetCommTimeouts( FT_HANDLE ftHandle, FTTIMEOUTS *pTimeouts );FTD2XX_APIBOOL WINAPI FT_W32_SetupComm( FT_HANDLE ftHandle, DWORD dwReadBufferSize, DWORD dwWriteBufferSize );FTD2XX_APIBOOL WINAPI FT_W32_WaitCommEvent( FT_HANDLE ftHandle, PULONG pulEvent, LPOVERLAPPED lpOverlapped );//// Device information//typedef struct _ft_device_list_info_node { ULONG Flags; ULONG Type; ULONG ID; DWORD LocId; char SerialNumber[16]; char Description[64]; FT_HANDLE ftHandle;} FT_DEVICE_LIST_INFO_NODE;FTD2XX_APIFT_STATUS WINAPI FT_CreateDeviceInfoList( LPDWORD lpdwNumDevs );FTD2XX_APIFT_STATUS WINAPI FT_GetDeviceInfoList( FT_DEVICE_LIST_INFO_NODE *pDest, LPDWORD lpdwNumDevs );FTD2XX_APIFT_STATUS WINAPI FT_GetDeviceInfoDetail( DWORD dwIndex, LPDWORD lpdwFlags, LPDWORD lpdwType, LPDWORD lpdwID, LPDWORD lpdwLocId, LPVOID lpSerialNumber, LPVOID lpDescription, FT_HANDLE *pftHandle ); FTD2XX_APIFT_STATUS WINAPI FT_GetDriverVersion( FT_HANDLE ftHandle, LPDWORD lpdwVersion ); FTD2XX_APIFT_STATUS WINAPI FT_GetLibraryVersion( LPDWORD lpdwVersion );//// Events//#define EV_RXCHAR 0x0001 // Any Character received#define EV_RXFLAG 0x0002 // Received certain character#define EV_TXEMPTY 0x0004 // Transmitt Queue Empty#define EV_CTS 0x0008 // CTS changed state#define EV_DSR 0x0010 // DSR changed state#define EV_RLSD 0x0020 // RLSD changed state#define EV_BREAK 0x0040 // BREAK received#define EV_ERR 0x0080 // Line status error occurred#define EV_RING 0x0100 // Ring signal detected#define EV_PERR 0x0200 // Printer error occured#define EV_RX80FULL 0x0400 // Receive buffer is 80 percent full#define EV_EVENT1 0x0800 // Provider specific event 1#define EV_EVENT2 0x1000 // Provider specific event 2//// Escape Functions//#define SETXOFF 1 // Simulate XOFF received#define SETXON 2 // Simulate XON received#define SETRTS 3 // Set RTS high#define CLRRTS 4 // Set RTS low#define SETDTR 5 // Set DTR high#define CLRDTR 6 // Set DTR low#define RESETDEV 7 // Reset device if possible#define SETBREAK 8 // Set the device break line.#define CLRBREAK 9 // Clear the device break line.//// PURGE function flags.//#define PURGE_TXABORT 0x0001 // Kill the pending/current writes to the comm port.#define PURGE_RXABORT 0x0002 // Kill the pending/current reads to the comm port.#define PURGE_TXCLEAR 0x0004 // Kill the transmit queue if there.#define PURGE_RXCLEAR 0x0008 // Kill the typeahead buffer if there.#ifdef __cplusplus}#endif#endif /* FTD2XX_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -