Пример #1
0
        public void MeasurementCombinationValueTest2()
        {
            var pin1 = new APin ();
            var pin2 = new APin ();
            var meCom1 = new MeasurementCombination ();

            pin1.Slope = 1;
            pin1.Offset = 0;
            pin1.MeanValuesCount = 2;
            pin1.Interval = 1;
            pin1.Number = 0;

            pin2.Slope = 1;
            pin2.Offset = 0;
            pin2.MeanValuesCount = 2;
            pin2.Interval = 1;
            pin2.Number = 1;

            pin1.Value = new DateTimeValue (1, DateTime.Now);
            pin1.Value = new DateTimeValue (1, DateTime.Now);
            pin2.Value = new DateTimeValue (1, DateTime.Now);
            pin2.Value = new DateTimeValue (1, DateTime.Now);

            meCom1.AddPin (pin1);
            meCom1.AddPin (pin2);

            meCom1.Operation = OperationCompiler.CompileOperation ("A0+A1", meCom1.Pins.Select (o => o.DisplayNumberShort).ToArray ());

            Assert.AreEqual (2, meCom1.Value.Value);
        }
Пример #2
0
        public void APinConstructorTests()
        {
            var pin = new APin ();

            Assert.AreEqual (Backend.PinType.ANALOG, pin.Type);
            Assert.AreEqual (Backend.PinMode.INPUT, pin.Mode);

            pin.PlotColor = new Gdk.Color (255, 0, 0);
            Assert.AreEqual (new Gdk.Color (255, 0, 0), pin.PlotColor);
        }
Пример #3
0
        public void APinEqualsTest()
        {
            var pin1 = new APin ();
            var pin2 = new APin ();

            Assert.AreEqual (true, pin1.Equals (pin2));

            pin1.PlotColor = new Color (0, 255, 0);
            pin2.PlotColor = new Color (0, 255, 255);

            Assert.AreEqual (false, pin1.Equals (pin2));
        }
Пример #4
0
        public void APinNewValueEventTest()
        {
            double val = -1;
            var pin = new APin ();
            pin.OnNewValue += (o, args) => val = args.Value;

            pin.Value = new DateTimeValue (42.0, DateTime.Now);
            Assert.AreEqual (42, val);

            pin.Value = new DateTimeValue (43, DateTime.Now);
            Assert.AreEqual (43, val);
        }
Пример #5
0
        public void APinCopyConstructorTest()
        {
            var pin = new APin ();
            pin.Name = "PinPinsen";
            pin.Interval = 3000;

            double value = 42;
            pin.Value = new DateTimeValue (value, DateTime.Now);

            var copypin = new APin (pin);
            Assert.AreEqual ("PinPinsen", copypin.Name);
            Assert.AreEqual (3000, copypin.Interval);
            Assert.AreEqual (value, copypin.Value.Value);
            Assert.AreEqual (1, copypin.Values.Count);
            Assert.AreEqual (pin.RAWValues, copypin.RAWValues);
        }
Пример #6
0
        public void MeasurementCombinationTests1()
        {
            var mecom = new MeasurementCombination ();
            var pin = new APin (){ Number = 0, RealNumber = 14, Interval = 1000, MeanValuesCount = 1 };

            Assert.AreEqual (0, mecom.Pins.Count);

            mecom.AddPin (pin);
            Assert.AreEqual (1, mecom.Pins.Count);
            Assert.AreEqual (false, mecom.AddPin (pin));

            var mecomcopy = new MeasurementCombination ();
            mecomcopy.AddPin (pin);

            Assert.AreEqual (mecom, mecomcopy);
        }
Пример #7
0
        public void SerializeAPin()
        {
            APin TestPin = new APin () {
                Number = 42,
                Name = "TestPin",
                PlotColor = GUIHelper.ColorHelper.GetRandomGdkColor (),
            };

            Formator.Serialize (MemStream, TestPin);

            MemStream.Seek (0, SeekOrigin.Begin);

            APin TestPinClone = (APin)Formator.Deserialize (MemStream);

            Assert.AreEqual (TestPin, TestPinClone);
        }
Пример #8
0
        public void APinNewValueEventTestAfterEdit()
        {
            double val = -1;
            var pin = new APin ();
            pin.OnNewValue += (o, args) => val = args.Value;

            pin.Value = new DateTimeValue (42, DateTime.Now);

            Assert.AreEqual (42, val);

            pin.Interval = 3000;
            pin.OnNewValue = null;
            pin.OnNewValue += (o, args) => val = args.Value * 2;
            pin.Value = new DateTimeValue (42, DateTime.Now);

            Assert.AreEqual (84, val);
        }
