Exemple #1
0
        /// <summary>
        /// Get the signal
        /// </summary>
        /// <param name="name"> The name of the signal. </param>
        /// <returns> The ABB Robotics signal. </returns>
        private GH_Signal GetSignal(string name)
        {
            // Check if the signal name is valid. Only check if the name is valid if the controller or the signal name changed.
            if (name != _currentSignalName || _controller.SystemId != _currentGuid)
            {
                if (!ValidSignal(name))
                {
                    AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "The Signal " + name + " does not exist in the current Controller");
                    return(null);
                }

                // Update the current values
                _currentSignalName = (string)name.Clone();
                _currentGuid       = new Guid(_controller.SystemId.ToString());
            }

            // Get the signal from the defined controller
            DigitalSignal signal = _controller.IOSystem.GetSignal(name) as DigitalSignal;

            // Check for null return
            if (signal != null)
            {
                return(new GH_Signal(signal));
            }

            // If the signal is null: return nothing and raise a message.
            else
            {
                AddRuntimeMessage(GH_RuntimeMessageLevel.Blank, "The picked signal does not exist!");
                return(null);
            }
        }
        private static DigitalSignal Connect(DigitalSignalProvider provider, DigitalSignalConsumer consumer)
        {
            if (consumer.IsConnected && provider.IsConnected)
            {
                if (consumer.DigitalSignal != provider.DigitalSignal)
                {
                    throw new InvalidOperationException("Both Consumer and Provider are already connected to different signals.");
                }

                return(consumer.DigitalSignal);
            }

            DigitalSignal signal = null;

            if (consumer.IsConnected)
            {
                signal = consumer.DigitalSignal;
                provider.ConnectTo(signal);
            }
            else if (provider.IsConnected)
            {
                signal = provider.DigitalSignal;
                consumer.ConnectTo(signal);
            }

            return(signal);
        }
        public void Add(DigitalSignal digitalSignal,
                        bool inclProviders = true, bool inclConsumers = true)
        {
            if (!Visit(digitalSignal))
            {
                return;
            }

            var node = AddNode <DigitalSignal>(digitalSignal.Name);

            SetNodeMap(digitalSignal, node);

            if (DisplayValues)
            {
                node.Description = digitalSignal.Level.ToString();
            }

            if (inclProviders)
            {
                foreach (var p in digitalSignal.Providers)
                {
                    Add(p);
                }
            }

            if (inclConsumers)
            {
                foreach (var c in digitalSignal.Consumers)
                {
                    Add(c);
                }
            }
        }
Exemple #4
0
        public Task PlaySignalAsync(DigitalSignal Signal, Device device, IProgress <double> Progress = null, CancellationToken Cancel = default)
        {
            using var output = new WaveOut
                  {
                      DeviceNumber = device.Index
                  };

            var tcs = new TaskCompletionSource <object>();

            output.PlaybackStopped += (s, e) => tcs.SetResult(null);

            var provider = new BufferedWaveProvider(new WaveFormat(44100, 16, 1));

            var buffer = new byte[Signal.SamplesCount * 2];


            //provider.

            output.Init(provider);

            if (Cancel.CanBeCanceled)
            {
                Cancel.Register(() => output.Stop());
                Cancel.Register(() => tcs.TrySetCanceled());
            }

            output.Play();

            return(tcs.Task);
        }
