public void SetData(VariableDataFrame data)
        {
            if (data.DataBlocks.Count >= _dataIndex)
            {
                var frame = data.DataBlocks[_dataIndex];

                DriverContext.Logger.LogDebug($"{_dataIndex}{Name} value {frame.Value}");

                if (_lastFrame != null && _lastFrame.Value != frame.Value)
                {
                    DispatchValue(frame.Value);
                }

                _lastFrame = frame;
            }
        }
Beispiel #2
0
        public static MBusFrame AesDecrypt(byte[] aesKey, MBusFrame frame, ILogger logger)
        {
            var encrypted = AesDecryptFrame(aesKey, frame);

            if (encrypted == null || encrypted.Length == 0)
            {
                return(null);
            }

            var vdaFrame = new byte[encrypted.Length - 4];

            Array.Copy(encrypted, 2, vdaFrame, 0, encrypted.Length - 4);

            var varDataFrame = new VariableDataFrame();

            varDataFrame.ParseVariableDataFrame(vdaFrame, 0, logger);

            return(varDataFrame);
        }
Beispiel #3
0
        public void TestVariableDataFrame()
        {
            var frame = Automatica.Core.Driver.Utility.Utils.StringToByteArray(
                "066D4324CEFB161A04037EA70E0004833C000000008410FB8273AD2F00008410FB82F33C200C0200042B3901000004AB3C0000000004FB140000000004FB943C900000000483FF0400000000");
            var variableDataFrame = new VariableDataFrame();

            variableDataFrame.ParseVariableDataFrame(frame, 0, NullLogger.Instance);


            Assert.True(variableDataFrame.DataBlocks.Count == 10);

            var timePoint       = variableDataFrame.DataBlocks[0];
            var energieAp       = variableDataFrame.DataBlocks[1];
            var energieAm       = variableDataFrame.DataBlocks[2];
            var energieRp       = variableDataFrame.DataBlocks[3];
            var energieRm       = variableDataFrame.DataBlocks[4];
            var energiePp       = variableDataFrame.DataBlocks[5];
            var energiePm       = variableDataFrame.DataBlocks[6];
            var blindleistungQp = variableDataFrame.DataBlocks[7];
            var blindleistungQm = variableDataFrame.DataBlocks[8];
            var inkasso         = variableDataFrame.DataBlocks[9];

            Assert.Equal(typeof(DateTime), timePoint.Value.GetType());
            Assert.Equal(new DateTime(2015, 6, 27, 14, 36, 03), timePoint.Value);


            Assert.Equal(960382, energieAp.Value);
            Assert.Equal(0, energieAm.Value);
            Assert.Equal(12205, energieRp.Value);
            Assert.Equal(134176, energieRm.Value);
            Assert.Equal(313, energiePp.Value);
            Assert.Equal(0, energiePm.Value);
            Assert.Equal(0, blindleistungQp.Value);
            Assert.Equal(144, blindleistungQm.Value);
            Assert.Equal(0, inkasso.Value);
        }