Пример #1
0
 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));
     }
 }
Пример #2
0
 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);
         }
     }
 }
Пример #3
0
 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));
     }
 }
Пример #4
0
        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));
            }
        }
Пример #5
0
        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);
        }
Пример #6
0
        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));
            }
        }