private void SendUpdate(byte OutputData)
        {
            lock (FTDILocker)
            {
                if (FTDI != null)
                {
                    uint   numBytes = 0;
                    byte[] Out      = { OutputData };


                    FTDI.FT_STATUS Status = FTDI.Write(Out, 1, ref numBytes);
                    if (Status != FTDI.FT_STATUS.FT_OK)
                    {
                        FTDI.ErrorHandler(Status);
                    }
                    if (numBytes != 1)
                    {
                        throw new Exception("Wrong number of written bytes (expected 1, received {0} was returned when sending data to the FTDI chip {1}".Build(numBytes, SerialNumber));
                    }
                }
            }
        }
        private void Connect()
        {
            lock (FTDILocker)
            {
                if (FTDI != null)
                {
                    Disconnect();
                }

                if (SerialNumber.IsNullOrWhiteSpace())
                {
                    Log.Exception("The SerialNumber has not been set for the FT245RBitbangController named {0}. Cant connect to device.".Build(Name));
                    return;
                }

                FTDI = new FTDI();

                //Try to open the device
                try
                {
                    FTDI.ErrorHandler(FTDI.OpenBySerialNumber(SerialNumber));
                }
                catch (Exception E)
                {
                    Log.Exception("Could not open the connection to FTDI chip with serial number {0}.".Build(SerialNumber), E);
                    FTDI = null;
                    return;
                }

                // Set FT245RL to synchronous bit-bang mode, used on sainsmart relay board
                try
                {
                    FTDI.ErrorHandler(FTDI.SetBitMode(0xFF, FTDI.FT_BIT_MODES.FT_BIT_MODE_SYNC_BITBANG));
                }
                catch (Exception E)
                {
                    Log.Exception("Could set the bitmode to bitbang for FTDI chip with serial number {0}.".Build(SerialNumber), E);
                    Disconnect();
                    FTDI = null;
                    return;
                }

                Log.Write("Connection to FTDI chip {0} established.".Build(SerialNumber));
            }
        }