PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Übergabe von float variable und structure type by reference



HaWe
02.12.2017, 20:06
hallo,
ich komme nicht weiter:

ich habe eine Structure (hoffentlich richtig initialisiert):

typedef struct {
float val[3] = {-99.9, -99.9, -99.9};
uint32_t tst[3] = {0, 0, 0};
} vlog;


und mehrere dieser Stuctures als globale Variablen:


// editiert:
vlog t1, h1,
t2, h2,
t3, h3,
t4, h4,
p1, q1;

Nun möchte ich von meiner loop() aus einen Sensorwert ftmp nach dem anderen einlesen und ihn dann an eine Funktion übergeben, die die arrays in der zugehörigen structure aktualisiert
- aber wie macht man das richtig mit Pointern und Adressen und Referenzieren und Dereferenzieren...?


void logval( float f, vlog v) { // <<< sooo gehts nicht! :-/
v.val[1]=f;
v.tst[1]=millis();
// usw usf...
}

void loop() {
//...
float ftmp = (float)analogRead(A0);
logval(ftmp, t1); // <<< sooo gehts auch nicht! :-/

float ftmp = (float)analogRead(A1);
logval(ftmp, &h1); // <<< sooo gehts auch nicht! :-/
//...
}


Ich kriegs einfach nicht hin....

- - - Aktualisiert - - -


EDIT:
ich fürchte, da war ein c+p error drin.

Ich probiere jetzt die Funktion

void logval( float f, vlog &v) {
///
}

und den Aufruf

logval(ftmp, t1);

- - - Aktualisiert - - -

EDIT2:

Jawoll, so geht's! :D 8)

Sisor
02.12.2017, 20:08
logval((float)analogRead(A0), &t1);
ist gleichbedeutend mit
logval((float)analogRead(A0), t1[0]);

HaWe
02.12.2017, 20:30
logval((float)analogRead(A0), &t1);
ist gleichbedeutend mit
logval((float)analogRead(A0), t1[0]);

danke, ich glaube ich werde das nie auf Anhieb richtig machen.
Immerhin geht es jetzt so wie ich zufällig drauf gekommen bin und im EDIT2 grade eben beschrieben habe :oops: !