ReceiverReady() static private method

Generates an acknowledgment message, with which the server is informed to send next packets.
static private ReceiverReady ( GXDLMSSettings settings, RequestTypes type ) : byte[]
settings GXDLMSSettings
type RequestTypes /// Frame type. ///
return byte[]
Esempio n. 1
0
        /// <summary>
        /// Read data block from the device.
        /// </summary>
        /// <param name="data">data to send</param>
        /// <param name="text">Progress text.</param>
        /// <param name="multiplier"></param>
        /// <returns>Received data.</returns>
        public byte[] ReadDataBlock(byte[] data)
        {
            byte[]       reply       = ReadDLMSPacket(data);
            byte[]       allData     = null;
            RequestTypes moredata    = m_Parser.GetDataFromPacket(reply, ref allData);
            int          maxProgress = m_Parser.GetMaxProgressStatus(allData);

            while (moredata != 0)
            {
                while ((moredata & RequestTypes.Frame) != 0)
                {
                    data  = m_Parser.ReceiverReady(RequestTypes.Frame);
                    reply = ReadDLMSPacket(data);
                    RequestTypes tmp = m_Parser.GetDataFromPacket(reply, ref allData);
                    if (!Trace)
                    {
                        Console.Write("-");
                    }
                    //If this was last frame.
                    if ((tmp & RequestTypes.Frame) == 0)
                    {
                        moredata &= ~RequestTypes.Frame;
                        break;
                    }
                }
                if ((moredata & RequestTypes.DataBlock) != 0)
                {
                    //Send Receiver Ready.
                    data     = m_Parser.ReceiverReady(RequestTypes.DataBlock);
                    reply    = ReadDLMSPacket(data);
                    moredata = m_Parser.GetDataFromPacket(reply, ref allData);
                    if (!Trace)
                    {
                        Console.Write("+");
                    }
                }
            }
            return(allData);
        }