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)); } }