Пример #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PrototypeBackend.APin"/> class.
 /// </summary>
 /// <param name="copy">Copy.</param>
 public APin(APin copy) : base()
 {
     Name            = copy.Name;
     Number          = copy.Number;
     DigitalNumber   = copy.DigitalNumber;
     PlotColor       = copy.PlotColor;
     Slope           = copy.Slope;
     Offset          = copy.Offset;
     MeanValuesCount = copy.MeanValuesCount;
     Interval        = copy.Interval;
     Unit            = copy.Unit;
     Type            = Backend.PinType.ANALOG;
     Mode            = Backend.PinMode.INPUT;
     Values          = copy.Values;
     RAWValues       = copy.RAWValues;
     OnNewValue      = copy.OnNewValue;
     OnNewRAWValue   = copy.OnNewRAWValue;
 }
Пример #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PrototypeBackend.APin"/> class.
 /// </summary>
 /// <param name="copy">Copy.</param>
 public APin(APin copy)
     : base()
 {
     Name = copy.Name;
     Number = copy.Number;
     DigitalNumber = copy.DigitalNumber;
     PlotColor = copy.PlotColor;
     Slope = copy.Slope;
     Offset = copy.Offset;
     MeanValuesCount = copy.MeanValuesCount;
     Interval = copy.Interval;
     Unit = copy.Unit;
     Type = Backend.PinType.ANALOG;
     Mode = Backend.PinMode.INPUT;
     Values = copy.Values;
     RAWValues = copy.RAWValues;
     OnNewValue = copy.OnNewValue;
     OnNewRAWValue = copy.OnNewRAWValue;
 }
Пример #11
0
        public void SerializeBoardConfigTest2()
        {
            var conf = new BoardConfiguration ();
            conf.Board.AnalogReferenceVoltageType = "INTERNAL";
            conf.Board.AnalogReferenceVoltage = 4.24;

            var pin = new APin (){ Number = 42 };

            var MeCom = new MeasurementCombination ();
            MeCom.AddPin (pin);

            conf.AddPin (pin);
            conf.AddMeasurementCombination (MeCom);

            Formator.Serialize (MemStream, conf);
            MemStream.Seek (0, SeekOrigin.Begin);

            var confClone = (BoardConfiguration)Formator.Deserialize (MemStream);

            Assert.AreEqual (conf.Pins [0], confClone.Pins [0]);
            Assert.AreEqual (conf.MeasurementCombinations [0], confClone.MeasurementCombinations [0]);
            Assert.AreEqual (4.24, conf.Board.AnalogReferenceVoltage, 0.000000001);
            Assert.AreEqual (4.24, confClone.Board.AnalogReferenceVoltage, 0.000000001);
            Assert.AreEqual ("INTERNAL", conf.Board.AnalogReferenceVoltageType);
            Assert.AreEqual ("INTERNAL", confClone.Board.AnalogReferenceVoltageType);
            Assert.AreSame (conf.Pins [0], conf.MeasurementCombinations [0].Pins [0]);
            Assert.AreSame (confClone.Pins [0], confClone.MeasurementCombinations [0].Pins [0]);

            conf.Pins [0].Name = "Dulli";
            Assert.AreEqual (conf.Pins [0].Name, conf.MeasurementCombinations [0].Pins [0].Name);
            Assert.AreEqual (19, confClone.AvailableDigitalPins.Length);
            Assert.AreEqual (6, confClone.AvailableAnalogPins.Length);

            conf.ClearPins ();
            Assert.AreEqual (0, conf.Pins.Count);
            Assert.AreEqual (0, conf.MeasurementCombinations.Count);
        }
