Example #1
0
        /// <summary>
        /// Writes bytes to I2C device from provided buffer
        /// </summary>
        /// <param name="deviceAddress">7-bit address of the I2C device</param>
        /// <param name="flag">FT260_I2C_FLAG</param>
        /// <param name="buffer">byte array to write from</param>
        /// <param name="bytesToWrite">number of bytes to write from the buffer</param>
        /// <returns>StatusResults(FT260_STATUS, FT260_CONTROLLER_STATUS)</returns>
        public StatusResults Write(byte deviceAddress, FT260_I2C_FLAG flag, byte[] buffer, uint bytesToWrite)
        {
            var  ftStatus     = FT260_STATUS.FT260_OTHER_ERROR;
            uint bytesWritten = 0;
            var  status       = FT260_CONTROLLER_STATUS.idle;

            var size = (int)(Marshal.SizeOf(buffer[0]) * bytesToWrite);
            var pntr = Marshal.AllocHGlobal(size);

            try
            {
                Marshal.Copy(buffer, 0, pntr, (int)bytesToWrite);
            }
            finally
            {
                //Marshal.FreeHGlobal(pntr);
            }

            if (
                (ftStatus =
                     FT260_I2CMaster_Write(ft260Handle, deviceAddress, flag, pntr, bytesToWrite, out bytesWritten)) == FT260_STATUS.FT260_OK)
            {
                if (bytesWritten != bytesToWrite)
                {
                    ftStatus = FT260_STATUS.FT260_OTHER_ERROR;
                }
            }

            byte controllerStatus = 0;

            if (FT260_I2CMaster_GetStatus(ft260Handle, out controllerStatus) == FT260_STATUS.FT260_OK)
            {
                status = (FT260_CONTROLLER_STATUS)controllerStatus;
            }

            Marshal.FreeHGlobal(pntr);
            return(new StatusResults(ftStatus, status));
        }
Example #2
0
 public static extern FT260_STATUS FT260_I2CMaster_Write(IntPtr ft260Handle, byte deviceAddress, FT260_I2C_FLAG flag, IntPtr lpBuffer, uint dwBytesToWrite, out uint lpdwBytesWritten);
Example #3
0
 public static extern FT260_STATUS FTFT260_I2CMaster_Read(IntPtr ft260Handle, byte deviceAddress, FT260_I2C_FLAG flag, IntPtr lpBuffer, uint dwBytesToRead, out uint lpdwBytesReturned);