Пример #1
0
        public static void ScanTag(string tagId)
        {
            Tag tag = new Tag();

            while (true)
            {
                lock (locker)
                {
                    tag.Info  = TagConfig[tagId];
                    tag.Value = TagCurrentValues[tagId];
                }

                double currentValue = tag.Info.GetValue();

                if (currentValue != tag.Value)
                {
                    lock (locker)
                    {
                        TagCurrentValues[tag.Info.TagId] = currentValue;
                    }

                    if (tag.Info.OnScan)
                    {
                        TrendingService.TrendingService.FireEvent(tag.Info.TagId, currentValue);
                    }


                    // samo ako je analogni
                    if (tag.Info is AITag)
                    {
                        AITag ai = (AITag)tag.Info;
                        // aktiviraj alarm i upisi u bazu
                        if (AlarmConfing.ContainsKey(ai.TagId))
                        {
                            if (AlarmConfing[ai.TagId].Time > DateTime.Now)
                            {
                                if (!AlarmConfing[ai.TagId].Activated)
                                {
                                    AlarmConfing[ai.TagId].Activated = true;

                                    alarmdb.Alarms.Add(AlarmConfing[ai.TagId]);

                                    alarmdb.SaveChanges();

                                    AlarmDisplayService.AlarmDisplayService.Notify(ai.TagId, AlarmConfing[ai.TagId].Priority, AlarmConfing[ai.TagId].Time);

                                    UpdateAlarmConfig();
                                }
                            }
                        }
                    }
                }

                Thread.Sleep(tag.Info.ScanTime);
            }
        }