Exemple #5
0
        //private void MenuOpen_Click(object sender, EventArgs e)
        //{
        //    OpenFileDialog dialog = new OpenFileDialog();
        //    dialog.Title = "Выберите файл сигнала";
        //    dialog.RestoreDirectory = true;
        //    dialog.Filter = "Text(*.txt)|*.txt";
        //    var result = dialog.ShowDialog();
        //    if (result == DialogResult.OK)
        //    {
        //        var file_name = dialog.FileName;
        //        var s = DigitalSignal.LoadFromFile(file_name);
        //        f_Signal = s;
        //        dtLabel.Text = string.Format("dt={0} seconds", s.dt.ToString());
        //        SignalList.Items.Clear();
        //        for (int i = 0; i < s.Length; i++)
        //        {
        //            SignalList.Items.Add(s[i]);
        //        }
        //    }
        //}

        private void ComputeButton_Click(object sender, EventArgs e)
        {
            if (f_Signal == null && f_Spectrum == null)
            {
                MessageBox.Show("No signal loaded", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (f_Signal != null)
            {
                f_Spectrum   = f_Signal.GetSpectrum();
                dfLabel.Text = string.Format("df={0} Hz", f_Spectrum.df.ToString());
                SpectrumList.Items.Clear();
                for (int i = 0; i < f_Spectrum.Length; i++)
                {
                    SpectrumList.Items.Add(f_Spectrum[i]);
                }
            }
            if (f_Spectrum != null)
            {
                f_Signal     = f_Spectrum.GetSignal();
                dtLabel.Text = string.Format("dt={0} s", f_Signal.dt.ToString());
                SignalList.Items.Clear();
                for (int i = 0; i < f_Signal.Length; i++)
                {
                    SignalList.Items.Add(f_Signal[i]);
                }
            }
        }
 public DigitalSignalActor(DigitalSignal signal)
 {
     sg = signal;
     Context.SetReceiveTimeout(TimeSpan.FromSeconds(30));
     Receive <ChannelDataContract>(message => HandleDataContract(message));
     Receive <ReceiveTimeout>(message => HandleTimeOut(message));
 }
Exemple #7
0
        public void Ctor_Name_NameIsSet()
        {
            var name = "Test";
            var uut  = new DigitalSignal(name);

            uut.Name.Should().Be(name);
        }
Exemple #8
0
        public DigitalSignalConsumer ConnectInput(DigitalSignal inputSignal, string name = null)
        {
            var consumer = AddInput(name);

            consumer.ConnectTo(inputSignal);

            return(consumer);
        }
Exemple #9
0
 private void CreateOutputSignals()
 {
     _pitchSinOutputSignal = CreatePitchSinOutputSignal();
     _pitchCosOutputSignal = CreatePitchCosOutputSignal();
     _rollSinOutputSignal  = CreateRollSinOutputSignal();
     _rollCosOutputSignal  = CreateRollCosOutputSignal();
     _offFlagOutputSignal  = CreateOFFFlagOutputSignal();
 }
Exemple #10
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // Warning that this component is OBSOLETE
            AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "This component is OBSOLETE and will be removed " +
                              "in the future. Remove this component from your canvas and replace it by picking the new component " +
                              "from the ribbon.");

            // Input variables
            GH_Controller controllerGoo = null;
            string        nameIO        = "";

            // Catch input data
            if (!DA.GetData(0, ref controllerGoo))
            {
                return;
            }
            if (!DA.GetData(1, ref nameIO))
            {
                AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "IOName: No Signal Selected");
                nameIO = "";
            }

            // Get controller and logon
            _controller = controllerGoo.Value;
            _controller.Logon(UserInfo.DefaultUser); //TODO: Make user login

            // Ouput variables
            GH_Signal signalGoo;
            bool      signalValue;

            // Check for null returns
            if (nameIO == null || nameIO == "")
            {
                signalGoo = PickSignal();
                CreatePanel(signalGoo.Value.Name.ToString());
            }
            else
            {
                signalGoo = GetSignal(nameIO);
            }

            // Declair Signal
            DigitalSignal signal = signalGoo.Value;

            // Convert Signal to a bool
            if (signal.Value == 1)
            {
                signalValue = true;
            }
            else
            {
                signalValue = false;
            }

            // Output
            DA.SetData(0, signalGoo);
            DA.SetData(1, signalValue);
        }
        private void ExecuteCountTest(int machineCycles, CycleNames toCycle, DigitalLevel toLevel)
        {
            var gen = new SignalGenerator();
            var ds  = new DigitalSignal("GenOut");

            ds.OnChanged += Output_OnChanged;
            gen.Output.ConnectTo(ds);

            gen.SquareWave(machineCycles, toCycle, toLevel);
        }
