コード例 #1
0
        public bool ActiveTrigger()
        {
            for (int i = 0; i < triggers.Count; i++)
            {
                Object_Trigger trigger = triggers[i];
                trigger.back_data = trigger.this_data = -1;
            }

            int tmpStatus = _Status & STATUS.MONITOR;

            if (tmpStatus > 0)
            {
                //監控中,不顯示錯誤訊息,已開啟觸發直接回傳true
                if (checkConnect(true, false) == false)
                {
                    return(true);
                }
                if (checkTrigger(false, false) == false)
                {
                    return(true);
                }
            }
            else
            {
                if (checkConnect(true, true) == false)
                {
                    return(false);
                }
                if (checkTrigger(false, true) == false)
                {
                    return(false);
                }
            }

            try
            {
                if (_TriggerSource == TriggerSource.ALWAYS)
                {
                    _Status       |= STATUS.TRIGGER;
                    _ThreadTrigger = new Thread(checkTrigger); //啟動Thread
                    _ThreadTrigger.Start();
                }
                else
                {
                    axDBTriggerManager.Active = true;
                    //啟動觸發接收
                    //axDBTriggerManager.Triggers[3].AsCustom.SetState(true);
                }
                _Status |= STATUS.TRIGGER;
                return(true);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return(false);
        }
コード例 #2
0
        public Object_Trigger addTrigger(DATABUILDERAXLibLB.DBPlcDevice dtype, string no, TriggerType ttype)
        {
            Object_Trigger trigger = new Object_Trigger();

            trigger.DeviceType  = dtype;
            trigger.StrNo       = no;
            trigger.TriggerType = ttype;
            triggers.Add(trigger);
            return(trigger);
        }
コード例 #3
0
 public int ableTrigger(DATABUILDERAXLibLB.DBPlcDevice dtype, string no, bool enable)
 {
     for (int i = 0; i < triggers.Count; i++)
     {
         Object_Trigger trigger = triggers[i];
         if (trigger.DeviceType == dtype && trigger.StrNo == no)
         {
             trigger.Enable = enable;
             return(i);
         }
     }
     return(-1);
 }
コード例 #4
0
        public bool doMoniter()
        {
            for (int i = 0; i < triggers.Count; i++)
            {
                Object_Trigger trigger = triggers[i];
                trigger.back_data = trigger.this_data = -1;
            }

            if (doConnect() == false)
            {
                return(false);
            }
            if (ActiveTrigger() == false)
            {
                return(false);
            }
            _Status |= STATUS.MONITOR;
            return(true);
        }
コード例 #5
0
        private void checkTrigger()
        {
            int tmpStatus = _Status & (STATUS.TRIGGER);

            do
            {
                for (int i = 0; i < triggers.Count; i++)
                {
                    Object_Trigger trigger = triggers[i];
                    if (trigger.Enable == false)
                    {
                        continue;
                    }
                    trigger.checkTrigger(doReadDevice(trigger.DeviceType, trigger.StrNo));
                }
                Thread.Sleep(100);
                tmpStatus = _Status & (STATUS.TRIGGER);
            } while (tmpStatus > 0);
        }
コード例 #6
0
 public Object_Trigger addTrigger(DATABUILDERAXLibLB.DBPlcDevice dtype, string no, TriggerType ttype)
 {
     Object_Trigger trigger = new Object_Trigger();
     trigger.DeviceType = dtype;
     trigger.StrNo = no;
     trigger.TriggerType = ttype;
     triggers.Add(trigger);
     return trigger;
 }