Esempio n. 1
0
        public void AddTest()
        {
            Sequence seq = new Sequence () {
                Pin = new DPin () {
                    Name = "Pin of Awesome",
                    Number = 13,
                    PlotColor = GUIHelper.ColorHelper.SystemColorToGdkColor (System.Drawing.Color.Yellow),
                    State = DPinState.HIGH
                },
                Name = "Sequence of Awesome",
                Repetitions = 3,
            };

            seq.AddSequenceOperation (new SequenceOperation () {
                State = DPinState.HIGH,
                Duration = TimeSpan.FromSeconds (30)
            });

            Assert.AreEqual (1, seq.Chain.Count);

            Assert.AreEqual (0, seq.Cycle);
            seq.Next ();
            Assert.AreEqual (1, seq.Cycle);
            seq.Next ();
            Assert.AreEqual (2, seq.Cycle);
            seq.Next ();
            Assert.AreEqual (3, seq.Cycle);

            seq.Reset ();
            Assert.AreEqual (0, seq.Cycle);
        }
Esempio n. 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PrototypeBackend.Sequence"/> class.
 /// </summary>
 /// <param name="copy">Copy.</param>
 public Sequence(Sequence copy)
     : base()
 {
     Pin = new DPin (copy.Pin);
     Name = copy.Name;
     Chain = new List<SequenceOperation> (copy.Chain);
     Repetitions = copy.Repetitions;
 }
Esempio n. 3
0
        public void ConstructorTest()
        {
            Sequence seq = new Sequence ();

            Assert.AreEqual (new DPin (), seq.Pin);
            Assert.AreEqual ("", seq.Name);
            Assert.AreEqual (seq.Pin.PlotColor, seq.Color);
            Assert.AreEqual (0, seq.Chain.Count);
            Assert.AreEqual (0, seq.Repetitions);
            Assert.AreEqual (0, seq.Cycle);
        }
Esempio n. 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SequenceConfigurationsDialog.SequenceConfiguration"/> class.
        /// </summary>
        /// <param name="pins">Pins.</param>
        /// <param name="groups">Groups.</param>
        /// <param name="seq">Seq.</param>
        /// <param name="RefPin">Reference pin.</param>
        /// <param name="parent">Parent.</param>
        public SeqConfigDialog(DPin[] pins, List<string> groups, Sequence seq = null, DPin RefPin = null, Gtk.Window parent = null)
            : base("Digital Sequences - Dialog", parent, Gtk.DialogFlags.Modal, new object[0])
        {
            this.Build ();

            sbRadioBtnStopAfter.Adjustment.Upper = int.MaxValue;
            sbRadioBtnStopAfter.Adjustment.Lower = 0;

            DPins = pins;

            //no DPin no Sequence
            if (DPins.Length > 0) {
                for (int i = 0; i < DPins.Length; i++) {
            //					cbPin.AppendText (string.Format ("{0}(D{1})", DPins [i].Name, DPins [i].Number));
                    cbPin.AppendText (DPins [i].DisplayNumber);
                }
            }
            SetupNodeView ();
            SetupOxyPlot ();

            if (seq != null) {
                PinSequence = seq;
                if (seq.Repetitions == -1) {
                    rbRepeateContinously.Active = true;
                } else {
                    rbStopAfter.Active = true;
                    sbRadioBtnStopAfter.Sensitive = true;
                    sbRadioBtnStopAfter.Value = seq.Repetitions;
                }

                buttonOk.Label = "Apply";
                buttonOk.Image = new Image (Gtk.Stock.Apply, IconSize.Button);
            } else {
                pinSequence = new Sequence ();
                pinSequence.Repetitions = -1;
            }
            if (RefPin == null) {
                cbPin.Active = 0;
            } else {
                cbPin.Active = pins.ToList ().IndexOf (RefPin);
            }

            SetupGroups (groups);
            DisplaySequenceInfos ();
            BuildEvents ();
        }