Exemple #12
0
        public void MultipleProviders_OneWrites_NoConflicts()
        {
            var provider1 = new DigitalSignalProvider();
            var provider2 = new DigitalSignalProvider();
            var signal    = new DigitalSignal();

            provider1.ConnectTo(signal);
            provider2.ConnectTo(signal);

            provider1.Write(DigitalLevel.High);
        }
 private void CreateDefaultSegments()
 {
     SegmentA  = new DigitalSignal();
     SegmentB  = new DigitalSignal();
     SegmentC  = new DigitalSignal();
     SegmentD  = new DigitalSignal();
     SegmentE  = new DigitalSignal();
     SegmentF  = new DigitalSignal();
     SegmentG  = new DigitalSignal();
     SegmentDP = new DigitalSignal();
 }
Exemple #14
0
        public void Connected_WriteHigh_LevelIsHigh()
        {
            var uut    = new DigitalSignalProvider();
            var signal = new DigitalSignal();

            uut.ConnectTo(signal);

            uut.Write(DigitalLevel.High);

            uut.Level.Should().Be(DigitalLevel.High);
            signal.Level.Should().Be(DigitalLevel.High);
        }
 private void AssignSegments(DigitalSignal segA, DigitalSignal segB, DigitalSignal segC, DigitalSignal segD,
                             DigitalSignal segE, DigitalSignal segF, DigitalSignal segG, DigitalSignal segDP)
 {
     SegmentA  = segA;
     SegmentB  = segB;
     SegmentC  = segC;
     SegmentD  = segD;
     SegmentE  = segE;
     SegmentF  = segF;
     SegmentG  = segG;
     SegmentDP = segDP;
 }
Exemple #16
0
 private void CreateInputSignals()
 {
     _pitchInputSignal = CreatePitchInputSignal();
     _rollInputSignal  = CreateRollInputSignal();
     _horizontalCommandBarInputSignal = CreateHorizontalCommandBarInputSignal();
     _verticalCommandBarInputSignal   = CreateVerticalCommandBarInputSignal();
     _rateOfTurnInputSignal           = CreateRateOfTurnInputSignal();
     _showCommandBarsInputSignal      = CreateShowCommandBarsInputSignal();
     _auxFlagInputSignal = CreateAuxFlagInputSignal();
     _gsFlagInputSignal  = CreateGSFlagInputSignal();
     _locFlagInputSignal = CreateLOCFlagInputSignal();
     _offFlagInputSignal = CreateOffFlagInputSignal();
 }
        public void Connect_WriteProvider_ConsumerSeesChanges()
        {
            var provider = new DigitalSignalProvider();
            var consumer = new DigitalSignalConsumer();
            var signal   = new DigitalSignal();

            provider.ConnectTo(signal);
            consumer.ConnectTo(signal);

            provider.Write(DigitalLevel.High);

            consumer.Level.Should().Be(DigitalLevel.High);
        }
