public void WriteTag(Logix.Tag tag)
 {
     lock (mSyncLock) {
         int result = mPLC.WriteTag(tag);
         if (result != Logix.ResultCode.E_SUCCESS) {
             throw new LogixTagException("An error occured while trying to write tag.", tag, result);
         }
     }
 }
        public void ReadTag(Logix.Tag tag)
        {
            lock (mSyncLock) {
                int result = mPLC.ReadTag(tag);
                if (result != Logix.ResultCode.E_SUCCESS) {
                    throw new LogixTagException("An error occured while trying to read tag.", tag, result);
                }

                if (tag.QualityCode != Logix.ResultCode.QUAL_GOOD) {
                    throw new LogixTagException("Logix.Tag quality error.", tag, tag.QualityCode);
                }
            }
        }
        public void RemoveTagFromGroup(Logix.Tag tag, int interval)
        {
            lock (mSyncLock) {

                Logix.TagGroup group = mTagGroups[interval];
                group.RemoveTag(tag);
                if (group.Tags.Count == 0) {
                    //just leave the timer
                    //Timer timer = new Timer(OnTimerElapsed, group, 0, interval);
                    //mTimers.Add(timer);
                    //mTagGroups.Add(interval, group);
                }
            }
        }
 public void CheckTag(Logix.Tag tag, int interval)
 {
     if (mTagGroups.ContainsKey(interval)) {
         Logix.TagGroup group = mTagGroups[interval];
         group.AddTag(tag);
     } else {
         Logix.TagGroup group = new Logix.TagGroup(mPLC);
         group.AddTag(tag);
         Timer timer = new Timer(OnTimerElapsed, group, 0, interval);
         mTimers.Add(timer);
     }
 }
 public LogixTagException(string msg, Logix.Tag tag, int errorCode)
     : base(msg)
 {
     this.ErrorCode = errorCode;
     this.Tag = tag;
 }