Beispiel #1
0
        public PhysicalActuator(IConfig config)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            _hitTime       = config.Read <int>("Robot.Actuator.Hit.Time");
            _hitDelayAfter = config.Read <int>("Robot.Actuator.Hit.DelayAfter");

            var host      = config.Read <string>("Robot.Actuator.Host");
            var port      = config.Read <int>("Robot.Actuator.Port");
            var uidMaster = config.Read <string>("Robot.Actuator.UidMaster");
            var uidRelay1 = config.Read <string>("Robot.Actuator.UidRelay1");
            var uidRelay2 = config.Read <string>("Robot.Actuator.UidRelay2");

            _ipcon = new IPConnection(); // Create IP connection
            _ipcon.Connect(host, port);  // Connect to brickd. Don't use device before ipcon is connected

            var master = new BrickMaster(uidMaster, _ipcon);

            _or1 = new BrickletIndustrialQuadRelay(uidRelay1, _ipcon);
            _or2 = new BrickletIndustrialQuadRelay(uidRelay2, _ipcon);

            // Get current stack voltage (unit is mV)
            int stackVoltage = master.GetStackVoltage();

            _logger.Info($"Stack Voltage: {stackVoltage / 1000.0:F} V");

            // Get current stack current (unit is mA)
            int stackCurrent = master.GetStackCurrent();

            _logger.Info($"Stack Current: {stackCurrent / 1000.0:F} A");
        }
Beispiel #2
0
    private static string UID  = "XYZ";    // Change XYZ to the UID of your Industrial Quad Relay Bricklet

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

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

        // Turn relays alternating on/off 10 times with 100 ms delay
        for (int i = 0; i < 10; i++)
        {
            Thread.Sleep(100);
            iqr.SetValue(1 << 0);
            Thread.Sleep(100);
            iqr.SetValue(1 << 1);
            Thread.Sleep(100);
            iqr.SetValue(1 << 2);
            Thread.Sleep(100);
            iqr.SetValue(1 << 3);
        }

        Console.WriteLine("Press enter to exit");
        Console.ReadLine();
        ipcon.Disconnect();
    }
    private static int VALUE_B_OFF = (1 << 1) | (1 << 3); // Pin 1 and 3 high

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

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

        iqr.SetMonoflop(VALUE_A_ON, 15, 1500);         // Set pins to high for 1.5 seconds

        ipcon.Disconnect();
    }
Beispiel #4
0
 private void EnumerateCB(IPConnection sender, string UID, string connectedUID, char position,
                          short[] hardwareVersion, short[] firmwareVersion,
                          int deviceIdentifier, short enumerationType)
 {
     if (enumerationType == IPConnection.ENUMERATION_TYPE_CONNECTED ||
         enumerationType == IPConnection.ENUMERATION_TYPE_AVAILABLE)
     {
         if (deviceIdentifier == BrickletIndustrialQuadRelay.DEVICE_IDENTIFIER)
         {
             try
             {
                 brickletIndustrialQuadRelay = new BrickletIndustrialQuadRelay(UID, ipcon);
                 Log("Industrial Quad Relay initialized");
             }
             catch (TinkerforgeException e)
             {
                 Log("Industrial Quad Relay init failed: " + e.Message);
                 brickletIndustrialQuadRelay = null;
             }
         }
     }
 }