Exemple #18
0
 private void CreateOutputSignals()
 {
     _pitchOutputSignal   = CreatePitchOutputSignal();
     _rollSinOutputSignal = CreateRollSinOutputSignal();
     _rollCosOutputSignal = CreateRollCosOutputSignal();
     _horizontalCommandBarOutputSignal = CreateHorizontalCommandBarOutputSignal();
     _verticalCommandBarOutputSignal   = CreateVerticalCommandBarOutputSignal();
     _rateOfTurnOutputSignal           = CreateRateOfTurnOutputSignal();
     _auxFlagOutputSignal = CreateAuxFlagOutputSignal();
     _gsFlagOutputSignal  = CreateGSFlagOutputSignal();
     _locFlagOutputSignal = CreateLOCFlagOutputSignal();
     _offFlagOutputSignal = CreateOFFFlagOutputSignal();
 }
 private void CreateOutputSignals()
 {
     _device0SinOutputSignal      = CreateSinCosOutputSignal(0, "SIN");
     _device0CosOutputSignal      = CreateSinCosOutputSignal(0, "COS");
     _device1SinOutputSignal      = CreateSinCosOutputSignal(1, "SIN");
     _device1CosOutputSignal      = CreateSinCosOutputSignal(1, "COS");
     _device2SinOutputSignal      = CreateSinCosOutputSignal(2, "SIN");
     _device2CosOutputSignal      = CreateSinCosOutputSignal(2, "COS");
     _device3SinOutputSignal      = CreateSinCosOutputSignal(3, "SIN");
     _device3CosOutputSignal      = CreateSinCosOutputSignal(3, "COS");
     _sadiOffFlagOutputSignal     = CreateSADIDigitalOutputSignal();
     _digitalOutput23OutputSignal = CreateDigitalOutput23Signal();
 }
Exemple #20
0
        public void Connected_WriteHigh_TriggersEvent()
        {
            var uut    = new DigitalSignalProvider();
            var signal = new DigitalSignal();

            uut.ConnectTo(signal);

            signal.MonitorEvents();
            uut.Write(DigitalLevel.High);

            signal.ShouldRaise("OnChanged");
            uut.Level.Should().Be(DigitalLevel.High);
            signal.Level.Should().Be(DigitalLevel.High);
        }
        public void Connect_WriteProvider_EventTriggered()
        {
            var provider = new DigitalSignalProvider();
            var consumer = new DigitalSignalConsumer();
            var signal   = new DigitalSignal();

            provider.ConnectTo(signal);
            consumer.ConnectTo(signal);
            consumer.MonitorEvents();

            provider.Write(DigitalLevel.High);

            consumer.ShouldRaise("OnChanged");
        }
        private void CreateOutputSignals()
        {
            _pitchOutputSignal = CreatePitchOutputSignal();
            _rollOutputSignal  = CreateRollOutputSignal();
            _horizontalCommandBarOutputSignal = CreateHorizontalCommandBarOutputSignal();
            _verticalCommandBarOutputSignal   = CreateVerticalCommandBarOutputSignal();
            _rateOfTurnOutputSignal           = CreateRateOfTurnOutputSignal();
            _auxFlagOutputSignal = CreateAuxFlagOutputSignal();
            _gsFlagOutputSignal  = CreateGSFlagOutputSignal();
            _locFlagOutputSignal = CreateLOCFlagOutputSignal();

            _pitchAndRollEnableOutputSignal             = CreatePitchAndRollEnableOutputSignal();
            _glideslopeIndicatorsPowerOnOffOutputSignal = CreateGlideslopeIndicatorsPowerOnOffOutputSignal();
            _rateOfTurnAndFlagsPowerOnOffOutputSignal   = CreateRateOfTurnAndFlagsPowerOnOffOutputSignal();
        }
