Help with matlab C eval function

Hello,
I am trying to pass a pointer structure and normal variables using C eval. Matlab throws error, cannot parse variables to uint8 from double. I am not sure where this type casting is happening. Any help is appreciated.
uint8_t checkcurrentk(float ILout, ila* obj) // C function
Vout=(coder.ceval('checkcurrent',IA,coder.ref(ila)));
typdef struct s_AIndCurr
{
float ILa1
float ILa2
float ILS3
float ILScal
} Ilas
extern Ilas ila;

Answers (1)

Satwik
Satwik on 16 Feb 2024
Ensure that the function name you use in “coder.ceval” matches the actual function name. In the code you provided, the C function is named “checkcurrentk” and the function call in the “coder.ceval” is “checkcurrent”. This should match unless you have a specific reason for the discrepancy.
Additionally, the error message indicates that you might be passing a “double” to a function that expects a “uint8”. You should check all instances of calling “coder.ceval” and ensure that the types of all arguments match the expected types in the C function declarations.
Addressing these points should resolve the issue. If the issue persists, please provide the complete code to help diagnose the issue further.

Categories

Tags

Asked:

on 10 Feb 2021

Answered:

on 16 Feb 2024

Community Treasure Hunt

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

Start Hunting!