Esempio n. 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PrototypeBackend.SequencesUpdatedArgs"/> class.
 /// </summary>
 /// <param name="seqUpdateOperation">Seq update operation.</param>
 /// <param name="oldseq">The old sequence.</param>
 /// <param name="newseq">The new sequence.</param>
 public SequencesUpdatedArgs(UpdateOperation seqUpdateOperation, Sequence oldseq = null, Sequence newseq = null)
 {
     OldSeq = oldseq;
     NewSeq = newseq;
     UpdateOperation = seqUpdateOperation;
 }
Esempio n. 6
0
 /// <summary>
 /// Removes the sequence.
 /// </summary>
 /// <param name="index">Index.</param>
 public void RemoveSequence(Sequence index)
 {
     if (index != null)
     {
         if (OnSequencesUpdated != null)
         {
             OnSequencesUpdated.Invoke (this, new SequencesUpdatedArgs (UpdateOperation.Remove, index));
         }
         Sequences.Remove (index);
     }
 }
Esempio n. 7
0
 /// <summary>
 /// Removes the sequence.
 /// </summary>
 /// <param name="index">Index.</param>
 public void RemoveSequence(int index)
 {
     if (index > -1)
     {
         var seq = new Sequence ();
         seq = Sequences [index];
         Sequences.RemoveAt (index);
         if (OnSequencesUpdated != null)
         {
             OnSequencesUpdated.Invoke (this, new SequencesUpdatedArgs (UpdateOperation.Remove, seq));
         }
     }
 }
Esempio n. 8
0
 /// <summary>
 /// Edits the sequence.
 /// </summary>
 /// <param name="index">Index.</param>
 /// <param name="seq">Seq.</param>
 public void EditSequence(int index, Sequence seq)
 {
     Sequences [index] = seq;
     if (OnSequencesUpdated != null)
     {
         OnSequencesUpdated.Invoke (this, new SequencesUpdatedArgs (UpdateOperation.Change, null, seq));
     }
 }
Esempio n. 9
0
        public void SerializeSequence()
        {
            DPin TestPin = new DPin () {
                Number = 42,
                Name = "Testor the Destroyer"
            };

            Sequence Seq = new Sequence () {
                Pin = TestPin,
                Chain = new System.Collections.Generic.List<SequenceOperation> () {
                    new SequenceOperation () {
                        Duration = TimeSpan.FromSeconds (42),
                        State = DPinState.HIGH
                    },
                    new SequenceOperation () {
                        Duration = TimeSpan.FromSeconds (42),
                        State = DPinState.LOW
                    }
                },
                Repetitions = -1
            };

            Formator.Serialize (MemStream, Seq);
            MemStream.Seek (0, SeekOrigin.Begin);
            Sequence SeqEvilClone = (Sequence)Formator.Deserialize (MemStream);

            Console.WriteLine (Seq.ToStringLong ());
            Console.WriteLine (SeqEvilClone.ToStringLong ());

            Assert.AreEqual (Seq, SeqEvilClone);
        }
Esempio n. 10
0
		protected void OnButton359Clicked (object sender, EventArgs e)
		{
			con.Configuration.ClearPins ();
			con.Configuration.ClearSequences ();

			OnBtnFillDigitalOutputsClicked (null, null);

			int i = 0;
			while (i < con.Configuration.Pins.Count)
			{
				var seq1 = new Sequence () {
					Pin = (DPin)con.Configuration.Pins [i],
					Repetitions = -1
				};
				var seq2 = new Sequence () {
					Pin = (DPin)con.Configuration.Pins [i + 1],
					Repetitions = -1
				};
				for (int j = 0; j < 1; j++)
				{

					seq1.AddSequenceOperation (new SequenceOperation () {
						Duration = TimeSpan.FromMilliseconds (1000),
						State = DPinState.HIGH
					});
					seq1.AddSequenceOperation (new SequenceOperation () {
						Duration = TimeSpan.FromMilliseconds (1000),
						State = DPinState.LOW
					});
					seq2.AddSequenceOperation (new SequenceOperation () {
						Duration = TimeSpan.FromMilliseconds (1000),
						State = DPinState.LOW
					});
					seq2.AddSequenceOperation (new SequenceOperation () {
						Duration = TimeSpan.FromMilliseconds (1000),
						State = DPinState.HIGH
					});
				}
				con.Configuration.AddSequence (seq1);
				con.Configuration.AddSequence (seq2);
				i += 2;
			}
		}
