RobotStudio event

How to fix the problem in filtering the signals in PC SDK application?

vikram6892
edited March 2019 in Developer Tools
I would like to filter out some set of signals (e.g. Digital Input) from a profinet device using signal Filter enum IOFilterTypes. But I am not getting the correct signal  from the correct unit.



Answers

  • scottMHA
    scottMHA
    edited April 2019
    SignalCollection Signals = MainController.IOSystem.GetSignals(IOFilterTypes.Digital).Where(o => o.Type == SignalType.DigitalInput) as SignalCollection;
    Should be able to use linq to filter these out. Not sure if it works with a collection, you may have to parse through signals individually. Alternatively use the code below.

    SignalCollection Signals = MainController.IOSystem.GetSignals(IOFilterTypes.All);
    
                foreach(Signal signal in Signals)
                {
                    if (signal.Type == SignalType.DigitalInput)
                    {
                     // Do something here to inputs
                    }
                }

  • Micky
    Micky ✭✭✭

    Hello,
    I think you have to use a binary OR (|) instead of a binary AND (&) to be able to use several filter settings.

    var Signals = <span>MainController.</span>IOSystem.GetSignals(<b>IOFilterTypes.Digital | IOFilterTypes.Input</b>);

    Best regards
    Micly