Пример #12
0
        /// <summary>
        /// Clones a pin.
        /// </summary>
        /// <returns><c>true</c>, if pin was cloned, <c>false</c> otherwise.</returns>
        /// <param name="pin">Pin.</param>
        public bool ClonePin(IPin pin)
        {
            Console.WriteLine("Cloning: " + pin);
            if ((pin as APin) != null)
            {
                if (AvailableAnalogPins.Length != 0)
                {
                    APin newPin = new APin(pin as APin);
                    newPin.Number        = AvailableAnalogPins [0].Number;
                    newPin.DigitalNumber = AvailableAnalogPins [0].DigitalNumber;

                    AddPin(newPin);
                }
                else
                {
                    return(false);
                }
            }
            else if ((pin as DPin) != null)
            {
                if (AvailableDigitalPins.Length != 0)
                {
                    DPin newPin = new DPin(pin as DPin);
                    newPin.Number       = AvailableDigitalPins [0].Number;
                    newPin.AnalogNumber = AvailableDigitalPins [0].AnalogNumber;

                    AddPin(newPin);
                }
                else
                {
                    return(false);
                }
            }
//			CheckPins ();
            return(true);
        }
Пример #13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AComConfigDialog"/> class.
        /// </summary>
        /// <param name="pins">Pins.</param>
        /// <param name="signal">Signal.</param>
        /// <param name="pin">Pin.</param>
        /// <param name="parent">Parent.</param>
        /// <param name="units">Units.</param>
        public AComConfigDialog(APin[] pins, MeasurementCombination signal = null, APin pin = null, Gtk.Window parent = null, List<string> units = null)
            : base("Analog Inputs Combinations - Dialog", parent, Gtk.DialogFlags.Modal, new object[0])
        {
            this.Build ();

            sbMeanValuesCount.Adjustment.Upper = int.MaxValue;
            sbMeanValuesCount.Adjustment.Lower = 1;

            APins = pins;

            cbColor.Color = GUIHelper.ColorHelper.GetRandomGdkColor ();

            if (signal == null) {
                Combination_ = new MeasurementCombination ();
                Combination_.Color = cbColor.Color;
            } else {
                Combination = signal;
                if (!string.IsNullOrEmpty (Combination.OperationString)) {
                    CompileOperation ();
                } else {
                    SetWarning ();
                }
                buttonOk.Label = "Apply";
            }

            if (pin != null) {
                Combination_.AddPin (pin);
                Combination_.Unit = Combination_.Pins [0].Unit;
            }

            SetupNodeView ();
            DrawNodeView ();
            UpdateCBPins ();
            SetApplyButton ();

            entryOperation.Activated += (sender, e) => {
                if (!CompileTimer.Enabled) {
                    CompileTimer.Start ();
                }
            };
            entryOperation.FocusInEvent += (sender, e) => {
                if (!CompileTimer.Enabled) {
                    CompileTimer.Start ();
                }
            };

            CompileTimer.Elapsed += CompileTimerElapsed;

            Units = units;
            ListStore store = new ListStore (typeof(string));
            Units.ForEach (o => store.AppendValues (new object[]{ o }));
            cbeUnit.Model = store;
            if (!string.IsNullOrEmpty (Combination_.Unit)) {
                if (Units.Contains (Combination_.Unit)) {
                    cbeUnit.Active = Array.IndexOf (Units.ToArray (), Combination_.Unit);
                } else {
                    store.AppendValues (new string[]{ Combination_.Unit });
                    cbeUnit.Active = Units.Count;
                }
            }
        }
Пример #14
0
        public void APinValuesTest()
        {
            var pin1 = new APin ();
            pin1.Value = new DateTimeValue (5, DateTime.Now);

            Assert.AreEqual (5, pin1.Value.Value);

            pin1.Values.Clear ();
            Assert.AreEqual (double.NaN, pin1.Value.Value);
        }
Пример #15
0
 public APinTreeNode(APin pin, int index = -1, MeasurementCombination combination = null)
 {
     Pin = pin;
     Combination = combination;
     Index = index;
 }
Пример #16
0
 public APinListStoreNode(APin pin, int index = -1)
 {
     Pin = pin;
     Index = index;
 }
Пример #17
0
 public APinSignalDialogTreeNode(APin pin, int index = -1)
 {
     Pin = pin;
     Index = index;
 }
Пример #18
0
		private void RunAddAPinDialog (APin pin = null)
		{
			APinConfigDialog dialog = new APinConfigDialog (con.Configuration.AvailableAnalogPins, pin, this, this.Units);
			dialog.Response += (o, args) =>
			{
				if (args.ResponseId == ResponseType.Apply)
				{
					if (pin == null)
					{
						con.Configuration.AddPin (dialog.Pin);
					} else
					{
						for (int i = 0; i < con.Configuration.Pins.Count; i++)
						{
							if (con.Configuration.Pins [i] == pin)
							{
								con.Configuration.EditPin (i, dialog.Pin);
								break;
							}
						}
					}
				}
			};
			dialog.Run ();
			dialog.Destroy ();
		}
