Why can´t i do this? (C-Code doubt)

Hello,
If i have as a S-Function parameter:
variable1 (with value 0)
And i have an input (u) and an output (y). I want to do this:
double variable3 = 0,*var,*input,*last;
input = &u[0]; /* u[0] is the Simulink block input */
last = &variable1;
var = &variable3;
*var = *input - *last;
if (variable3 > 0){
y[0] = *input; /* y[0] is the Simulink block output */
*last = *input; ---> This line doesn´t work!, Why?
}
else
y[0]=0;
I´m trying to implement this code in a S-Function.
Thanks!

3 Kommentare

Jan
Jan am 7 Okt. 2012
What does "doesn'twork" mean? Do you get a warning from the compiler? If so, which one?
Enrique
Enrique am 7 Okt. 2012
I don´t get any error or warning. The problem is the variable *last, it doesn´t get the value of *input.
Friedrich
Friedrich am 8 Okt. 2012
Are you sure you get in the if branch? maybe add some ssPrintf statements to get some runtime debugging outputs.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Jan
Jan am 7 Okt. 2012

0 Stimmen

Is u a const variable, while last is not?

3 Kommentare

How can i change the data type of last?
I try to do:
double * const last;
But i have this error:
error C2166: l-value specifies const object
In the line:
last = &variable1;
Thanks!
Jan
Jan am 8 Okt. 2012
Nope, than the const qualifier is most likely not the problem.
How do you check, that *last is not assigned correctly? I'm convinced that the line does assign the value. Therefore I assume, that you expect the changes on the wrong place.
Enrique
Enrique am 8 Okt. 2012
I see the values creating an another output and this output linked to a "To Workspace" block.
The variable *last always is 0.
Thanks!

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Simulink finden Sie in Hilfe-Center und File Exchange

Produkte

Tags

Gefragt:

am 7 Okt. 2012

Community Treasure Hunt

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

Start Hunting!

Translated by