How to call a function that uses a function pointer argument from Simulink?
    10 次查看(过去 30 天)
  
       显示 更早的评论
    
I want to load the following C code function as the C -Caller in the simulink.
There is no build error, but I can't find the function in the Function name.
I think, it can't recognize Void (*func) (CONST IF_AppDiagStatus_t), one of the argument of the function. (Use of function pointer)
Is there a way to solve this?
********************************************************************************************************************************************
void IF_AppDiagSetFuncForGetDiagStatus(void(*func)(CONST IF_AppDiagStatus_t), CONST App_ID_e appID)
{
    if (appID < APP_ID_END)
    {
        appDiagGetFunc[appID].getDiagStatusFunc = func;
    }
}

回答(1 个)
  Benjamin Thompson
      
 2024-1-21
        Simulink only supports certain data types as inputs to blocks:  integers, double, single, busses, enumerations, or arrays of those basic types.  How would Simulink know how to pass a memory address pointer to your block as an input?  If your C code defines an array of C functions in appDiagGetFunc, can your block use an integer input for appID?  Then Simulink can pass an integer to the C Caller block to select which function in appDiagGetFunc to call.
2 个评论
  Benjamin Thompson
      
 2024-1-27
				If your question has been answered please accept it.  If you would like more help with the problem please provide more information and the Community can suggest different approaches.
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Simulink Functions 的更多信息
			
	产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


