Exemplo n.º 1
0
        public void SendConfigurations(ConfigurationData confData)
        {
            AutoResetEvent are             = new AutoResetEvent(false);
            Thread         newConfigThread = new Thread(() =>
            {
                ConfigurationData temp = new ConfigurationData();
                while (!temp.Equals(confData)) // Sends configurations until the configurations on the robot is equal to the desired
                {
                    WriteConfigurationBytes(confData);
                    Thread.Sleep(10); // 100 hZ frequency
                    temp = GetConfigurations();
                }
                are.Set();
            });

            newConfigThread.IsBackground = true;
            newConfigThread.Start();

            Thread waitThread = new Thread(() =>
            {
                bool configSent = are.WaitOne(_timeout, false);
                if (configSent)
                {
                    Data.Instance.ReceiveConfiguration(confData);
                }
            });

            waitThread.IsBackground = true;
            waitThread.Start();
        }
Exemplo n.º 2
0
        /// <summary>Sends the configurations to the modbus server to change the configurations of the robot.</summary>
        /// <param name="configData">Object containing the desired configurations.</param>
        public void SetConfigurations(ConfigurationData configData)
        {
            AutoResetEvent are             = new AutoResetEvent(false);
            Thread         newConfigThread = new Thread(() =>
            {
                ConfigurationData temp = new ConfigurationData();
                while (!temp.Equals(configData))                                    // Sends configurations until the configurations on the robot is equal to the desired
                {
                    modBus.SendConfigurations(configData);                          // Sends the desired configuration
                    Thread.Sleep(10);                                               // Sleep thread to optain a frequency on 100Hz
                    temp = modBus.GetConfigurations();                              // Gets the current configurations on the robot
                }
                are.Set();
            });

            newConfigThread.IsBackground = true;
            newConfigThread.Start();

            Thread waitThread = new Thread(() =>
            {
                if (OnConfigCompleted != null)
                {
                    OnConfigCompleted(are.WaitOne(timeout, false));                 // Event is thrown when the AutoResetEvent is set or when timeout has run out.
                }
            });

            waitThread.IsBackground = true;
            waitThread.Start();
        }