Пример #1
0
        public void AddMsgToQueue(uint ID, byte[] Msg)
        {
            TCANDATA CanMsg = new TCANDATA(Msg.Length);

            CanMsg.ID = ID;
            Array.Copy(Msg, CanMsg.Data, Msg.Length);
            _MsgQueue.Enqueue(CanMsg);
        }
Пример #2
0
        public void AddMsgToQueue(uint ID, byte[] Msg)
        {
            //=========================
            TCANDATA CanData = new TCANDATA(Msg.Length);

            CanData.ID      = ID;
            CanData.DataLen = Msg.Length;
            Array.Copy(Msg, CanData.Data, Msg.Length);

            _MsgQueue.Enqueue(CanData);
        }
Пример #3
0
        //线程执行函数
        private void DataHandlerMethod()
        {
            TCANDATA MsgData = new TCANDATA();

            while (!cancelTokenSource.IsCancellationRequested)
            {
                Thread.Sleep(1);

                if (_MsgQueue.TryDequeue(out MsgData))
                {
                    //一个线程在对模块的属性进行处理,另外的线程在读取模块的属性,
                    //需要进行同步处理,如获取马达位置属性时,不锁定则获取位置错误

                    //lock (SyncObject)
                    //{
                    DoMsg(MsgData.Data);
                    //}
                }
            }
        }