Пример #1
0
        /// <summary>
        /// 主站控制命令,召唤命令
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void checkGetMessage_MasterInterrogationArrived(object sender, MasterCommmadEventArgs e)
        {
            try
            {
                appMessageManager.UpdateReceiveSequenceNumber(e.MasterCMD.APCI.TransmitSequenceNumber,
                                                              e.MasterCMD.APCI.ReceiveSequenceNumber);
                //同步释放召唤等待
                var m = eventTypeIDManager.GetEventProcess((TypeIdentification)e.MasterCMD.ASDU.TypeId);
                if (m != null)
                {
                    m.Event.Set();
                }
                switch ((CauseOfTransmissionList)e.MasterCMD.ASDU.CauseOfTransmission1)
                {
                case CauseOfTransmissionList.ActivationACK:
                {
                    BeginInvokeUpdateHistory(e.MasterCMD.FrameArray, e.MasterCMD.FrameArray.Length, "从站发送:I帧:召唤激活确认");
                    break;
                }

                case CauseOfTransmissionList.ActivateTermination:
                {
                    BeginInvokeUpdateHistory(e.MasterCMD.FrameArray, e.MasterCMD.FrameArray.Length, "从站发送:I帧:召唤结束");

                    SendSupervisoryFrame((ushort)(appMessageManager.RealReceiveSequenceNumber));
                    break;
                }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "checkGetMessage_MasterInterrogationArrived");
            }
        }
Пример #2
0
 /// <summary>
 /// 主站控制命令,初始化命令
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void checkGetMessage_MasterInitializeArrived(object sender, MasterCommmadEventArgs e)
 {
     try
     {
         appMessageManager.UpdateReceiveSequenceNumber(e.MasterCMD.APCI.TransmitSequenceNumber,
                                                       e.MasterCMD.APCI.ReceiveSequenceNumber);
         //同步释放相应事件
         var m = eventTypeIDManager.GetEventProcess((TypeIdentification)e.MasterCMD.ASDU.TypeId);
         if (m != null)
         {
             m.Event.Set();
         }
         appMessageManager.UpdateReceiveSequenceNumber(e.MasterCMD.APCI.TransmitSequenceNumber,
                                                       e.MasterCMD.APCI.ReceiveSequenceNumber);
         BeginInvokeUpdateHistory(e.MasterCMD.FrameArray, e.MasterCMD.FrameArray.Length, "从站发送:I帧:主站初始化:");
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "checkGetMessage_MasterInitializeArrived");
     }
 }
Пример #3
0
        /// <summary>
        /// 主站初始化,时间同步命令
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void checkGetMessage_MasterTimeArrived(object sender, MasterCommmadEventArgs e)
        {
            try
            {
                //同步释放相应事件
                var m = eventTypeIDManager.GetEventProcess((TypeIdentification)e.MasterCMD.ASDU.TypeId);
                if (m != null)
                {
                    m.Event.Set();
                }
                appMessageManager.UpdateReceiveSequenceNumber(e.MasterCMD.APCI.TransmitSequenceNumber,
                                                              e.MasterCMD.APCI.ReceiveSequenceNumber);

                BeginInvokeUpdateHistory(e.MasterCMD.FrameArray, e.MasterCMD.FrameArray.Length, "从站发送:I帧:时间同步:");
                MakeLogMessage(sender, "", "时间同步应答" + e.MasterCMD.ToString(), LogType.Time);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "checkGetMessage_MasterTimeArrived");
            }
        }