public FTDI()
{
// If FTD2XX.DLL is NOT loaded already, load it
if (hFTD2XXDLL == IntPtr.Zero)
{
// Load our FTD2XX.DLL library
hFTD2XXDLL = LoadLibrary(@"FTD2XX.DLL");
if (hFTD2XXDLL == IntPtr.Zero)
{
// Failed to load our FTD2XX.DLL library from System32 or the application directory
// Try the same directory that this FTD2XX_NET DLL is in
LogB.Debug("FTD2XX: Attempting to load FTD2XX.DLL from:\n" + Path.GetDirectoryName(GetType().Assembly.Location));
hFTD2XXDLL = LoadLibrary(@Path.GetDirectoryName(GetType().Assembly.Location) + "\\FTD2XX.DLL");
}
}
// If we have succesfully loaded the library, get the function pointers set up
if (hFTD2XXDLL != IntPtr.Zero)
{
// Set up our function pointers for use through our exported methods
pFT_CreateDeviceInfoList = GetProcAddress(hFTD2XXDLL, "FT_CreateDeviceInfoList");
pFT_GetDeviceInfoDetail = GetProcAddress(hFTD2XXDLL, "FT_GetDeviceInfoDetail");
pFT_Open = GetProcAddress(hFTD2XXDLL, "FT_Open");
pFT_OpenEx = GetProcAddress(hFTD2XXDLL, "FT_OpenEx");
pFT_Close = GetProcAddress(hFTD2XXDLL, "FT_Close");
pFT_Read = GetProcAddress(hFTD2XXDLL, "FT_Read");
pFT_Write = GetProcAddress(hFTD2XXDLL, "FT_Write");
pFT_GetQueueStatus = GetProcAddress(hFTD2XXDLL, "FT_GetQueueStatus");
pFT_GetModemStatus = GetProcAddress(hFTD2XXDLL, "FT_GetModemStatus");
pFT_GetStatus = GetProcAddress(hFTD2XXDLL, "FT_GetStatus");
pFT_SetBaudRate = GetProcAddress(hFTD2XXDLL, "FT_SetBaudRate");
pFT_SetDataCharacteristics = GetProcAddress(hFTD2XXDLL, "FT_SetDataCharacteristics");
pFT_SetFlowControl = GetProcAddress(hFTD2XXDLL, "FT_SetFlowControl");
pFT_SetDtr = GetProcAddress(hFTD2XXDLL, "FT_SetDtr");
pFT_ClrDtr = GetProcAddress(hFTD2XXDLL, "FT_ClrDtr");
pFT_SetRts = GetProcAddress(hFTD2XXDLL, "FT_SetRts");
pFT_ClrRts = GetProcAddress(hFTD2XXDLL, "FT_ClrRts");
pFT_ResetDevice = GetProcAddress(hFTD2XXDLL, "FT_ResetDevice");
pFT_ResetPort = GetProcAddress(hFTD2XXDLL, "FT_ResetPort");
pFT_CyclePort = GetProcAddress(hFTD2XXDLL, "FT_CyclePort");
pFT_Rescan = GetProcAddress(hFTD2XXDLL, "FT_Rescan");
pFT_Reload = GetProcAddress(hFTD2XXDLL, "FT_Reload");
pFT_Purge = GetProcAddress(hFTD2XXDLL, "FT_Purge");
pFT_SetTimeouts = GetProcAddress(hFTD2XXDLL, "FT_SetTimeouts");
pFT_SetBreakOn = GetProcAddress(hFTD2XXDLL, "FT_SetBreakOn");
pFT_SetBreakOff = GetProcAddress(hFTD2XXDLL, "FT_SetBreakOff");
pFT_GetDeviceInfo = GetProcAddress(hFTD2XXDLL, "FT_GetDeviceInfo");
pFT_SetResetPipeRetryCount = GetProcAddress(hFTD2XXDLL, "FT_SetResetPipeRetryCount");
pFT_StopInTask = GetProcAddress(hFTD2XXDLL, "FT_StopInTask");
pFT_RestartInTask = GetProcAddress(hFTD2XXDLL, "FT_RestartInTask");
pFT_GetDriverVersion = GetProcAddress(hFTD2XXDLL, "FT_GetDriverVersion");
pFT_GetLibraryVersion = GetProcAddress(hFTD2XXDLL, "FT_GetLibraryVersion");
pFT_SetDeadmanTimeout = GetProcAddress(hFTD2XXDLL, "FT_SetDeadmanTimeout");
pFT_SetChars = GetProcAddress(hFTD2XXDLL, "FT_SetChars");
pFT_SetEventNotification = GetProcAddress(hFTD2XXDLL, "FT_SetEventNotification");
pFT_GetComPortNumber = GetProcAddress(hFTD2XXDLL, "FT_GetComPortNumber");
pFT_SetLatencyTimer = GetProcAddress(hFTD2XXDLL, "FT_SetLatencyTimer");
pFT_GetLatencyTimer = GetProcAddress(hFTD2XXDLL, "FT_GetLatencyTimer");
pFT_SetBitMode = GetProcAddress(hFTD2XXDLL, "FT_SetBitMode");
pFT_GetBitMode = GetProcAddress(hFTD2XXDLL, "FT_GetBitMode");
pFT_SetUSBParameters = GetProcAddress(hFTD2XXDLL, "FT_SetUSBParameters");
pFT_ReadEE = GetProcAddress(hFTD2XXDLL, "FT_ReadEE");
pFT_WriteEE = GetProcAddress(hFTD2XXDLL, "FT_WriteEE");
pFT_EraseEE = GetProcAddress(hFTD2XXDLL, "FT_EraseEE");
pFT_EE_UASize = GetProcAddress(hFTD2XXDLL, "FT_EE_UASize");
pFT_EE_UARead = GetProcAddress(hFTD2XXDLL, "FT_EE_UARead");
pFT_EE_UAWrite = GetProcAddress(hFTD2XXDLL, "FT_EE_UAWrite");
pFT_EE_Read = GetProcAddress(hFTD2XXDLL, "FT_EE_Read");
pFT_EE_Program = GetProcAddress(hFTD2XXDLL, "FT_EE_Program");
pFT_EEPROM_Read = GetProcAddress(hFTD2XXDLL, "FT_EEPROM_Read");
pFT_EEPROM_Program = GetProcAddress(hFTD2XXDLL, "FT_EEPROM_Program");
}
else
{
// Failed to load our DLL - alert the user
LogB.Debug("FTD2XX: Failed to load FTD2XX.DLL. Are the FTDI drivers installed?");
}
}