private void OnDataChange(ConveyorBasicInfo info, string name) { try { if (info != null) { if (info.ActiveAlarms != null) { var alarmToDel = from a in AlarmList where a.Unit == name && !info.ActiveAlarms.Contains(Convert.ToInt32(a.AlarmID)) select a; alarmToDel.ToList().ForEach(p => AlarmList.Remove(p)); var alarmToAdd = from a in info.ActiveAlarms where AlarmList.FirstOrDefault(p => p.Unit == name && p.AlarmID == a.ToString("000000")) == null select new AlarmViewModel { AlarmID = a.ToString("000000"), Unit = name, Severity = EnumAlarmSeverity.Error, Status = EnumAlarmStatus.Active, Text = ResourceReader.GetString(string.Format("ALARM_{0}", a.ToString("000000"))), ArrivedTime = DateTime.Now, AckTime = null }; alarmToAdd.ToList().ForEach(p => AlarmList.Add(p)); } } } catch (Exception e) { _warehouse.AddEvent(Database.Event.EnumSeverity.Error, Database.Event.EnumType.Exception, e.Message); throw new Exception(string.Format("{0}.{1}: {2}", this.GetType().Name, (new StackTrace()).GetFrame(0).GetMethod().Name, e.Message)); } }
public void UIConveyorBasicUINotify(ConveyorBasicInfo c) { try { if (Warehouse.Crane.ContainsKey(c.Name)) { Warehouse.Crane[c.Name].CallNotifyVM(c); } else if (Warehouse.Conveyor.ContainsKey(c.Name)) { Warehouse.Conveyor[c.Name].CallNotifyVM(c); } else if (Warehouse.Segment.ContainsKey(c.Name)) { Warehouse.Segment[c.Name].CallNotifyVM(c); } } catch (Exception ex) { if (c == null) { Log.AddLog(Log.Severity.EXCEPTION, "WCFClient", String.Format("UIConveyorBasicUINotify {0}", "c==null"), ex.Message); } else { Log.AddLog(Log.Severity.EXCEPTION, "WCFClient", String.Format("UIConveyorBasicUINotify {0}", c.Name ?? "null"), ex.Message); } } }
public void OnSegmentChanged(ConveyorBasicInfo inf) { try { } catch (Exception e) { Warehouse.AddEvent(Event.EnumSeverity.Error, Event.EnumType.Exception, string.Format("{0}.{1}: {2} (Seg: {3})", this.GetType().Name, (new StackTrace()).GetFrame(0).GetMethod().Name, e.Message, inf.Name)); } }
public void OnDataChange(ConveyorBasicInfo info) { try { _info = info; RefreshDetails(); } catch (Exception e) { _warehouse.AddEvent(Database.Event.EnumSeverity.Error, Database.Event.EnumType.Exception, string.Format("{0}.{1}: {2}", this.GetType().Name, (new StackTrace()).GetFrame(0).GetMethod().Name, e.Message)); } }
static void Main(string[] args) { DBService db = new DBService(null); CraneInfo tel = new CraneInfo { ActiveAlarms = new List <int> { 1, 2, 3 }, AlarmID = 100, AlarmList = new List <Warehouse.ConveyorUnits.ALARM> { new Warehouse.ConveyorUnits.ALARM { ID = 1, Offset = 2, Range = 100 } }, Name = "test", Online = true, SensorList = new List <Sensor> { new Sensor { Description = "descr" } }, State = new System.Collections.BitArray(10, false), Fault = 111 }; MemoryStream ms = new MemoryStream(); DataContractSerializer bf = new DataContractSerializer(typeof(ConveyorBasicInfo)); try { bf.WriteObject(ms, tel); } catch (Exception ex) { Console.WriteLine(ex.Message); } ms.Position = 0; ConveyorBasicInfo ci = (ConveyorBasicInfo)bf.ReadObject(ms); }
public void OnDataChange(ConveyorBasicInfo info, string name) { bool none = false; bool noComm = false; bool notLongTermBlock = true; bool alarm = false; bool autoRun = true; bool remote = true; bool local; try { var ss = _segmentStatusDict[name]; ss.None = false; if (info is ConveyorInfo) { ss.Offline = !(info as ConveyorInfo).Online; if ((info as ConveyorInfo).Status != null) { ss.LongTermBlock = (info as ConveyorInfo).Status[TelegramTransportStatus.STATUS_LONGTERMFAULT]; ss.Alarm = (info as ConveyorInfo).Status[TelegramTransportStatus.STATUS_FAULT]; ss.AutoRun = (info as ConveyorInfo).Status[TelegramTransportStatus.STATUS_AUTOMATIC]; ss.Remote = (info as ConveyorInfo).Status[TelegramTransportStatus.STATUS_REMOTE]; } } else if (info is CraneInfo) { ss.Offline = !(info as CraneInfo).Online; if ((info as CraneInfo).Status != null) { ss.LongTermBlock = (info as CraneInfo).Status[TelegramCraneStatus.STATUS_LONGTERMBLOCK]; ss.Alarm = (info as CraneInfo).Status[TelegramCraneStatus.STATUS_FAULT]; ss.AutoRun = (info as CraneInfo).Status[TelegramCraneStatus.STATUS_AUTOMATIC]; ss.Remote = (info as CraneInfo).Status[TelegramCraneStatus.STATUS_REMOTE]; } } foreach (KeyValuePair <string, SegmentStatus> kvp in _segmentStatusDict) { none |= kvp.Value.None; noComm |= kvp.Value.Offline; notLongTermBlock &= !kvp.Value.LongTermBlock; alarm |= kvp.Value.Alarm; autoRun &= kvp.Value.AutoRun; remote &= kvp.Value.Remote; } ; local = !(noComm || notLongTermBlock || alarm || remote || autoRun || none); if (noComm) { State = DeviceStateEnum.Offline; } else if (!notLongTermBlock) { State = DeviceStateEnum.LongTermBlock; } else if (!remote) { State = DeviceStateEnum.Local; } else if (alarm) { State = DeviceStateEnum.Alarm; } else if (autoRun && remote) { State = DeviceStateEnum.AutoRun; } else { State = DeviceStateEnum.Remote; } } catch (Exception e) { _warehouse.AddEvent(Event.EnumSeverity.Error, Event.EnumType.Exception, string.Format("{0}.{1}: {2} ({3})", this.GetType().Name, (new StackTrace()).GetFrame(0).GetMethod().Name, e.Message, name)); } }