MATLAB Answers

0

when to use coder.ceval and Legacy code tool ?

Hello,
I am having the interface definitions in c++ files and I would like to use that interfaces in Matlab simulink. So, please suggest whether better to use coder.ceval or legacy code tool ? and how the both are different from each other.

  0 Comments

Sign in to comment.

Products


Release

R2018b

1 Answer

Answer by Raunak Gupta on 30 Sep 2019
 Accepted Answer

Solution:
Hi,
The Legacy Code Tool is generally used for integrating the C or C++ function into Simulink. The functions are generally S-functions which need to be inserted as a Simulink Block in the model. Whereas using coder.ceval and other equivalent commands we can call external C/C++ functions into MATLAB environment. For this Code Generation is used while calling the C/C++ function. It is suggested to use Legacy Code Tool while working with Simulink Models and if working on Building interface between C/C++ code to MATLAB, coder.ceval can be used.
For more info about interfacing C/C++ function into MATLAB you may refer to the following:

  1 Comment

Hi,
Thanks for your answer.
I am using coder.ceval to call the C functions in matlab. Just I would like to know how to accesss the enum from the c functions. when I am trying to call the enum as shown below it is throwin the below error. Could you please provide me the solution for this.
Cannot assign 'a' from 'coder.ceval' because the type and size of 'a' are not known. To fix, preinitialize 'a'.
**********external c header file**********
typedef enum {
DISABLED = 0,
ENABLED = 1,
ERROR = 11,
UNDEFINED = 10,
}State;
*************Matlab function***************
function a = b
a = coder.ceval('FindState');

Sign in to comment.