public void ExecuteReadClass0Command()
        {
            DNP3ReadClass0CommandParameters dnp3CommandParam = new DNP3ReadClass0CommandParameters(GetApplicationSequence(), (byte)DNP3FunctionCode.READ, (ushort)TypeField.CLASS_0_DATA,
                                                                                                   (byte)Qualifier.PREFIX_NONE_NO_RANGE_FIELD, GetTransportSequence());
            IDNP3Function dnp3Fn = DNP3FunctionFactory.CreateReadClass0Function(dnp3CommandParam);

            this.functionExecutor.EnqueueCommand(dnp3Fn);
        }
Beispiel #2
0
        public override byte[] PackRequest()
        {
            byte[] request = new byte[18];

            DNP3ReadClass0CommandParameters commandParam = (DNP3ReadClass0CommandParameters)CommandParameters;

            CommandParameters.Length = 0x0b;
            Buffer.BlockCopy(headerBuilder.Build(CommandParameters), 0, request, 0, 10);
            request[10] = commandParam.TransportControl;
            request[11] = commandParam.AplicationControl;
            request[12] = commandParam.FunctionCode;
            Buffer.BlockCopy(BitConverter.GetBytes(IPAddress.HostToNetworkOrder((short)commandParam.ObjectTypeField)), 0, request, 13, 2);
            request[15] = commandParam.Qualifier;
            ushort crc = 0;

            for (int i = 10; i < 16; i++)
            {
                CrcCalculator.computeCRC(request[i], ref crc);
            }
            crc = (ushort)(~crc);
            Buffer.BlockCopy(BitConverter.GetBytes(crc), 0, request, 16, 2);

            return(request);
        }
 public static IDNP3Function CreateReadClass0Function(DNP3ReadClass0CommandParameters parameters)
 {
     return(new ReadClass0(parameters));
 }