Exemple #23
0
        public void MultipleProviders_OneWritesAtaTime_NoConflicts()
        {
            var provider1 = new DigitalSignalProvider();
            var provider2 = new DigitalSignalProvider();
            var signal    = new DigitalSignal();

            provider1.ConnectTo(signal);
            provider2.ConnectTo(signal);

            provider1.Write(DigitalLevel.High);
            provider1.Write(DigitalLevel.Floating);
            provider2.Write(DigitalLevel.Low);
            provider2.Write(DigitalLevel.Floating);
            provider1.Write(DigitalLevel.PosEdge);
        }
        public static DigitalSignal ConnectTo(this DigitalSignalConsumer consumer, DigitalSignalProvider provider, string signalName = null)
        {
            DigitalSignal signal = Connect(provider, consumer);

            if (signal == null)
            {
                if (signalName == null)
                {
                    signalName = consumer.Name;
                }
                signal = consumer.GetOrAddSignal(signalName);
                provider.ConnectTo(signal);
            }

            return(signal);
        }
        public static DigitalSignal GetOrAddSignal(this DigitalSignalConsumer consumer, string signalName = null)
        {
            DigitalSignal signal = null;

            if (!consumer.IsConnected)
            {
                signal = new DigitalSignal(signalName);
                consumer.ConnectTo(signal);
            }
            else
            {
                signal = consumer.DigitalSignal;
            }

            return(signal);
        }
 private void CreateInputSignals()
 {
     _pitchInputSignal = CreatePitchInputSignal();
     _rollInputSignal  = CreateRollInputSignal();
     _horizontalCommandBarInputSignal = CreateHorizontalCommandBarInputSignal();
     _verticalCommandBarInputSignal   = CreateVerticalCommandBarInputSignal();
     _rateOfTurnInputSignal           = CreateRateOfTurnInputSignal();
     _commandBarsVisibleInputSignal   = CreateCommandBarsVisibleInputSignal();
     _auxFlagInputSignal                        = CreateAuxFlagInputSignal();
     _gsFlagInputSignal                         = CreateGSFlagInputSignal();
     _locFlagInputSignal                        = CreateLOCFlagInputSignal();
     _offFlagInputSignal                        = CreateOFFFlagInputSignal();
     _pitchAndRollEnableInputSignal             = CreatePitchAndRollEnableInputSignal();
     _glideslopeIndicatorsPowerOnOffInputSignal = CreateGlideslopeIndicatorsPowerOnOffInputSignal();
     _rateOfTurnAndFlagsPowerOnOffInputSignal   = CreateRateOfTurnAndFlagsPowerOnOffInputSignal();
 }
        public static DigitalSignal GetOrAddSignal(this DigitalSignalProvider provider, string signalName = null)
        {
            DigitalSignal signal = null;

            if (!provider.IsConnected)
            {
                signal = new DigitalSignal(signalName);
                provider.ConnectTo(signal);
            }
            else
            {
                signal = provider.DigitalSignal;
            }

            return(signal);
        }
        public void Write_MultipleConsumers_AllSeeChangedLevel()
        {
            var provider  = new DigitalSignalProvider();
            var consumer1 = new DigitalSignalConsumer();
            var consumer2 = new DigitalSignalConsumer();
            var signal    = new DigitalSignal();

            provider.ConnectTo(signal);
            consumer1.ConnectTo(signal);
            consumer2.ConnectTo(signal);

            provider.Write(DigitalLevel.High);

            consumer1.Level.Should().Be(DigitalLevel.High);
            consumer2.Level.Should().Be(DigitalLevel.High);
        }
Exemple #29
0
        private DigitalSignal CreateOFFFlagOutputSignal()
        {
            var thisSignal = new DigitalSignal
            {
                Category           = "Outputs",
                CollectionName     = "Digital Outputs",
                FriendlyName       = "OFF Flag Hidden (0=Visible; 1=Hidden)",
                Id                 = "101084_OFF_Flag_To_Instrument",
                Index              = 0,
                Source             = this,
                SourceFriendlyName = FriendlyName,
                SourceAddress      = null,
                State              = false
            };

            return(thisSignal);
        }
Exemple #30
0
        private DigitalSignal CreateOFFFlagInputSignal()
        {
            var thisSignal = new DigitalSignal
            {
                Category           = "Inputs",
                CollectionName     = "Digital Inputs",
                FriendlyName       = "OFF Flag Visible (0=Hidden; 1=Visible)",
                Id                 = "101084_OFF_Flag_From_Sim",
                Index              = 0,
                Source             = this,
                SourceFriendlyName = FriendlyName,
                SourceAddress      = null,
                State              = false
            };

            return(thisSignal);
        }