Пример #19
0
 public void APinvaluesTest5()
 {
     var pin1 = new APin ();
     pin1.MeanValuesCount = 3;
     pin1.Slope = .5;
     pin1.Value = new DateTimeValue (4, DateTime.Now);
     pin1.Value = new DateTimeValue (2, DateTime.Now);
     Assert.AreEqual (double.NaN, pin1.Value.Value);
     pin1.Value = new DateTimeValue (2, DateTime.Now);
     Assert.AreEqual (4.0 / 3.0, pin1.Value.Value);
 }
Пример #20
0
		private void RunMeasurementCombinationDialog (MeasurementCombination sig = null, APin refPin = null)
		{
			var dialog = new AComConfigDialog (con.Configuration.GetPinsWithoutCombinations (), sig, refPin, this, this.Units);
			dialog.Response += (o, args) =>
			{
				if (args.ResponseId == ResponseType.Apply)
				{
					if (sig == null)
					{
						con.Configuration.AddMeasurementCombination (dialog.Combination);
					} else
					{
						con.Configuration.EditMeasurmentCombination (con.Configuration.MeasurementCombinations.IndexOf (sig), dialog.Combination);
					}
				}
			};
			dialog.Run ();
			dialog.Destroy ();
		}
Пример #21
0
 /// <summary>
 /// Adds a pin.
 /// </summary>
 /// <returns><c>true</c>, if pin was added, <c>false</c> otherwise.</returns>
 /// <param name="pin">Pin.</param>
 public bool AddPin(APin pin)
 {
     if (!Pins.Contains (pin))
     {
         Pins.Add (pin);
         return true;
     }
     return false;
 }
Пример #22
0
        /// <summary>
        /// Setups the nodeview.
        /// </summary>
        private void SetupNodeView()
        {
            nvSignal.NodeStore = SignalStore;
            nvSignal.AppendColumn (new TreeViewColumn ("Name(Pin)", new CellRendererText (), "text", 0));
            nvSignal.AppendColumn (new TreeViewColumn ("Frequency", new CellRendererText (), "text", 1));
            nvSignal.AppendColumn (new TreeViewColumn ("Number of mean values", new CellRendererText (), "text", 2));

            nvSignal.ButtonPressEvent += new ButtonPressEventHandler (OnSignalButtonPress);
            nvSignal.KeyPressEvent += new KeyPressEventHandler (OnSignalKeyPress);
            nvSignal.RowActivated += (o, args) => {
                var node = ((o as NodeView).NodeSelection.SelectedNode as APinSignalDialogTreeNode).Pin;
                ActiveNode = node;

                btnRemove.Sensitive = true;
            };
        }
Пример #23
0
 /// <summary>
 /// Gets the coresponding combination.
 /// </summary>
 /// <returns>The coresponding combination.</returns>
 /// <param name="pin">Pin</param>
 public MeasurementCombination GetCorespondingCombination(APin pin)
 {
     foreach (MeasurementCombination sig in MeasurementCombinations)
     {
         if (sig.Pins.Contains (pin))
         {
             return sig;
         }
     }
     return null;
 }
Пример #24
0
        /// <summary>
        /// Clones a pin.
        /// </summary>
        /// <returns><c>true</c>, if pin was cloned, <c>false</c> otherwise.</returns>
        /// <param name="pin">Pin.</param>
        public bool ClonePin(IPin pin)
        {
            Console.WriteLine ("Cloning: " + pin);
            if ((pin as APin) != null)
            {
                if (AvailableAnalogPins.Length != 0)
                {
                    APin newPin = new APin (pin as APin);
                    newPin.Number = AvailableAnalogPins [0].Number;
                    newPin.DigitalNumber = AvailableAnalogPins [0].DigitalNumber;

                    AddPin (newPin);
                } else
                {
                    return false;
                }
            } else if ((pin as DPin) != null)
            {
                if (AvailableDigitalPins.Length != 0)
                {
                    DPin newPin = new DPin (pin as DPin);
                    newPin.Number = AvailableDigitalPins [0].Number;
                    newPin.AnalogNumber = AvailableDigitalPins [0].AnalogNumber;

                    AddPin (newPin);
                } else
                {
                    return false;
                }
            }
            //			CheckPins ();
            return true;
        }
