Ejemplo n.º 1
0
        public CCTimer(ITagOp tagOp, string tagName,
                       string outTagName, int onLast = 1000,
                       string offOutTagName          = "", int offLast = 1000)
            : base(tagName)
        {
            TagOp     = tagOp;
            OnLastMs  = onLast;
            OffLastMs = offLast;
            Func <bool?> check = () => {
                if (tagOp != null)
                {
                    return(tagOp.ReadBit(tagName));
                }
                else
                {
                    return(null);
                }
            };

            Name      = $"{tagName}-{outTagName}:{onLast}-{offOutTagName}:{offLast}";
            CheckFunc = check;
            OnLastMs  = onLast;
            OffLastMs = offLast;

            ThreadStart = new ControlledThreadStart(RunCheck);

            ThreadController = new ThreadController(ThreadStart, null, Name);

            StartThread();

            OutTag         = outTagName;
            OffOutTag      = offOutTagName;
            OutChanged    += Task_OutChanged;
            OffOutChanged += Task_OffOutChanged;
        }