示例#1
0
        public bool ProcessAndAddMessageToQueue(byte[] RecvBytes, TcpClient Client)
        {
            bool        Re        = false;
            bool        CheckData = false;
            TcpMeasType MeasType  = TcpMeasType.MEAS_TYPE_NONE;
            int         MeasCode  = 0;

            //根据制定的协议校验数据
            //..........
            CheckData = true;

            //分析数据,把数据添加到队列m_TcpMeas
            if (CheckData)
            {
                TcpMeas TempMeas = new TcpMeas();
                TempMeas.Client   = Client;
                TempMeas.MeasType = MeasType;
                TempMeas.MeasCode = MeasCode;
                TempMeas.Param    = System.Text.Encoding.ASCII.GetBytes("Just for test !");

                if (TempMeas != null)
                {
                    m_RecvMeasQueue.Enqueue(TempMeas);
                }

                Re = true;
            }

            return(Re);
        }
示例#2
0
        public void TcpProcessClientMeasThreadFunc()
        {
            while (true)
            {
                if (!SystemRunning)
                {
                    break;
                }

                if (m_MyTcpClient != null)
                {
                    try
                    {
                        lock (this)
                        {
                            //异步的方式处理所有消息
                            while (m_MyTcpClient.m_RecvMeasQueue.Count > 0)
                            {
                                TcpMeas meas = m_MyTcpClient.m_RecvMeasQueue.Dequeue();
                                m_SyncContext.Post(ProcessClientMeassage, meas);
                            }
                        }
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
        }
示例#3
0
        /*采用SynchronizationContext方法*****************************************/
        private void ProcessClientMeassage(object Meassage)
        {
            TcpMeas meas = (TcpMeas)Meassage;

            switch (meas.MeasType)
            {
            case TcpMeasType.MEAS_TYPE_ARM:
                break;

            default: break;
            }
        }
示例#4
0
        /*采用SynchronizationContext方法*****************************************/
        private void ProcessServerMeassage(object Meassage)
        {
            TcpMeas meas = (TcpMeas)Meassage;

            if (meas != null)
            {
                switch (meas.MeasType)
                {
                case TcpMeasType.MEAS_TYPE_MIS:
                    break;

                case TcpMeasType.MEAS_TYPE_PLC:
                    break;

                default: break;
                }
            }
            Debug.WriteLine(Encoding.ASCII.GetString(meas.Param, 0, meas.Param.Length));
        }