Forum Migration Notice
We're transitioning to a more modern community platform by the end of this year. Learn about the upcoming changes and what to expect.

GetSignal filter by unit not working

Hi I'm trying to get all signals belonging to a specific unit, but it returns all signals in the system.

            IOFilterTypes aSigFilter = IOFilterTypes.Digital & IOFilterTypes.Unit;
            foreach (Signal sig in unit.Controller.IOSystem.GetSignals(aSigFilter, unit.Name))
            {
                    Console.WriteLine(sig.Name + " = " + sig.Value);
            }

Am I doing something wrong?
Latest RW and PCSDK. 
Systemintegrator - Web / C# / Rapid / Robotstudio

If I helped, please press Vote Up  :smile:

☑️2024 - RobotStudio® User Group

Comments

  • Hi, this filtering feature still dosent work.
    It feel's like the performance would have been alot better in my app if I didn't get all the signals in the system. 
    Systemintegrator - Web / C# / Rapid / Robotstudio

    If I helped, please press Vote Up  :smile:

    ☑️2024 - RobotStudio® User Group
  • Markus Näslund
    edited March 2022
    Hi,

    When adding two filters together, you should use the bitwise or flag (|).
    If you use bitwise and (&) it will in this case result in 0, which I suppose means no filter, and that is why you get all signals.

    Try this instead
                IOFilterTypes aSigFilter = IOFilterTypes.Digital | IOFilterTypes.Unit;
                foreach (Signal sig in unit.Controller.IOSystem.GetSignals(aSigFilter, unit.Name))
                {
                        Console.WriteLine(sig.Name + " = " + sig.Value);
                }
    //Markus Näslund