Пример #1
0
 protected void RaiseEventReceivedPrimaryMessage(SecsMessageBase primary)
 {
     if (ReceivedPrimaryMessage != null)
     {
         m_SyncContext.Post(Post_Event_ReceivedPrimaryMessage, new PrimarySecsMessageEventArgs(primary));
     }
 }
Пример #2
0
        void T3_Timer_Stop(uint transactionId, ref SecsMessageBase priMsg)
        {
            System.Diagnostics.Debug.Print("{0}: T3_Timer_Stop [TID:{1}]", m_ConnectProcedure, transactionId);
            T3Timer timer_t3 = (T3Timer)m_T3Hash[transactionId];

            priMsg = timer_t3.Message;
            timer_t3.Stop();
            m_T3Hash.Remove(transactionId);
        }
Пример #3
0
        private void TraceSmlLog(DateTime timeStamp, SecsMessageBase msg, TraceLogEventArgs.DirectionType direct)
        {
            string strSml = m_SmlBuilder.ToSmlString(msg);

            //keep log to file

            //fire event
            RaiseEventTraceLog(timeStamp, strSml, direct);
        }
Пример #4
0
        void T3_Timer_Start(SecsMessageBase msg)
        {
            System.Diagnostics.Debug.Print("{0}: T3_Timer_Start [TID:{1}]", m_ConnectProcedure, msg.TransactionId);
            T3Timer timer_t3 = new T3Timer(msg);

            timer_t3.Interval = m_T3_Interval * 1000;
            timer_t3.Elapsed += new System.Timers.ElapsedEventHandler(timer_t3_Elapsed);
            timer_t3.Start();
            m_T3Hash.Add(msg.TransactionId, timer_t3);
        }
Пример #5
0
        void Stop_T3_Timer(uint transactionId, ref SecsMessageBase priMsg)
        {
            System.Diagnostics.Debug.Print("Stop_T3_Timer [TID:{0}]", transactionId);

            T3Timer timer_t3 = (T3Timer)m_T3Hash[transactionId];

            priMsg = timer_t3.Message;
            timer_t3.Stop();
            m_T3Hash.Remove(transactionId);
        }
Пример #6
0
        void Start_T3_Timer(SecsMessageBase msg)
        {
            System.Diagnostics.Debug.Print("Start_T3_Timer [TID:{0}]", msg.TransactionId);

            T3Timer timer_t3 = new T3Timer(msg);

            timer_t3.Interval = m_T3_Interval * 1000;
            timer_t3.Elapsed += new System.Timers.ElapsedEventHandler(T3_Elapsed);
            timer_t3.Start();
            m_T3Hash.Add(msg.TransactionId, timer_t3);
        }
Пример #7
0
        public void Send(SecsMessageBase msg)
        {
            msg.DeviceId = m_DeviceId;
            bool isPrimary = ((msg.Function & 0x01) == 0x01);

            if (isPrimary) //primary message
            {
                msg.TransactionId = GetNextTransactionId();
                OnSendingPrimaryMessage(msg);
            }
            //should try { } catch {} for error
            byte[] data = m_MsgParser.GetBytes(msg);

            SendBytes(data);
            //RaiseEventSend(msg);
            TraceSmlLog(DateTime.Now, msg, TraceLogEventArgs.DirectionType.Sent);
        }
Пример #8
0
        private void ProcessInCommingMessage(byte[] data)
        {
            SecsMessageBase msg = m_MsgPaser.ToSecsMessage(data);

            if ((msg.Function & 0x01) == 1) //primary message
            {
                RaiseEventReceivedPrimaryMessage(msg);
            }
            else
            {
                SecsMessageBase priMsg = null;
                if (m_T3Hash.ContainsKey(msg.TransactionId))
                {
                    T3_Timer_Stop(msg.TransactionId, ref priMsg);
                }
                RaiseEventReceivedSecondaryMessage(priMsg, msg);
            }
        }
Пример #9
0
        public void ProcessInCommingMessage(byte[] data)
        {
            System.Diagnostics.Debug.Print("ProcessInCommingMessage {0} bytes ", data.Length);
            System.Diagnostics.Debug.Print("Hex : " + GetHexString(data));

            SecsMessageBase msg = m_MsgParser.ToSecsMessage(data);

            if ((msg.Function & 0x01) == 1) //primary message
            {
                RaiseEventReceivedPrimaryMessage(msg);
            }
            else
            {
                SecsMessageBase priMsg = null;
                if (m_T3Hash.ContainsKey(msg.TransactionId))
                {
                    Stop_T3_Timer(msg.TransactionId, ref priMsg);
                    System.Diagnostics.Debug.Print("RaiseEventReceivedSecondaryMessage :=" + msg.TransactionId);
                }
                RaiseEventReceivedSecondaryMessage(priMsg, msg);
            }
        }
Пример #10
0
 protected override void OnSendingPrimaryMessage(SecsMessageBase msg)
 {
     T3_Timer_Start(msg);
 }
Пример #11
0
 protected abstract void OnSendingPrimaryMessage(SecsMessageBase msg);