Ejemplo n.º 1
0
        public static void Main(string[] args)
        {
            Console.WriteLine(FtdiInventory.DeviceListInfo());

            var ftDeviceInfo = FtdiInventory.GetDevices();

            if (ftDeviceInfo.Length == 0)
            {
                Console.WriteLine("No Device");
                Console.ReadKey();
                return;
            }
            var firstSerial = ftDeviceInfo.FirstOrDefault().SerialNumber;

            MpsseDevice.MpsseParams mpsseParams = new MpsseDevice.MpsseParams
            {
                Latency      = 16,
                ReadTimeout  = 50,
                WriteTimeout = 50,
                clockDevisor = 49 * 6
            };

            using (MpsseDevice mpsse = new FT232H(firstSerial, mpsseParams))
            {
                Console.WriteLine("MPSSE init success with clock frequency {0:0.0} Hz", mpsse.ClockFrequency);

                var i2c  = new I2cBus(mpsse);
                var gpio = new Gpio(mpsse);

                Selector(i2c, gpio);
            }
        }
Ejemplo n.º 2
0
        public static string GetFirstSerial()
        {
            var ftDeviceInfo = FtdiInventory.GetDevices();

            Assert.IsNotNull(ftDeviceInfo, "No Devices found");
            var firstDevice = ftDeviceInfo?.FirstOrDefault()?.SerialNumber;

            Assert.IsNotNull(firstDevice, "No Valid Serial Number");
            return(firstDevice);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            try
            {
                //read and check options
                Options opts = new Options(args);

                if (!opts.IsValid() && !opts.HelpOption)
                {
                    Console.WriteLine("Bad option. Run with -? option to see help.");
                    return;
                }

                //device list output
                if (opts.DevListOutput)
                {
                    Console.WriteLine(FtdiInventory.DeviceListInfo());
                }

                //device open and i/o
                if (opts.DevSerialNumber != null)
                {
                    MpsseDevice.MpsseParams mpsseParams = new MpsseDevice.MpsseParams();

                    //output all mpsse data transfer in verbose mode
                    mpsseParams.clockDevisor = opts.MpsseDevisor;
                    if (opts.Verbose)
                    {
                        mpsseParams.DataReadEvent  = rawInputToScreen;
                        mpsseParams.DataWriteEvent = rawOutputToScreen;
                    }

                    using (MpsseDevice mpsse = new FT2232D(opts.DevSerialNumber, mpsseParams))
                    {
                        Console.WriteLine("MPSSE init success with clock frequency {0:0.0} Hz", mpsse.ClockFrequency);

                        SpiDevice spi = new SpiDevice(mpsse,
                                                      new SpiDevice.SpiParams
                        {
                            Mode             = (opts.SpiMode == 0) ? SpiDevice.SpiMode.Mode0 : SpiDevice.SpiMode.Mode2,
                            ChipSelect       = opts.ChipSelectBit,
                            ChipSelectPolicy = SpiDevice.CsPolicy.CsActiveLow
                        });

                        spi.LoopbackEnabled = opts.Loopback;
                        Console.WriteLine("SPI init success");

                        //input data read
                        byte[] transmitData = new byte[0];
                        if (opts.BinaryInputFile != null)
                        {
                            transmitData = readBinaryFile(opts.BinaryInputFile);
                        }
                        else if (opts.TextInputFile != null)
                        {
                            transmitData = readTextFile(opts.TextInputFile);
                        }

                        if (opts.ScreenInput)
                        {
                            writeToScreen("output:     ", transmitData);
                        }

                        //data transfer
                        byte[] result = spi.readWrite(transmitData);

                        //output data write
                        if (opts.ScreenOutput)
                        {
                            writeToScreen("input:      ", result);
                        }
                        if (opts.TextOutputFile != null)
                        {
                            writeToText(opts.TextOutputFile, result);
                        }
                        if (opts.BinaryOutputFile != null)
                        {
                            writeToBinary(opts.BinaryOutputFile, result);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }