How can I get the port number of a StateFlow input given it's handle programatically?
    6 views (last 30 days)
  
       Show older comments
    
    Eric Bender
 on 22 Jul 2021
  
    
    
    
    
    Commented: David Berggren
 on 6 Feb 2025
            I have the handle of a StateFlow input from a previous find result.  I'm trying to get the port number for that StateFlow input.   I've been using the sf('get',<handle num>,<field name>) command for other fields like 'data.name', 'data.scope', etc. but can't see where I can get the port number.  Can anyone help me with this?

1 Comment
  David Berggren
 on 6 Feb 2025
				chart = find(sfroot, '-isa', 'Stateflow.Chart', 'Name', 'YourChartName');
inputs = chart.find('-isa', 'Stateflow.Data', '-and', 'Scope', 'Input');
for i = 1:numel(inputs)
    fprintf('Port %d: %s\n', inputs(i).Port, inputs(i).Name);
end
Accepted Answer
  Jorge Calvo
    
 on 5 Oct 2021
        It sounds like you are working with Stateflow.Data objects, where you have the ID property and want to find the Port property. In that case, you can do this:
>> x = find(sfgco,Id=301);
>> x.Port
4
4 Comments
  Jorge Calvo
    
 on 8 Oct 2021
				
      Edited: Jorge Calvo
    
 on 8 Oct 2021
  
			You can use sfroot instead of sfgco. That will look at all the Stateflow charts you have loaded.
>> x = find(sfroot,Id=301);
For more information, you can check out: https://www.mathworks.com/help/stateflow/api/overview-of-the-stateflow-api.html. 
More Answers (0)
See Also
Categories
				Find more on Decision Logic in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!