diff --git a/Signal Generator/AddSignalWindow.xaml b/Signal Generator/AddSignalWindow.xaml
index 221e9ed..1deb356 100644
--- a/Signal Generator/AddSignalWindow.xaml
+++ b/Signal Generator/AddSignalWindow.xaml
@@ -18,11 +18,13 @@
Тип сигнала:
-
-
+
+
-
-
+
+
diff --git a/Signal Generator/AddSignalWindow.xaml.cs b/Signal Generator/AddSignalWindow.xaml.cs
index d89e66d..1f02cde 100644
--- a/Signal Generator/AddSignalWindow.xaml.cs
+++ b/Signal Generator/AddSignalWindow.xaml.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -19,9 +20,19 @@ namespace Signal_Generator
///
public partial class AddSignalWindow : Window
{
+ ObservableCollection signalProps = new ObservableCollection();
public AddSignalWindow()
{
InitializeComponent();
+ signalProps_DataGrid.ItemsSource = signalProps;
+ }
+
+ private void signalType_ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ signalProps.Clear();
+ var dict = ((IAnalogSignal)signalType_ComboBox.SelectedItem).paramsCollection as Collection;
+ foreach (Parameter p in dict)
+ signalProps.Add(p);
}
}
}
diff --git a/Signal Generator/AnalogSignalMethods.cs b/Signal Generator/AnalogSignalMethods.cs
new file mode 100644
index 0000000..6449121
--- /dev/null
+++ b/Signal Generator/AnalogSignalMethods.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Signal_Generator
+{
+ class AnalogSignalMethods
+ {
+ internal string paramsToString(Collection paramsCollection)
+ {
+ string result = "";
+ foreach (Parameter p in paramsCollection)
+ result += " / " + p.name + " " + p.value;
+ return result;
+ }
+ }
+}
diff --git a/Signal Generator/FmSignal.cs b/Signal Generator/FmSignal.cs
index c32dd4c..de3265a 100644
--- a/Signal Generator/FmSignal.cs
+++ b/Signal Generator/FmSignal.cs
@@ -1,45 +1,38 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Signal_Generator
{
- class FmSignal : IAnalogSignal
+ class FmSignal : AnalogSignalMethods, IAnalogSignal
{
- public Dictionary paramsDict { get; set; }
+ public Collection paramsCollection { get; set; }
public string typeToString
{
- get
- {
- return "FM сигнал";
- }
+ get { return "FM сигнал"; }
}
- public string paramsToString
+ public new string paramsToString
{
- get
- {
- string result = "";
- foreach (KeyValuePair pair in paramsDict)
- result += " / " + pair.Key + " " + pair.Value;
- return result;
- }
+ get { return paramsToString(paramsCollection); }
}
public FmSignal(double ampl, double freq, double ampl2)
{
- paramsDict = new Dictionary();
- paramsDict.Add("Амплитуда несущей", ampl);
- paramsDict.Add("Частота несущей", freq);
- paramsDict.Add("Амплитуда", ampl);
+ paramsCollection = new Collection();
+ paramsCollection.Add(new Parameter("Амплитуда несущей", ampl));
+ paramsCollection.Add(new Parameter("Частота несущей", freq));
+ paramsCollection.Add(new Parameter("Амплитуда", ampl2));
}
public double currentAmplitude(double t)
{
- return paramsDict.ElementAt(0).Value * Math.Sin(2 * Math.PI * paramsDict.ElementAt(1).Value * t + paramsDict.ElementAt(1).Value * Math.Sin(t));
+ var c = paramsCollection.ToArray();
+ return c[0].value * Math.Sin(2 * Math.PI * c[1].value* t + c[2].value * Math.Sin(t));
}
}
}
diff --git a/Signal Generator/IAnalogSignal.cs b/Signal Generator/IAnalogSignal.cs
index ee276ea..23ac336 100644
--- a/Signal Generator/IAnalogSignal.cs
+++ b/Signal Generator/IAnalogSignal.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -11,6 +12,6 @@ namespace Signal_Generator
string typeToString { get; }
string paramsToString { get; }
double currentAmplitude(double t);
- Dictionary paramsDict { get; set; }
+ Collection paramsCollection { get; set; }
}
}
diff --git a/Signal Generator/MainWindow.xaml.cs b/Signal Generator/MainWindow.xaml.cs
index 7aaadac..efbf449 100644
--- a/Signal Generator/MainWindow.xaml.cs
+++ b/Signal Generator/MainWindow.xaml.cs
@@ -24,10 +24,16 @@ namespace Signal_Generator
AddSignalWindow addSignalWindow_Instance = new AddSignalWindow();
TaskWindow taskWindow_Instance = new TaskWindow();
ObservableCollection s;
+ ObservableCollection typesOfSignal = new ObservableCollection();
public MainWindow()
{
InitializeComponent();
+
+ typesOfSignal.Add(new SinusoidalSignal(0, 0));
+ typesOfSignal.Add(new FmSignal(0, 0, 0));
+ addSignalWindow_Instance.signalType_ComboBox.ItemsSource = typesOfSignal;
+
s = new ObservableCollection();
signals_ListBox.Items.Clear();
signals_ListBox.ItemsSource = s;
@@ -42,7 +48,6 @@ namespace Signal_Generator
{
SinusoidalSignal s1 = new SinusoidalSignal(1, 50);
s.Add(s1);
- signals_ListBox.UpdateLayout();
}
diff --git a/Signal Generator/MultiSignal.cs b/Signal Generator/MultiSignal.cs
index 3433d55..ebeef22 100644
--- a/Signal Generator/MultiSignal.cs
+++ b/Signal Generator/MultiSignal.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -16,7 +17,9 @@ namespace Signal_Generator
string IAnalogSignal.paramsToString => throw new NotImplementedException();
- Dictionary IAnalogSignal.paramsDict { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
+ string IAnalogSignal.typeToString => throw new NotImplementedException();
+
+ Collection IAnalogSignal.paramsCollection { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
public MultiSignal()
{
@@ -42,5 +45,10 @@ namespace Signal_Generator
}
return summaryAmplitude;
}
+
+ double IAnalogSignal.currentAmplitude(double t)
+ {
+ throw new NotImplementedException();
+ }
}
}
diff --git a/Signal Generator/Parameter.cs b/Signal Generator/Parameter.cs
new file mode 100644
index 0000000..90abca8
--- /dev/null
+++ b/Signal Generator/Parameter.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Signal_Generator
+{
+ class Parameter
+ {
+ public string name { get; set; }
+ public double value { get; set; }
+
+ public Parameter (string name, double value)
+ {
+ this.name = name;
+ this.value = value;
+ }
+ }
+}
diff --git a/Signal Generator/Signal Generator.csproj b/Signal Generator/Signal Generator.csproj
index c6fd0f9..6d778f8 100644
--- a/Signal Generator/Signal Generator.csproj
+++ b/Signal Generator/Signal Generator.csproj
@@ -58,8 +58,10 @@
AddSignalWindow.xaml
+
+
TaskWindow.xaml
diff --git a/Signal Generator/SinusoidalSignal.cs b/Signal Generator/SinusoidalSignal.cs
index a9c97ff..992bfd4 100644
--- a/Signal Generator/SinusoidalSignal.cs
+++ b/Signal Generator/SinusoidalSignal.cs
@@ -1,50 +1,38 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Signal_Generator
{
- class SinusoidalSignal : IAnalogSignal
+ class SinusoidalSignal : AnalogSignalMethods, IAnalogSignal
{
public string typeToString
{
- get
- {
- return "SIN сигнал";
- }
+ get { return "SIN сигнал"; }
}
- public string paramsToString
+ public new string paramsToString
{
- get
- {
- string result = "";
- foreach (KeyValuePair pair in paramsDict)
- result += " / " + pair.Key + " " + pair.Value;
- return result;
- }
+ get { return paramsToString(paramsCollection); }
}
- public Dictionary paramsDict { get; set; }
-
- public override string ToString()
- {
- return "SIN signal";
- }
+ public Collection paramsCollection { get; set; }
public SinusoidalSignal(double ampl, double freq, double phase = 0)
{
- paramsDict = new Dictionary();
- paramsDict.Add("Амплитуда", ampl);
- paramsDict.Add("Частота", freq);
- paramsDict.Add("Фаза", phase);
+ paramsCollection = new Collection();
+ paramsCollection.Add(new Parameter("Амплитуда", ampl));
+ paramsCollection.Add(new Parameter("Частота", freq));
+ paramsCollection.Add(new Parameter("Фаза", phase));
}
public double currentAmplitude(double t)
{
- return paramsDict.ElementAt(0).Value * Math.Sin(2 * Math.PI * paramsDict.ElementAt(1).Value * t + paramsDict.ElementAt(2).Value);
+ var c = paramsCollection.ToArray();
+ return c[0].value * Math.Sin(2 * Math.PI * c[1].value * t + c[2].value);
}
}
}