필터 지우기
필터 지우기

How to call user-defined C function having return and arguments with GetSet storage class

조회 수: 5 (최근 30일)
I am developing a Stateflow model where I need to call user defined C functions. The function prototype could be as follows
uint8 getset_Func(uint8 arg1, uint8 arg2, uint8 *arg3);
I have defined signal FuncCall with sorage class as GetSet and function header file is added in the code generation option.
I have added the option GetFunction as getset_$N and SetFunction option is empty.
But I am not able to use the signal in the stateflow. I have tried to use as var = FuncCall(temp1, temp2, &temp3);
This is giving error Unresolved function 'FuncCall'
How can I pass the arguments and return the result at the same time using GetSet storage class.

답변 (1개)

Mark McBroom
Mark McBroom 2024년 2월 17일
편집: Mark McBroom 2024년 2월 17일
You should use coder.ceval() to call external C code from Stateflow. https://www.mathworks.com/help/simulink/slref/coder.ceval.html
You would write code similar to the folloiwng but substituting the name of your .c and .h files.
arg1 = uint8(4);
arg2 = uint8(5)
arg3 = uint8(6);
var = uint8(8);
coder.updateBuildInfo('addSourceFiles','foo.c');
coder.cinclude('foo.h');
var = coder.ceval("getset_Func", arg1, arg2, arg3 );
  댓글 수: 1
Shijo
Shijo 2024년 2월 19일
편집: Shijo 2024년 2월 20일
Hi,
I am getting error while building the model
"Unresolved function 'coder.ceval in xx"
"Unresolved function 'coder.cinclude' in"
"Unresolved function 'coder.updateBuildInfo' in"
I ahve attached the screenshot
My objective is to create an input signal to the stateflow chart and the signal storage class as GetSet. So that the respective C function call should be invoked.

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

카테고리

Help CenterFile Exchange에서 Deployment, Integration, and Supported Hardware에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by