Пример #1
0
        private void reconnect()
        {
            Thread.Sleep(20000);   //检测线程启动延时
            while (!form1.IsClose)
            {
                for (int i = 0; i < form1.Xtreaderlist.Count; i++)  //  XReaderInitList是所有已注册的reader
                {
                    XtiveReaderInitClass CurInitR = form1.Xtreaderlist[i];
                    RFIDInterface        CurR     = CurInitR.reader;

                    //Test
                    //bool flag = CurR.Check();
                    //System.Console.WriteLine(CurR.ip + " " + CurR.Check() + CurR.ReConnectCount);
                    //if (!CurR.Check() && CurR.ReConnectCount < CurInitR.errCountOfLoadTagData)
                    //if (!flag)

                    if (!CurR.Check())
                    {
                        if (CurR.ReConnectCount <= CurInitR.errCountOfLoadTagData || reconnectCntSet.Contains(CurR.ReConnectCount))
                        {
                            Thread tipThread = new Thread(new ParameterizedThreadStart(reconnectTips));
                            tipThread.IsBackground = true;
                            tipThread.Start(CurR);

                            CurR.ReConnect(CurR.ip);
                        }
                        else if (!(bool)AlertState[CurR.ip])
                        {
                            Thread connectThread = new Thread(new ParameterizedThreadStart(reconnectWait));
                            connectThread.IsBackground = true;
                            //connectThread.Priority = ThreadPriority.Lowest;
                            connectThread.Start(CurR);

                            CurR.ReConnectCount++;
                        }
                        else
                        {
                            CurR.ReConnectCount++;
                        }
                    }
                }
                Thread.Sleep(15000); //检测频率15s
            }
        }
Пример #2
0
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            EPRuntime epRuntime = prefilter.getEPRuntime();

            while (ismonitor)
            {
                if (this.Xtreaderlist.Count > 0)
                {
                    foreach (XtiveReaderInitClass curInitR in Xtreaderlist) //  XReaderInitList是所有已注册的reader
                    {
                        RFIDInterface curR = curInitR.reader;

                        if ((bool)reconnectThread.AlertState[curR.ip] || !curR.Check())
                        {
                            continue;       //检测跳过
                        }

                        bool bResult = curR.LoadTagData(ref xtaglist, ref recordcount);

                        if (recordcount > 0)
                        {
                            for (int i = 0; i < recordcount; i++)
                            {
                                rfiddata.XtiveTag tag = xtaglist[i];
                                epRuntime.SendEvent(tag); //发送事件到预过滤处理引擎
                            }
                        }
                        else
                        {
                            //strResult = "No Tag! \r\n";
                        }
                    }
                }
                Thread.Sleep(this.readFre); //读取数据频率
            }
        }