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