Ejemplo n.º 1
0
        public void Send(SecsMessageBase msg)
        {
            msg.DeviceId = m_DeviceId;

            bool isPrimary = msg.NeedReply && ((msg.Function & 0x01) == 0x01);

            if (isPrimary)
            {
                //get new transaction id
                msg.TransactionId = GetNextTransactionId();
                //register T3
                lock (m_Locker)
                {
                    if (m_SecsTransaction.ContainsKey(msg.TransactionId))
                    {
                        m_SecsTransaction.Remove(msg.TransactionId);
                    }
                    m_SecsTransaction.Add(msg.TransactionId, msg);
                }
            }


            //TraceSmlLog(msg, DirectionType.Sent);
            OnSending(msg, isPrimary);
            byte[] data = m_Parser.GetBytes(msg);
            ProtectedSend(data);
            //OnSent(msg);
            TraceSmlLog(msg, DirectionType.Sent);     //000783 Change Position, Send without Error then Log Show
        }
Ejemplo n.º 2
0
        public void Send(SecsMessageBase msg, SecondarySecsMessageEventHandler callback)
        {
            msg.DeviceId = m_DeviceId;

            bool isPrimary = msg.NeedReply && ((msg.Function & 0x01) == 0x01);

            if (isPrimary)
            {
                //get new transaction id
                msg.TransactionId = GetNextTransactionId();

                //register T3
                lock (m_Locker)
                {
                    if (m_SecsTransaction.ContainsKey(msg.TransactionId))
                    {
                        m_SecsTransaction.Remove(msg.TransactionId);
                    }
                    m_SecsTransaction.Add(msg.TransactionId, msg);
                }

                if (callback != null)
                {
                    if (c_CustomSecondaryMessageCallback.ContainsKey(msg.TransactionId))
                    {
                        c_CustomSecondaryMessageCallback.Remove(msg.TransactionId);
                    }
                    c_CustomSecondaryMessageCallback.Add(msg.TransactionId, callback);
                }
            }


            //TraceSmlLog(msg, DirectionType.Sent);
            OnSending(msg, isPrimary);
            byte[] data = m_Parser.GetBytes(msg);
            ProtectedSend(data);
            //OnSent(msg);
            TraceSmlLog(msg, DirectionType.Sent);
        }