Beispiel #5
0
        private void ConnectWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            string[] argument = e.Argument as string[];

            ipcon = new IPConnection();

            try
            {
                relay = new BrickletIndustrialQuadRelay(argument[2], ipcon);
            }
            catch (ArgumentOutOfRangeException)
            {
                e.Result = ConnectResult.NO_DEVICE;
                return;
            }

            try
            {
                ipcon.Connect(argument[0], Convert.ToInt32(argument[1]));
            }
            catch (System.IO.IOException)
            {
                e.Result = ConnectResult.NO_CONNECTION;
                return;
            }
            catch (ArgumentOutOfRangeException)
            {
                e.Result = ConnectResult.NO_CONNECTION;
                return;
            }

            try
            {
                string uid;
                string connectedUid;
                char   position;
                byte[] hardwareVersion;
                byte[] firmwareVersion;
                int    deviceIdentifier;

                relay.GetIdentity(out uid, out connectedUid, out position,
                                  out hardwareVersion, out firmwareVersion, out deviceIdentifier);

                if (deviceIdentifier != BrickletIndustrialQuadRelay.DEVICE_IDENTIFIER)
                {
                    ipcon.Disconnect();
                    e.Result = ConnectResult.NO_DEVICE;
                    return;
                }
            }
            catch (TinkerforgeException)
            {
                try
                {
                    ipcon.Disconnect();
                }
                catch (NotConnectedException)
                {
                }

                e.Result = ConnectResult.NO_DEVICE;
                return;
            }

            e.Result = ConnectResult.SUCCESS;
        }
Beispiel #6
0
        public void TestConnection()
        {
            IPConnection ipcon              = new IPConnection();                 // Create IP connection
            BrickMaster  master             = new BrickMaster(_uidMaster, ipcon); // Create device object
            BrickletIndustrialQuadRelay or1 = new BrickletIndustrialQuadRelay(_uidRelay1, ipcon);
            BrickletIndustrialQuadRelay or2 = new BrickletIndustrialQuadRelay(_uidRelay2, ipcon);
            BrickletTemperatureIR       tir = new BrickletTemperatureIR(_uidTemp, ipcon);

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

            // Get current stack voltage (unit is mV)
            int stackVoltage = master.GetStackVoltage();

            Console.WriteLine("Stack Voltage: " + stackVoltage / 1000.0 + " V");

            // Get current stack current (unit is mA)
            int stackCurrent = master.GetStackCurrent();

            Console.WriteLine("Stack Current: " + stackCurrent / 1000.0 + " A");

            short chipTemp = tir.GetAmbientTemperature();

            Console.WriteLine("Chibi master address: " + chipTemp / 10 + "°/C");

            int delay = 50;

            while (true)
            {
                ConsoleKeyInfo insertKey = Console.ReadKey();
                int            result    = insertKey.KeyChar;
                // UP
                if (result.Equals(32))
                {
                    or1.SetValue(1 << 0);
                    Thread.Sleep(delay);
                    or1.SetValue(1 << 0);
                    Thread.Sleep(delay);
                }
                // DOWN
                if (result.Equals(32))
                {
                    or1.SetValue(1 << 0);
                    Thread.Sleep(delay);
                    or1.SetValue(1 << 0);
                    Thread.Sleep(delay);
                }
                // LEFT
                if (result.Equals(97))
                {
                    or1.SetValue(1 << 0);
                    Thread.Sleep(delay);
                    or1.SetValue(1 << 0);
                    Thread.Sleep(delay);
                }
                // RIGHT
                if (result.Equals(32))
                {
                    or1.SetValue(1 << 0);
                    Thread.Sleep(delay);
                    or1.SetValue(1 << 0);
                    Thread.Sleep(delay);
                }
                // START
                if (result.Equals(115))
                {
                    or2.SetValue(1);
                    Thread.Sleep(delay);
                    or2.SetValue(0);
                    Thread.Sleep(delay);
                }
                // SELECT
                if (result.Equals(83))
                {
                    or2.SetValue(4);
                    Thread.Sleep(delay);
                    or2.SetValue(0);
                    Thread.Sleep(delay);
                }
                // A
                if (result.Equals(97))
                {
                    or2.SetValue(2);
                    Thread.Sleep(delay);
                    or2.SetValue(0);
                    Thread.Sleep(delay);
                }
                // B
                if (result.Equals(98))
                {
                    or2.SetValue(8);
                    Thread.Sleep(delay);
                    or2.SetValue(0);
                    Thread.Sleep(delay);
                }
                Console.WriteLine(result);
                // ESC for EXIT
                if (result.Equals(27))
                {
                    break;
                }
            }
            ipcon.Disconnect();
        }