예제 #1
0
        static void cmd_read(SPIFDriver drv, string cmd)
        {
            string[] parms = cmd.Split(' ');
            int      len   = 0;

            if (parms.Count() == 1)
            {
                Console.Write("Number of bytes to read: ");
                try
                {
                    len = Int32.Parse(Console.ReadLine());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return;
                }
            }
            else
            {
                try
                {
                    len = Int32.Parse(parms[1]);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.Write("The number bytes: ");
                    try
                    {
                        len = Int32.Parse(Console.ReadLine());
                    }
                    catch (Exception ex2)
                    {
                        Console.WriteLine(ex2.Message);
                        return;
                    }
                }
            }
            byte[] result  = new byte[len + 1];
            int    numread = drv.Read(ref result, len);

            Console.WriteLine("Number of bytes readed {0}", numread);
            for (int i = 0; i < numread; i++)
            {
                if (i == numread - 1)
                {
                    Console.Write("{0:X}", result[i]);
                }
                else
                {
                    Console.Write("{0:X},", result[i]);
                }
            }
            Console.WriteLine();
        }
예제 #2
0
        static void cmd_write(SPIFDriver drv, string cmd)
        {
            string[] parms = cmd.Split(' ');
            int      len   = 0;

            if (parms.Count() == 1)
            {
                Console.Write("The number bytes: ");
                try
                {
                    len = Int32.Parse(Console.ReadLine());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return;
                }
            }
            else
            {
                try
                {
                    len = Int32.Parse(parms[1]);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.Write("The number bytes: ");
                    try
                    {
                        len = Int32.Parse(Console.ReadLine());
                    }
                    catch (Exception ex2)
                    {
                        Console.WriteLine(ex2.Message);
                        return;
                    }
                }
            }
            Console.WriteLine("Input the data to be sent in HEX, separate with \",\"");
            string valstr = Console.ReadLine();

            byte[] bts = strHexToByteArray(valstr);
            if (bts.Count() < len)
            {
                Console.WriteLine("Request no. of bytes {0} larger than real input bytes {1}", len, bts.Count());
                return;
            }
            drv.Write(bts, len);
        }
예제 #3
0
        static void cmd_readwrite(SPIFDriver drv, string cmd)
        {
            string[] parms = cmd.Split(' ');
            int      len   = 0;

            if (parms.Count() == 1)
            {
                Console.Write("The number bytes: ");
                try
                {
                    len = Int32.Parse(Console.ReadLine());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return;
                }
            }
            else
            {
                try
                {
                    len = Int32.Parse(parms[1]);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.Write("The number bytes: ");
                    try
                    {
                        len = Int32.Parse(Console.ReadLine());
                    }
                    catch (Exception ex2)
                    {
                        Console.WriteLine(ex2.Message);
                        return;
                    }
                }
            }
            Console.WriteLine("Input the data to be sent in HEX, separate with \",\"");
            string valstr = Console.ReadLine();

            byte[] bts = strHexToByteArray(valstr);
            if (bts.Count() < len)
            {
                Console.WriteLine("Request no. of bytes {0} larger than real input bytes {1}", len, bts.Count());
                return;
            }
            byte[] drecv = new byte[len];
            int    numtf = drv.ReadWrite(bts, ref drecv, len);

            Console.WriteLine("Number of bytes transfered {0}", numtf);
            for (int i = 0; i < numtf; i++)
            {
                if (i == numtf - 1)
                {
                    Console.Write("{0:X}", drecv[i]);
                }
                else
                {
                    Console.Write("{0:X},", drecv[i]);
                }
            }
            Console.WriteLine();
        }
예제 #4
0
        static void Main(string[] args)
        {
            SPIFDriver drv = new SPIFDriver();

            FTDeviceListInfoNode[] devs;
            uint devNum = drv.FTDevInit(out devs);
            int  devid  = 0;

            Console.WriteLine("Number of FTDI Device Found {0}", devNum);
            if (devNum < 0)
            {
                return;
            }
            if (devNum > 1)
            {
                Console.WriteLine("Select One device to Run:");
                for (int i = 0; i < devNum; i++)
                {
                    Console.WriteLine("{0}: ID={1:X} Name={2}", i, devs[i].ID, devs[i].Description);
                    Console.WriteLine("Device Info:");
                    Console.WriteLine("ID:{0:X}", devs[i].ID);
                    Console.WriteLine("LocId:{0:X}", devs[i].LocId);
                    Console.WriteLine("Description:{0}", devs[i].Description);
                    Console.WriteLine("Serial Number:{0}", devs[i].SerialNumber);
                }
                devid = Int32.Parse(Console.ReadLine());
            }
            Console.WriteLine("\n\n");
            Console.WriteLine("Device Info:");
            Console.WriteLine("ID:{0:X}", devs[devid].ID);
            Console.WriteLine("LocId:{0:X}", devs[devid].LocId);
            Console.WriteLine("Description:{0}", devs[devid].Description);
            Console.WriteLine("Serial Number:{0}", devs[devid].SerialNumber);
            drv.FT_MPSSE_Init(devid);
            Console.Write("Clock Divisor: ");
            ushort clk = UInt16.Parse(Console.ReadLine());

            drv.SPI_Init(clk);
            while (true)
            {
                Console.Write(">");
                string cmd = Console.ReadLine();
                cmd = cmd.Trim();
                if (cmd.StartsWith("write") || cmd == "w")
                {
                    cmd_write(drv, cmd);
                }
                else if (cmd.StartsWith("exit") || cmd == "q")
                {
                    break;
                }
                else if (cmd.StartsWith("read") || cmd == "r")
                {
                    cmd_read(drv, cmd);
                }
                else if (cmd.StartsWith("readwrite") || cmd == "rw")
                {
                    cmd_readwrite(drv, cmd);
                }
                else
                {
                    Console.WriteLine("Invalid command. Available Command: write (w),read (r), readwrite(rw)");
                }
            }
        }