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"); }
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); } }