Ejemplo 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 void ReadDataBlock(byte[] data, GXReplyData reply)
 {
     ReadDLMSPacket(data, reply);
     lock (Media.Synchronous)
     {
         while (reply.IsMoreData)
         {
             if (reply.IsStreaming())
             {
                 data = null;
             }
             else
             {
                 data = Client.ReceiverReady(reply.MoreData);
             }
             ReadDLMSPacket(data, reply);
             if (Trace > TraceLevel.Info)
             {
                 //If data block is read.
                 if ((reply.MoreData & RequestTypes.Frame) == 0)
                 {
                     Console.Write("+");
                 }
                 else
                 {
                     Console.Write("-");
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Read data block from the device.
        /// </summary>
        /// <param name="data">data to send</param>
        /// <param name="text">Progress text.</param>
        /// <returns>Received data.</returns>
        internal void ReadDataBlock(byte[] data, string text, GXReplyData reply)
        {
            lock (balanceLock)
            {
                log(text);
                ReadDLMSPacket(data, reply);

                if (OnDataReceived != null)
                {
                    OnDataReceived(this, reply);
                }
                if (reply.IsMoreData)
                {
                    while (reply.IsMoreData)
                    {
                        data = client.ReceiverReady(reply.MoreData);
                        if ((reply.MoreData & RequestTypes.Frame) != 0)
                        {
                            log("Get next frame.");
                        }
                        else
                        {
                            log("Get Next Data block.");
                        }
                        //GXLogWriter.WriteLog(text, data);
                        ReadDLMSPacket(data, reply);
                        if (OnDataReceived != null)
                        {
                            OnDataReceived(this, reply);
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
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>
        internal void ReadDataBlock(byte[] data, string text, int multiplier, GXReplyData reply)
        {
            lastTransaction = DateTime.Now;
            GXLogWriter.WriteLog(text, data);
            if (parent.OnTrace != null)
            {
                parent.OnTrace(parent, text + "\r\n<-\t" + DateTime.Now.ToLongTimeString(), data, 0, LogFile);
            }
            ReadDLMSPacket(data, reply);

            if (OnDataReceived != null)
            {
                OnDataReceived(this, reply);
            }
            if (reply.IsMoreData)
            {
                if (reply.TotalCount != 1)
                {
                    NotifyProgress(text, 1, multiplier * reply.TotalCount);
                }
                while (reply.IsMoreData)
                {
                    data = client.ReceiverReady(reply.MoreData);
                    if ((reply.MoreData & RequestTypes.Frame) != 0)
                    {
                        GXLogWriter.WriteLog("Get next frame.");
                    }
                    else
                    {
                        GXLogWriter.WriteLog("Get Next Data block.");
                    }
                    if (parent.OnTrace != null)
                    {
                        parent.OnTrace(parent, "<-\t" + DateTime.Now.ToLongTimeString(), data, 0, LogFile);
                    }
                    GXLogWriter.WriteLog(text, data);
                    ReadDLMSPacket(data, reply);
                    if (OnDataReceived != null)
                    {
                        OnDataReceived(this, reply);
                    }
                    if (reply.TotalCount != 1)
                    {
                        NotifyProgress(text, reply.Count, multiplier * reply.TotalCount);
                    }
                }
            }
        }
Ejemplo n.º 4
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>
 internal void ReadDataBlock(byte[] data, string text, int multiplier, GXReplyData reply)
 {
     if (parent.InactivityMode == InactivityMode.ReopenActive && media is GXSerial && DateTime.Now.Subtract(connectionStartTime).TotalSeconds > 40)
     {
         parent.Disconnect();
         parent.InitializeConnection();
     }
     GXLogWriter.WriteLog(text, data);
     ReadDLMSPacket(data, reply);
     if (OnDataReceived != null)
     {
         OnDataReceived(this, reply);
     }
     if (reply.IsMoreData)
     {
         if (reply.TotalCount != 1)
         {
             NotifyProgress(text, 1, multiplier * reply.TotalCount);
         }
         while (reply.IsMoreData)
         {
             data = client.ReceiverReady(reply.MoreData);
             if ((reply.MoreData & RequestTypes.Frame) != 0)
             {
                 GXLogWriter.WriteLog("Get next frame: ", data);
             }
             else
             {
                 GXLogWriter.WriteLog("Get Next Data block: ", data);
             }
             ReadDLMSPacket(data, reply);
             if (OnDataReceived != null)
             {
                 OnDataReceived(this, reply);
             }
             if (reply.TotalCount != 1)
             {
                 NotifyProgress(text, reply.Count, multiplier * reply.TotalCount);
             }
         }
     }
 }
Ejemplo n.º 5
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 void ReadDataBlock(byte[] data, GXReplyData reply)
 {
     ReadDLMSPacket(data, reply);
     while (reply.IsMoreData)
     {
         data = Client.ReceiverReady(reply.MoreData);
         ReadDLMSPacket(data, reply);
         if (!Trace)
         {
             //If data block is read.
             if ((reply.MoreData & RequestTypes.Frame) == 0)
             {
                 Console.Write("+");
             }
             else
             {
                 Console.Write("-");
             }
         }
     }
 }