/// /// Copyright (c) 2017 Sensus Metering Systems /// using System.Collections.Generic; using log4net; using Config.Entities; using TBF.UiBridge; using System.IO; namespace TBF.BenchControl.TestMethods.GrabImage { public class GrabImageSeq : Sequences.SequenceBase { private static readonly ILog log = LogManager.GetLogger(typeof(GrabImageSeq)); public IList Execute( Test test, GrabImageCfg cfg) { IList e = new List(); /// Events from currently running operations Event retVal = Event.Done; /// Operations checkUiOp = new Operations.CheckUIOp(true); IList cameras = new List(); IList grabImagesOp = new List(); TestProgressEventArgs.SetEstimatedTimes(new int[] { 60, 0, 0, 0, 0, 0, 60, 0 }); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, 1, Config.Entities.Progress.JustStarted)); //------------------------------------------------ Bridge.OnActivity(this, test.Method); //------------------------------------------------ State state = State.Create(string.Format("{0}({1}) : Grabbing images", test.Method, test.Name)) .AddOperation(checkUiOp); for (int i = 0; i < sensPath.RegisterReaders.Length; i++) { GenericDevices.IRoi roi = sensPath.RegisterReaders[i] as GenericDevices.IRoi; if (roi != null) { string directory = Path.Combine(Program.ImagesDir, BatchRslts.Batch.BatchNr.ToString(), (i+1).ToString()); Directory.CreateDirectory(directory); state.AddOperation(roi.GrabImageOp(Path.Combine(directory, cfg.ImageFileName), cfg.BlackAndWhite, cfg.LowResolution, cfg.ImageRotation)); } } state.EnterState(); do { e = StateMachine.WaitRunDevsRunOps(); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, 1, Config.Entities.Progress.Test)); if (e.Contains(Event.Error)) { retVal = Event.Error; break; } if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; break; } } while (e.Contains(Event.CameraBusy)); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, 1, Config.Entities.Progress.Completed)); /// Create a list with one item 'retVal' (default is Event.Done) and return it IList retList = new List(1); retList.Add(retVal); return retList; } } }