Exemple #1
0
        public static void Main(string[] args)
        {
            System.Console.WriteLine("Usage: i2c bus device register [end-register]");
            System.Console.WriteLine("Example: i2c 0x01 0x2c 0x90 0x97");

            byte bus;
            byte device;
            byte startRegister;
            byte?endRegister = null;

            if (!(args.Length >= 1 && TryParseByte(args[0], out bus)))
            {
                System.Console.WriteLine("Missing bus argument");
                return;
            }
            if (!(args.Length >= 2 && TryParseByte(args[1], out device)))
            {
                System.Console.WriteLine("Missing device argument");
                return;
            }
            if (!(args.Length >= 3 && TryParseByte(args[2], out startRegister)))
            {
                System.Console.WriteLine("Missing register argument");
                return;
            }
            byte end;

            if (args.Length >= 4 && TryParseByte(args[3], out end))
            {
                if (end > startRegister)
                {
                    endRegister = end;
                }
                else
                {
                    System.Console.WriteLine("End register must be after the start register");
                    return;
                }
            }

            byte[] bytes;
            using (var i2cBus = new I2CBus(bus))
            {
                var i2cDevice = new I2CDevice(i2cBus, device);

                if (endRegister.HasValue)
                {
                    bytes = new byte[endRegister.Value - startRegister + 1];
                    //could use the sync method here, but I want to test out the async
                    var task = i2cDevice.ReadBytesAsync(startRegister, (byte)(endRegister.Value - startRegister + 1), bytes);
                    task.Wait();
                }
                else
                {
                    bytes    = new byte[1];
                    bytes[0] = i2cDevice.ReadByte(startRegister);
                }
            }

            for (int b = startRegister; b == startRegister || (endRegister.HasValue && b <= endRegister.Value); b++)
            {
                System.Console.WriteLine("{0:X}:{1:X}", b, bytes[b - startRegister]);
            }
        }