How can I use set_param to set StartFcn from within a class method?

조회 수: 6 (최근 30일)
I am trying to use
set_param(app.Model,'StartFcn','app.registerListeners')
but the code when run inside StartFcn doesn't recognize 'app' or 'registerListeners'. 'app' is a parameter of the method this is called from, and 'registerListeners' is a public method in the same class.
I have tried:
  • Using a callback instead of putting the third argument in single quotes - says 'Invalid setting for block diagram parameter 'StartFcn'

답변 (1개)

Sai Sri Pathuri
Sai Sri Pathuri 2020년 5월 7일
Can you add the error being thrown when you use 'app.registerListeners(app)' as the third parameter?
If this is the error,
The class app has no Constant property or Static method named 'registerListeners'.
you may try to convert registerListeners function to static to use it as a start function. Also, try to check if app and model are in same folder or add the folder containing app to the MATLAB path.
  댓글 수: 6
Tommy
Tommy 2020년 5월 11일
While possibly not the best solution, is the following an option?
assignin('base', 'app', app);
set_param(app.Model, 'StartFcn', 'app.registerListeners');
Matthew Drummond-Stoyles
Matthew Drummond-Stoyles 2020년 5월 13일
Yes but that is basically the same as what I am currently doing (using a global variable). It works but everything I've read says global variables are never the answer if you want to write clean code. It's surprising that this hasn't been asked before, since I am only at the stage of trying to link the user interface to my Simulink model.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Programmatic Model Editing에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by