private static string UID = "XXYYZZ"; // Change XXYYZZ to the UID of your Stepper Brick

    #endregion Fields

    #region Methods

    static void Main()
    {
        IPConnection ipcon = new IPConnection(); // Create IP connection
        BrickStepper stepper = new BrickStepper(UID, ipcon); // Create device object

        ipcon.Connect(HOST, PORT); // Connect to brickd
        // Don't use device before ipcon is connected

        stepper.SetMotorCurrent(800); // 800mA
        stepper.SetStepMode(8); // 1/8 step mode
        stepper.SetMaxVelocity(2000); // Velocity 2000 steps/s

        // Slow acceleration (500 steps/s^2),
        // Fast deacceleration (5000 steps/s^2)
        stepper.SetSpeedRamping(500, 5000);

        stepper.Enable(); // Enable motor power
        stepper.SetSteps(60000); // Drive 60000 steps forward

        Console.WriteLine("Press enter to exit");
        Console.ReadLine();
        stepper.Disable();
        ipcon.Disconnect();
    }
    // Use position reached callback to program random movement
    static void PositionReachedCB(BrickStepper sender, int position)
    {
        int steps;
        if(random.Next(0, 2) == 0)
        {
            steps = random.Next(1000, 5001); // steps (forward)
            Console.WriteLine("Driving forward: " + steps + " steps");
        }
        else
        {
            steps = random.Next(-5000, -999); // steps (backward)
            Console.WriteLine("Driving backward: " + steps + " steps");
        }

        int vel = random.Next(200, 2001); // steps/s
        int acc = random.Next(100, 1001); // steps/s^2
        int dec = random.Next(100, 1001); // steps/s^2
        Console.WriteLine("Configuration (vel, acc, dec): (" +
                          vel + ", " + acc + ", " + dec + ")");

        sender.SetSpeedRamping(acc, dec);
        sender.SetMaxVelocity(vel);
        sender.SetSteps(steps);
    }