Пример #25
0
        public void APinvaluesTest2()
        {
            var pin1 = new APin ();
            pin1.Offset = 2;
            pin1.Value = new DateTimeValue (5, DateTime.Now);

            Assert.AreEqual (7, pin1.Value.Value);

            pin1.Offset = 0;
            pin1.Slope = .5;
            pin1.Value = new DateTimeValue (5, DateTime.Now);
            Assert.AreEqual (2.5, pin1.Value.Value);
        }
Пример #26
0
 public void APinvaluesTest4()
 {
     var pin1 = new APin ();
     pin1.MeanValuesCount = 2;
     pin1.Slope = .5;
     pin1.Value = new DateTimeValue (4, DateTime.Now);
     pin1.Value = new DateTimeValue (2, DateTime.Now);
     Assert.AreEqual (1.5, pin1.Value.Value);
 }
Пример #27
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AnalogPinConfigurationDialog.AnalogPinConfiguration"/> class.
        /// </summary>
        /// <param name="availablePins">Available pins.</param>
        /// <param name="apin">Apin.</param>
        /// <param name="parent">Parent.</param>
        public APinConfigDialog(APin[] availablePins, APin apin = null, Gtk.Window parent = null, List<string> units = null)
            : base("Analog Input - Dialog", parent, Gtk.DialogFlags.Modal, new object[0])
        {
            this.Build ();

            if (apin != null) {
                AvailablePins = new APin[availablePins.Length + 1];
                Array.Copy (availablePins, AvailablePins, availablePins.Length);
                AvailablePins [availablePins.Length] = apin;

                buttonOk.Label = "Apply";
                buttonOk.Image = new Image (Gtk.Stock.Apply, IconSize.Button);
            } else {
                AvailablePins = availablePins;
            }

            sbSlope.Adjustment.Lower = double.MinValue;
            sbSlope.Adjustment.Upper = double.MaxValue;
            sbOffset.Adjustment.Lower = double.MinValue;
            sbOffset.Adjustment.Upper = double.MaxValue;
            sbMeanValuesCount.Adjustment.Upper = int.MaxValue;
            sbMeanValuesCount.Adjustment.Lower = 1;

            for (int i = 0; i < AvailablePins.Length; i++) {
                cbPin.AppendText (AvailablePins [i].DisplayNumber);
            }

            if (apin != null) {
                Pin = new APin (apin);
            } else {
                if (AvailablePins.Length > 0) {
                    pin = AvailablePins [0];
                } else {
                    pin = new APin ();
                }
                pin.PlotColor = GUIHelper.ColorHelper.GetRandomGdkColor ();
                cbColor.Color = pin.PlotColor;
            }

            if (AvailablePins.Length > 0) {
                if (apin != null) {
                    cbPin.Active = AvailablePins.Length - 1;
                } else {
                    cbPin.Active = 0;
                }
            } else {
                buttonOk.Sensitive = false;
                buttonOk.TooltipText = "There are no more available pins to configure.";
            }

            Units = units;
            ListStore store = new ListStore (typeof(string));
            Units.ForEach (o => store.AppendValues (new object[]{ o }));
            cbUnit.Model = store;
            if (!string.IsNullOrEmpty (pin.Unit)) {
                if (Units.Contains (pin.Unit)) {
                    cbUnit.Active = Array.IndexOf (Units.ToArray (), pin.Unit);
                } else {
                    store.AppendValues (new string[]{ pin.Unit });
                    cbUnit.Active = Units.Count;
                }
            } else {
                cbUnit.Active = Array.IndexOf (Units.ToArray (), "V");
            }

            BindEvents ();
        }
Пример #28
0
        public void SerializeMeasurementCombination()
        {
            APin oPinionAtor = new APin () {
                Number = 42,
            };

            MeasurementCombination MeCom = new MeasurementCombination () {
                Pins = new System.Collections.Generic.List<APin> (){ oPinionAtor },
                OperationString = "A42"
            };

            Formator.Serialize (MemStream, MeCom);
            MemStream.Seek (0, SeekOrigin.Begin);
            MeasurementCombination MeComCopy = new MeasurementCombination ();
            try
            {
                MeComCopy = (MeasurementCombination)Formator.Deserialize (MemStream);
            } catch (Exception e)
            {
                Console.WriteLine (e);
            }

            Assert.AreEqual (MeCom.Pins [0], MeComCopy.Pins [0]);
            Assert.AreEqual (MeCom, MeComCopy);
        }