Exemple #1
0
        public static int SaveValueWhenConditionsAreMet(MeasuredValue currentValue, CompressionCondition condition)
        {
            if (currentValue == null)
            {
                throw new ArgumentNullException("currentValue");
            }
            if (condition == null)
            {
                throw new ArgumentNullException("condition");
            }

            // if the current value has the OPCQuality of "NoValue"
            // return without writting the value
            if (currentValue.Quality == OPCQuality.NoValue)
            {
                _logger.DebugFormat("current value {0} has the OPCQuality of \"NoValue\"", currentValue.Name);
                return(0);
            }

            TypeCode      typeCode      = currentValue.GetTypeCode();
            MeasuredValue previousValue = ReadLastMeasuredValueFromLocalDB(currentValue.Name, typeCode);

            if (false == condition.ShouldCurrentValueBeWritten(currentValue, previousValue))
            {
                return(0);
            }
            int rowAffected = InsertIntoDatabase(currentValue, typeCode);

            return(rowAffected);
        }
Exemple #2
0
        public void GetConnectionCheck()
        {
            var now = DateTime.Now;
            var mv  = new MeasuredValue()
            {
                Name        = "",
                Description = "meine beschreibung",
                TimeStamp   = now,
                Value       = "test",
                Quality     = OPCQuality.NoValue
            };

            int affectedRows = ValueTableWriter.SaveValueWhenConditionsAreMet(mv, CompressionCondition.GetDefaultCondition());

            Assert.AreEqual(0, affectedRows);
            //ValueTableWriter valueTable = new ValueTableWriter();
            //MeasuredValue mv = valueTable.ReadLastMeasuredValueFromLocalDB("test", TypeCode.Double);
            //Assert.AreEqual(OPCQuality.NoValue, mv.Quality);
        }
Exemple #3
0
        public void InsertIntoIntTable()
        {
            DateTime now      = DateTime.Now;
            string   tagName  = "MyMeasuredValue";
            int      tagValue = 12345678;
            string   remark   = "Bla Bla";
            int      count    = ValueTableWriter.SaveValueWhenConditionsAreMet(
                new MeasuredValue()
            {
                Name        = tagName,
                TimeStamp   = now,
                Quality     = OPCQuality.Good,
                Value       = tagValue,
                Description = remark
            }, CompressionCondition.GetNoCompressionCondition());

            Assert.AreEqual(1, count);

            count = ValueTableWriter.SaveValueWhenConditionsAreMet(
                new MeasuredValue()
            {
                Name        = tagName,
                TimeStamp   = now + new TimeSpan(0, 0, 0, 1, 1),
                Quality     = OPCQuality.Good,
                Value       = tagValue,
                Description = remark
            }, CompressionCondition.GetDefaultCondition());
            Assert.AreEqual(0, count);

            MeasuredValue mv = ValueTableWriter.ReadLastMeasuredValueFromLocalDB("MyMeasuredValue", TypeCode.Int32);

            Assert.AreEqual(tagName, mv.Name);
            TimeSpan sp = now - mv.TimeStamp;

            // Datenbankgenauigkeit ist bei Datum nicht hoch genug
            Assert.Greater(0.1, sp.TotalSeconds);
            Assert.AreEqual(tagValue, mv.Value);
            Assert.AreEqual(OPCQuality.Good, mv.Quality);
            Assert.AreEqual(remark, mv.Description);
        }