MATLAB Answers

How can I define a variable in a bus as pointer ?

3 views (last 30 days)
Hello,
I'm in some trouble with my variable definition. I have a structure that I would like to define with the Bus Editor. My structure is like :
typedef struct
{
uint16 a1;
uint16 *a2;
uint32 b1;
uint32 b2;
} structstruct;
I don't know how to define the a2 variable who is a pointer.
Could someone help me ?
Antoine

Accepted Answer

Mark McBroom
Mark McBroom on 29 Apr 2018
Edited: Mark McBroom on 29 Apr 2018
Hi Antoine,
The idea is to use a data type that Simulink supports in place of the pointer. Since pointers are 64 bits long, use a Simulink data type that is 64 bits long. Then, in the external C code, convert the datatype used by Simulink to/form a unit16*. The best approach is to use a 64-bit integer in Simulink, since most C compilers will allow you to cast an integer to a pointer. But this requires the Fixed Point Toolbox. If you have a license for this, the set the data type of the variable to be ufix(64). If you don't have a Fixed Point license, then you can select a built-in Simulink data type that is 64 bits long, for example double or uint32[2]. C compilers won't let you cast these variables to/from a pointer, so you will need to create a temporary variable in your external code that is of type uint16* and then memcpy between the variable in the Simulink bus and the local uint16* variable.

More Answers (1)

Mark McBroom
Mark McBroom on 7 Apr 2018
This is not possible in Simulink. Simulink does not support pointers. So that raises the question, why do you need a pointer in the structure? This question most often comes up when people are interfacing with external C code. If this is the case, there are some tricks you can play in Simulink that usually involve defining the type to instead by a 64-bit integer using the fixed point blockset.
  2 Comments
bilal erol
bilal erol on 11 Apr 2020
have you solved your problem which is related with using pointer in simulink?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!