示例#1
0
        public IRFIDReader CreateNewReader(ReaderDetails rdr)
        {
            try
            {
                IRFIDReader rdrObject;
                string KeyWord = rdr.IPAddress + "::" + rdr.PortNumber;
                if (dicReaderObjs.ContainsKey(KeyWord))
                    return dicReaderObjs[KeyWord];

                if (rdr.Vendor == ReaderType.MOTOROLA)
                    rdrObject = new MotorolaFX(rdr);
                else
                    rdrObject = new Impinj(rdr);
                dicReaderObjs.Add(KeyWord, rdrObject);
                return rdrObject;
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }
        public bool ConnectInternal(int tagReadFreqMS = 1000, bool tagReadLoop = true)
        {
            try
            {
                objReader = new MotorolaFX(mReaderInfo.IPAddress, mReaderInfo.PortNo, 0);
                if (objReader == null)
                {
                    throw new ApplicationException("Failed to connect to reader, please check provided reader setting and actual reader connection.");
                }

                mReaderInfo.IsOnline = true;
                mTagReadFreqMS = tagReadFreqMS;
                bool result = objReader.Connect();

                if (result && tagReadLoop)
                {
                    LoggerAgent.Debug(GetReaderInfoString() + " Registering timer for Tag read.");
                    tagReadPollTimer = new System.Timers.Timer(mTagReadFreqMS);
                    tagReadPollTimer.Elapsed += TagReadPollTimer_Elapsed;
                    tagReadPollTimer.Start();
                    StartTagReading();
                }

                return result;
            }
            catch (Exception ex)
            {
                LoggerAgent.Error("ReaderId: " + mReaderInfo.ReaderId.ToString(), ex);
                mReaderInfo.IsOnline = false;
                return false;
            }
        }