Esempio n. 11
0
		protected void OnBtnAlternateBlinkSetup2Clicked (object sender, EventArgs e)
		{
			con.Configuration.ClearPins ();
			con.Configuration.ClearSequences ();

			OnBtnFillDigitalOutputsClicked (null, null);

			int i = 0;
			while (i < con.Configuration.Pins.Count)
			{
				var seq = new Sequence () {
					Pin = (DPin)con.Configuration.Pins [i],
					Repetitions = 0,
				};

				seq.AddSequenceOperation (new SequenceOperation () {
					Duration = TimeSpan.FromSeconds (i / 100.0),
					State = DPinState.LOW
				});

				for (int j = 0; j < 100; j++)
				{
					seq.AddSequenceOperation (new SequenceOperation () {
						Duration = TimeSpan.FromSeconds (con.Configuration.Pins.Count / 100.0),
						State = DPinState.HIGH
					});
					seq.AddSequenceOperation (new SequenceOperation () {
						Duration = TimeSpan.FromSeconds (con.Configuration.Pins.Count / 100.0),
						State = DPinState.LOW
					});
				}

				con.Configuration.AddSequence (seq);

				i += 1;
			}
			Console.WriteLine ();
		}
Esempio n. 12
0
		private void RunSequenceDialog (Sequence seq = null, DPin RefPin = null)
		{
			SeqConfigDialog dialog;
			if (seq != null)
			{
				dialog = new SeqConfigDialog (
					con.Configuration.GetPinsWithoutSequence (), 
					con.Configuration.SequenceGroups, 
					new Sequence (seq), 
					RefPin, 
					this
				);
			} else
			{
				dialog = new SeqConfigDialog (
					con.Configuration.GetPinsWithoutSequence (), 
					con.Configuration.SequenceGroups, 
					null, 
					RefPin, 
					this
				);
			}

			dialog.Response += (o, args) =>
			{
				if (args.ResponseId == ResponseType.Apply)
				{
					if (seq == null)
					{
						con.Configuration.AddSequence (dialog.PinSequence);
					} else
					{
						con.Configuration.EditSequence (con.Configuration.Sequences.IndexOf (seq), dialog.PinSequence);
					}
				}
			};
			dialog.Run ();
			dialog.Destroy ();
		}
