sfunction builder function through command line

7 visualizzazioni (ultimi 30 giorni)
Pika
Pika il 2 Mag 2012
Risposto: Sanket il 15 Apr 2019
Is there a way to build from the sfunction builder via command line instead of opening the dialog box and pressing "build"?

Risposte (4)

Kaustubha Govind
Kaustubha Govind il 2 Mag 2012
See this solution for the command-line API.
Try this code since there seems to be an error in the code from the solution:
blkNames = find_system(bdroot,'lookundermasks','all','BlockType','S-Function');
for blkIdx = 1:numel(blkNames)
blkHandle = get_param(blkNames{blkIdx}, 'Handle');
appdata = sfunctionwizard(blkHandle,'GetApplicationData');
appdata = sfunctionwizard(blkHandle,'Build',appdata);
end
Also, make sure that the model is open when the code is run.
  4 Commenti
Pika
Pika il 6 Mag 2012
yes i do. the error i get is out of the second command line listed. It says Attempt to reference field of non-structure array.
I know how to create a structure array with dot notation but why was blkHandle not automatically created as a structure array when first command line is used? mine apppears to be as a cell array
Kaustubha Govind
Kaustubha Govind il 7 Mag 2012
Not sure why the solution assumes that find_system returns a structure. It does indeed return a cell-array of block names as you have observed. Try the code I edited and posted in my answer.

Accedi per commentare.


arun kumar
arun kumar il 20 Mar 2015
can i also write this appdata back to the s-function block. or is there any other way i can modify the s-function inports and outports from the command line? ofcourse i can modify the appdata structure but then how do i feed this information back to the s-function?

kiyoko
kiyoko il 24 Lug 2018
sfunctionwizard is undocumented and not officially supported. If you are looking for command-line s-function authoring functionality, then the legacy code tool is designed for this.

Sanket
Sanket il 15 Apr 2019
appdata = sfunctionwizard(blkHandle,'GetApplicationData') is not working for 2017b, any alternate solution?
>> appdata = sfunctionwizard(gcb,'GetApplicationData')
No method 'setBlockHandle' with matching signature found for class
'com.mathworks.toolbox.simulink.sfunbuilder.SFunctionBuilder'.
Error in sfunctionwizard

Categorie

Scopri di più su Simulink Functions in Help Center e File Exchange

Tag

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by