public virtual TaskMonitorModel Run(String Id) { TaskModel Task = tasks[Id]; if (Task != null) { PCRTaskSettingsModel Settings = Task.Settings as PCRTaskSettingsModel; TaskMonitorModel Monitor = new TaskMonitorModel(Task); Digital Detector = new Digital(); try { Detector.Port = Settings.SerialPortNumer; Detector.Open(); Detector.Connect(); if (Detector.IsConnected) { Task.State = TaskState.RUNNING; Monitor.Logs.Add(new LogRecordModel("Connect successfully", LogLevel.INFO)); Monitor.Logs.Add(new LogRecordModel("Board SN:" + Detector.BoardSN, LogLevel.INFO)); Monitor.Logs.Add(new LogRecordModel("Board temperature:" + Detector.BoardTemperature, LogLevel.INFO)); Detector.MethodType = Settings.MethodType; Detector.MethodCycles = Settings.MethodCycles; Detector.MethodCycletime = Settings.MethodCycleTime; Detector.MethodDarkSignal = Settings.MethodDarkSignal; Detector.StartMethod(); Monitor.StartTime = DateTime.Now; Monitor.Logs.Add(new LogRecordModel("Task Started", LogLevel.INFO)); while (Detector.IsMethodRunning) { StringBuilder values = new StringBuilder(); values.Append("OnValue1:" + Detector.OnValue1 + ",OffValue1:" + Detector.OffValue1); values.Append(";OnValue2:" + Detector.OnValue2 + ",OffValue2:" + Detector.OffValue2); values.Append(";OnValue3:" + Detector.OnValue3 + ",OffValue3:" + Detector.OffValue3); Monitor.Logs.Add(new LogRecordModel(values.ToString(), LogLevel.INFO)); } Detector.StopMethod(); Task.State = TaskState.DONE; Monitor.EndTime = DateTime.Now; Monitor.Logs.Add(new LogRecordModel("Task finished", LogLevel.INFO)); } else { Monitor.Logs.Add(new LogRecordModel("Can not connect to device", LogLevel.ERROR)); Task.State = TaskState.ERROR; } } catch (Exception e) { Monitor.Logs.Add(new LogRecordModel("Task failed due to:" + e.Message, LogLevel.ERROR)); Task.State = TaskState.ERROR; } finally { Detector.Disconnect(); Detector.Close(); } return(Monitor); } return(null); }
// POST api/tasks public TaskModel Post([FromBody] PCRTaskSettingsModel settings) { return(TaskService.Create(settings)); }