/// <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); } } }
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); }
//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)); }
public void Ctor_Name_NameIsSet() { var name = "Test"; var uut = new DigitalSignal(name); uut.Name.Should().Be(name); }
public DigitalSignalConsumer ConnectInput(DigitalSignal inputSignal, string name = null) { var consumer = AddInput(name); consumer.ConnectTo(inputSignal); return(consumer); }
private void CreateOutputSignals() { _pitchSinOutputSignal = CreatePitchSinOutputSignal(); _pitchCosOutputSignal = CreatePitchCosOutputSignal(); _rollSinOutputSignal = CreateRollSinOutputSignal(); _rollCosOutputSignal = CreateRollCosOutputSignal(); _offFlagOutputSignal = CreateOFFFlagOutputSignal(); }
/// <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); }
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(); }
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; }
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); }
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(); }
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(); }
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); }
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); }
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); }