Esempio n. 13
0
		protected void OnBtnDoubleBlinkClicked (object sender, EventArgs e)
		{
			if (ArduinoController.IsConnected)
			{
				con.Configuration.Sequences.Clear ();

				var sequence = new Sequence () {
					Pin = new DPin ("Dings", 3),
					Repetitions = 10
				};
				sequence.AddSequenceOperation (new SequenceOperation () {
					Duration = TimeSpan.FromSeconds (1),
					State = DPinState.HIGH,
				});
				sequence.AddSequenceOperation (new SequenceOperation {
					Duration = TimeSpan.FromSeconds (1),
					State = DPinState.LOW,
				});
				con.Configuration.Sequences.Add (sequence);

				sequence = new Sequence () {
					Pin = new DPin ("Dings", 4),
					Repetitions = 10
				};
				sequence.AddSequenceOperation (new SequenceOperation () {
					Duration = TimeSpan.FromSeconds (1),
					State = DPinState.LOW,
				});
				sequence.AddSequenceOperation (new SequenceOperation {
					Duration = TimeSpan.FromSeconds (1),
					State = DPinState.HIGH,
				});
				con.Configuration.Sequences.Add (sequence);

				foreach (Sequence seq in con.Configuration.Sequences)
				{
					Console.WriteLine (seq.ToString ());
				}

				con.Start ();
			} else
			{
				MessageDialog dialog = new MessageDialog (this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Please connect first to a Arduino.");
				dialog.Run ();
				dialog.Destroy ();
			}
		}
Esempio n. 14
0
 public SequenceTreeNode(Sequence seq, int index = -1)
 {
     Index = index;
     Seq = seq;
 }
Esempio n. 15
0
 public DPinTreeNode(DPin pin, int index = -1, Sequence seq = null)
 {
     Sequence = seq;
     Index = index;
     Pin = pin;
 }
Esempio n. 16
0
        public void SetTest()
        {
            Sequence seq = new Sequence () {
                Pin = new DPin () {
                    Name = "Pin of Awesome",
                    Number = 13,
                    PlotColor = new Gdk.Color (0, 255, 255),
                    State = DPinState.HIGH
                },
                Name = "Sequence of Awesome",
                Repetitions = 3,
            };

            Assert.AreNotEqual (null, seq.Pin);
            Assert.AreEqual ("Sequence of Awesome", seq.Name);
            Assert.AreEqual (0, seq.Chain.Count);
            Assert.AreEqual (3, seq.Repetitions);
            Assert.AreEqual (0, seq.Cycle);
        }
Esempio n. 17
0
 /// <summary>
 /// Adds the sequence.
 /// </summary>
 /// <param name="sequence">Sequence</param>
 public void AddSequence(Sequence sequence)
 {
     if (!Sequences.Contains (sequence))
     {
         Sequences.Add (sequence);
         if (OnSequencesUpdated != null)
         {
             OnSequencesUpdated.Invoke (this, new SequencesUpdatedArgs (UpdateOperation.Add, sequence));
         }
     }
 }
Esempio n. 18
0
        public void GetCurrentStateTest()
        {
            Sequence seq = new Sequence () {
                Pin = new DPin () {
                    Name = "Pin of Awesome",
                    Number = 13,
                    PlotColor = GUIHelper.ColorHelper.SystemColorToGdkColor (System.Drawing.Color.Yellow),
                    State = DPinState.HIGH
                },
                Name = "Sequence of Awesome",
                Repetitions = 3,
            };

            seq.AddSequenceOperation (new SequenceOperation () {
                State = DPinState.HIGH,
                Duration = TimeSpan.FromMilliseconds (10)
            });
            seq.AddSequenceOperation (new SequenceOperation () {
                State = DPinState.LOW,
                Duration = TimeSpan.FromMilliseconds (10)
            });

            Assert.AreEqual (2, seq.Chain.Count);

            Assert.AreEqual (0, seq.Chain [0].Moment.TotalMilliseconds);
            Assert.AreEqual (10, seq.Chain [1].Moment.TotalMilliseconds);

            Assert.AreEqual (DPinState.HIGH, seq.GetCurrentState (9));
            Assert.AreEqual (DPinState.LOW, seq.GetCurrentState (10));

            Assert.AreEqual (DPinState.LOW, seq.GetCurrentState (19));
            Assert.AreEqual (DPinState.HIGH, seq.GetCurrentState (20));

            Assert.AreEqual (DPinState.HIGH, seq.GetCurrentState (29));
            Assert.AreEqual (DPinState.LOW, seq.GetCurrentState (30));

            Assert.AreEqual (DPinState.LOW, seq.GetCurrentState (60));
            Assert.AreEqual (DPinState.LOW, seq.GetCurrentState (61));

            seq.Reset ();
        }
Esempio n. 19
0
 /// <summary>
 /// Clones a sequence.
 /// </summary>
 /// <param name="seq">Seq.</param>
 public void CloneSequence(Sequence seq)
 {
     if (GetPinsWithoutSequence ().Length == 0 && AvailableDigitalPins.Length > 0)
     {
         ClonePin (seq.Pin);
     } else if (GetPinsWithoutSequence ().Length == 0 && AvailableDigitalPins.Length == 0)
     {
         return;
     }
     Sequence copy = new Sequence (seq);
     copy.Pin = GetPinsWithoutSequence () [0];
     AddSequence (copy);
 }