Пример #1
0
        public void Update_TextBox(string text, int op)
        {
            PNode <tyShowOp> pnode = epool_show.Get();

            tyShowOp show_node = pnode.obj;

            show_node.op   = op;
            show_node.text = text;

            efifo_str_2_show.Input(show_node);
            event_txt_update.Set();
        }
Пример #2
0
        public COM()
        {
            efifo_raw_2_str.Init(tyRcvNode.RCV_NODE_NUM);                   //eFIFO能管理8K个元素
            for (int i = 0; i < tyRcvNode.RCV_NODE_NUM; i++)                //每个元素8K大小,一共64MB,如果收的比做得快,那只能丢失了
            {
                //第一次收到10个,不满攒住,第二次收到4096,则会溢出!
                tyRcvNode         rnode = new tyRcvNode(tyRcvNode.RCV_CACHE_SIZE + COM_BUFFER_SIZE_MAX);
                PNode <tyRcvNode> pnode = new PNode <tyRcvNode>();

                rnode.pnode = pnode;
                epool_rcv.Add(pnode, rnode);
                //Dbg.WriteLine("Add node:{0} to ePool", rnode.GetHashCode());
            }

            efifo_str_2_show.Init(tyShowOp.SHOW_NODE_NUM);                  //上面采用eFIFO搬运
            for (int i = 0; i < tyShowOp.SHOW_NODE_NUM; i++)
            {
                tyShowOp         snode = new tyShowOp();
                PNode <tyShowOp> pnode = new PNode <tyShowOp>();

                snode.pnode = pnode;
                epool_show.Add(pnode, snode);
                //Dbg.WriteLine("Add node:{0} to ePool", rnode.GetHashCode());
            }

            timer_AutoSnd           = new System.Timers.Timer();                                 //实例化Timer类,设置间隔时间为1000毫秒
            timer_AutoSnd.Elapsed  += new System.Timers.ElapsedEventHandler(timer_AutoSnd_Tick); //到达时间的时候执行事件
            timer_AutoSnd.AutoReset = true;                                                      //设置是执行一次(false)还是一直执行(true)
            timer_AutoSnd.Enabled   = false;                                                     //是否执行System.Timers.Timer.Elapsed事件
            timer_AutoSnd.Interval  = cfg.auto_send_inverval_100ms * 100;

            timer_RcvFlush           = new System.Timers.Timer();
            timer_RcvFlush.Elapsed  += new System.Timers.ElapsedEventHandler(timer_RcvFlush_Tick);
            timer_RcvFlush.AutoReset = false;
            timer_RcvFlush.Enabled   = false;
            timer_RcvFlush.Interval  = 500;
        }