Beispiel #1
0
        /// <summary>
        /// Reads the specified table from the meter.
        /// </summary>
        /// <param name="usTableID">The table ID for the table to read.</param>
        /// <param name="MeterTables">The tables object to read the table into.</param>
        /// <returns>PSEMResponse code.</returns>
        // Revision History
        // MM/DD/YY who Version Issue# Description
        // -------- --- ------- ------ ---------------------------------------
        // 07/06/10 AF  2.42.03         Created
        //
        protected PSEMResponse ReadTable(ushort usTableID, ref GatewayTables MeterTables)
        {
            MemoryStream PSEMDataStream;
            PSEMResponse PSEMResult = PSEMResponse.Ok;

            byte[] byaData;
            int    iReadAttempt = 0;
            bool   bRetry       = true;

            while (bRetry)
            {
                PSEMResult = m_PSEM.FullRead(usTableID, out byaData);

                if (PSEMResult == PSEMResponse.Ok)
                {
                    PSEMDataStream = new MemoryStream(byaData);
                    MeterTables.SavePSEMStream(usTableID, PSEMDataStream);
                }

                iReadAttempt++;

                if (iReadAttempt < 3 && (PSEMResult == PSEMResponse.Bsy || PSEMResult == PSEMResponse.Dnr))
                {
                    bRetry = true;
                    System.Threading.Thread.Sleep(1000);
                }
                else
                {
                    bRetry = false;
                }
            }

            return(PSEMResult);
        }