Esempio n. 1
0
        static void TagValueUpdated(ICommon.ITag sender, ICommon.TagValueUpdateEventArgs e)
        {
            LogixUDT logixUDT = sender as LogixUDT;

            if (logixUDT != null)
            {
                PrintStructure(logixUDT);
            }
        }
Esempio n. 2
0
        static void TagValueUpdated(ICommon.ITag sender, ICommon.TagValueUpdateEventArgs e)
        {
            LogixUDT udtTag = sender as LogixUDT;

            if (udtTag != null)
            {
                PrintStructure(udtTag);
            }
        }
Esempio n. 3
0
        static void TagValueUpdated(ICommon.ITag sender, ICommon.TagValueUpdateEventArgs e)
        {
            //Here we'll just display the name of the tag and that it was updated. If you
            //want to extract the value you'll have to cast it to the correct type. You
            //can do this by using a switch as shown below.
            Console.WriteLine("Tag " + e.Tag.Address + " Updated");

            switch (((LogixTag)sender).LogixType)
            {
            case LogixTypes.Bool:
                Console.WriteLine("New value is: " + ((LogixBOOL)sender).Value.ToString());
                break;

            case LogixTypes.Control:
                //The control tag is a lot more complicated, there is no way currently to know
                //which member was updated, so all you can do is say it was updated, we'll print
                //out one of the members though.
                Console.WriteLine("New value is: " + ((LogixCONTROL)sender).POS.ToString());
                break;

            case LogixTypes.Counter:
                //Same as the counter above, we'll just print out the ACC value
                Console.WriteLine("New ACC value is: " + ((LogixCOUNTER)sender).ACC.ToString());
                break;

            case LogixTypes.DInt:
                //Print out the value. DINT's are equivalent to int in .NET
                Console.WriteLine("New DINT value is: " + ((LogixDINT)sender).Value.ToString());
                break;

            case LogixTypes.Int:
                //An INT in a logix processor is more like a short in .NET
                Console.WriteLine("New INT value is: " + ((LogixINT)sender).Value.ToString());
                break;

            case LogixTypes.LInt:
                //LINT's are equivalent to long in .NET
                Console.WriteLine("New LINT value is: " + ((LogixLINT)sender).Value.ToString());
                break;

            case LogixTypes.Real:
                //REALs are single precision floats
                Console.WriteLine("New REAL value is: " + ((LogixREAL)sender).Value.ToString());
                break;

            case LogixTypes.SInt:
                //SINTs are signed bytes
                Console.WriteLine("New SINT value is: " + ((LogixSINT)sender).Value.ToString());
                break;

            case LogixTypes.String:
                //Strings are just like .NET strings, so notice how we can skip the .StringValue
                //member, since the .ToString() will automatically be called, which returns the
                //same value as .StringValue
                Console.WriteLine("New STRING value is: " + ((LogixSTRING)sender));
                break;

            case LogixTypes.Timer:
                //Timers again are like the CONTROL and COUNTER types
                Console.WriteLine("New Timer.ACC value is: " + ((LogixTIMER)sender).ACC.ToString());
                break;

            case LogixTypes.User_Defined:
                //The only way to get the value out of a UDT, PDT, or MDT is to define the
                //structure or know the member name you wish to read. We'll just print that
                //we know its a UDT, MDT, or PDT that changed.
                Console.WriteLine("The user defined type has changed");
                break;

            default:
                break;
            }
        }