public void SaveCompressionConditionConfig()
        {
            TimeSpanConfig tsc1 = new TimeSpanConfig()
            {
                Hours   = 1,
                Minutes = 2,
                Seconds = 3
            };

            TimeSpanConfig tsc2 = new TimeSpanConfig()
            {
                Hours   = 0,
                Minutes = 1,
                Seconds = 2
            };

            CompressionConditionConfig ccc = new CompressionConditionConfig()
            {
                MeasuredValueName  = "Test",
                RewriteValueAfter  = tsc1,
                TimeDeadBand       = tsc2,
                ValueDeadBandDelta = 0.12345
            };

            CompressionConditionConfigs configs = new CompressionConditionConfigs();

            configs.Items = new CompressionConditionConfig[] {
                ccc,
                ccc
            };

            XmlSerializer configSerializer = new XmlSerializer(typeof(CompressionConditionConfigs), "TimeSeries");

            using (TextWriter writer = new StreamWriter("test.xml")) {
                configSerializer.Serialize(writer, configs);
                writer.Close();
            }

            XmlSerializer test = new XmlSerializer(typeof(CompressionConditionConfigs), "TimeSeries");

            using (TextReader reader = new StreamReader("test.xml")) {
                CompressionConditionConfigs configs2 = (CompressionConditionConfigs)test.Deserialize(reader);

                Assert.AreEqual(2, configs2.Items.Length);

                CompressionConditionManager manager = new CompressionConditionManager(configs2);

                var config = manager.GetConfigFor("");
            }


            var configs10 = new CompressionConditionConfigs();

            configs10.Items = new CompressionConditionConfig[] {
                new CompressionConditionConfig()
                {
                    MeasuredValueName = "Tag1",
                    RewriteValueAfter = new TimeSpanConfig()
                    {
                        Hours   = 1,
                        Minutes = 0,
                        Seconds = 0
                    },
                    TimeDeadBand = new TimeSpanConfig()
                    {
                        Hours   = 0,
                        Minutes = 0,
                        Seconds = 10
                    },
                    ValueDeadBandDelta = 1.2
                },
                new CompressionConditionConfig()
                {
                    MeasuredValueName = "Tag2",
                    RewriteValueAfter = new TimeSpanConfig()
                    {
                        Hours   = 1,
                        Minutes = 0,
                        Seconds = 0
                    },
                    TimeDeadBand = new TimeSpanConfig()
                    {
                        Hours   = 0,
                        Minutes = 0,
                        Seconds = 10
                    },
                    ValueDeadBandDelta = 1.2
                }
            };

            //XmlSerializer configSerializer = new XmlSerializer(typeof(CompressionConditionConfigs), "TimeSeries");
            using (TextWriter writer = new StreamWriter("Thomas.xml"))
            {
                configSerializer.Serialize(writer, configs10);
                writer.Close();
            }



            CompressionConditionManager manager2 = CompressionConditionManager.LoadFromFile("Thomas.xml");
        }
Пример #2
0
 private void TransferQueueToDatebase(string messageQueuePath)
 {
     try
     {
         var simpleMessageQueueWrapper = new SimpleMessageQueueWrapper <IDictionary <string, object> >();
         simpleMessageQueueWrapper.Initialize(messageQueuePath);
         var dictionary = simpleMessageQueueWrapper.Peek();
         int num        = 500;
         while (dictionary != null && num-- >= 0)
         {
             IEnumerable <string> source =
                 from key in dictionary.Keys
                 where key.Contains("MeasureTime")
                 select key;
             string timeKeyName = source.FirstOrDefault <string>();
             if (timeKeyName != null)
             {
                 DateTime             dateTime   = (DateTime)dictionary[timeKeyName];
                 IEnumerable <string> enumerable =
                     from key in dictionary.Keys
                     where key != timeKeyName
                     select key;
                 foreach (string current in enumerable)
                 {
                     MeasuredValue measuredValue = new MeasuredValue();
                     measuredValue.Name        = current;
                     measuredValue.Quality     = OPCQuality.Good;
                     measuredValue.TimeStamp   = (DateTime)dictionary[timeKeyName];
                     measuredValue.Description = "";
                     measuredValue.Value       = dictionary[current];
                     if (measuredValue.Value is long)
                     {
                         measuredValue.Value = Convert.ToInt32(measuredValue.Value.ToString());
                     }
                     _Logger.DebugFormat("save to local DB: {0}", measuredValue);
                     ValueTableWriter.SaveValueWhenConditionsAreMet(measuredValue, _CompressionConditionManager.GetConfigFor(current));
                 }
                 dictionary = simpleMessageQueueWrapper.Receive();
             }
             else
             {
                 _Logger.Error("cannot find a 'MeasureTime' in the message directory. Send message to ErrorQueue");
                 _ErrorQueue.Send(dictionary);
                 dictionary = simpleMessageQueueWrapper.Receive();
             }
             dictionary = simpleMessageQueueWrapper.Peek();
         }
         ValueTableWriter.TransferDataToDestDB();
     }
     catch (Exception ex)
     {
         _Logger.Error(ex.Message, ex);
     }
 }