//-------------------------------------------------------------------------------------------------
public FTDI.FT_STATUS InitializeFTDI()
{
// Create new instance of the FTDI device class
SPI_Device= new FTDI();
uint ftdiDeviceCount = 0;
int i;
Initialize_SPI_Constants();
// Determine the number of FTDI devices connected to the machine
ftStatus = SPI_Device.GetNumberOfDevices(ref ftdiDeviceCount);
// Check status
if (ftStatus != FTDI.FT_STATUS.FT_OK)
{
return (ftStatus);
}
// If no devices available, return
if (ftdiDeviceCount == 0)
{
ftStatus = FTDI.FT_STATUS.FT_DEVICE_NOT_FOUND;
return (ftStatus);
}
// Allocate storage for device info list
FTDI.FT_DEVICE_INFO_NODE[] ftdiDeviceList = new FTDI.FT_DEVICE_INFO_NODE[ftdiDeviceCount];
// Populate our device list
ftStatus = SPI_Device.GetDeviceList(ftdiDeviceList);
if (ftStatus == FTDI.FT_STATUS.FT_OK)
{
for (i = 0; i < ftdiDeviceCount; i++)
{
//MessageBox.Show("Device Index: " + i.ToString());
//MessageBox.Show("Flags: " + String.Format("{0:x}", ftdiDeviceList[i].Flags));
//MessageBox.Show("Type: " + ftdiDeviceList[i].Type.ToString());
//MessageBox.Show("ID: " + String.Format("{0:x}", ftdiDeviceList[i].ID));
//MessageBox.Show("Location ID: " + String.Format("{0:x}", ftdiDeviceList[i].LocId));
//MessageBox.Show("Serial Number: " + ftdiDeviceList[i].SerialNumber.ToString());
//MessageBox.Show("Description: " + ftdiDeviceList[i].Description.ToString());
//MessageBox.Show("");
}
}
// Open first device in our list by serial number
ftStatus = SPI_Device.OpenBySerialNumber(ftdiDeviceList[0].SerialNumber);
if (ftStatus != FTDI.FT_STATUS.FT_OK)
{
return (ftStatus);
}
// Set latency timer
ftStatus = SPI_Device.SetLatency(2);
if (ftStatus != FTDI.FT_STATUS.FT_OK)
{
return (ftStatus);
}
// Reset the controller
ftStatus = SPI_Device.SetBitMode(0, 0);
if (ftStatus != FTDI.FT_STATUS.FT_OK)
{
return (ftStatus);
}
// Set synchronous bit bang mode
ftStatus = SPI_Device.SetBitMode(FT232Routputs, 4); // Set device to mode 4 and sets outputs
if (ftStatus != FTDI.FT_STATUS.FT_OK)
{
return (ftStatus);
}
// Set baud rate/bit clock settings
ftStatus = SPI_Device.SetBaudRate(3000000);
if (ftStatus != FTDI.FT_STATUS.FT_OK)
{
return (ftStatus);
}
presetShiftRegisterOutputs();
return (ftStatus);
}