protected void RaiseEventReceivedPrimaryMessage(SecsMessageBase primary) { if (ReceivedPrimaryMessage != null) { m_SyncContext.Post(Post_Event_ReceivedPrimaryMessage, new PrimarySecsMessageEventArgs(primary)); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); } }
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); } }
protected override void OnSendingPrimaryMessage(SecsMessageBase msg) { T3_Timer_Start(msg); }
protected abstract void OnSendingPrimaryMessage(SecsMessageBase msg);