Hallo,
ich hätte eine Frage zur C-Programmierung.
Ich habe ein struct, das wie folgt aufgebaut ist:
1 | struct T_Messreihe
|
2 | {
|
3 | uint16_t Messwert;
|
4 | uint16_t Buffer_1[SAMPLES];
|
5 | uint16_t Buffer_2[SAMPLES];
|
6 | uint16_t Buffer_3[SAMPLES];
|
7 | uint16_t Bufferzeiger;
|
8 |
|
9 | uint16_t Mittelwert_1;
|
10 | uint16_t Mittelwert_2;
|
11 | uint16_t Mittelwert_3;
|
Nun möchte ich in einer Funktion die Mittelwerte 1 bis 3 bestimmen,
allerdings benötige ich nicht immer alle drei Mittelwerte.
Ich könnte nun also eine Funktion schreiben, die das struct als solches
übergeben bekommt:
1 | uin16_t Average(struct T_Messreihe* Data)
|
2 | {
|
3 | uint16_t Average_1 = 0;
|
4 | uint16_t Average_2 = 0;
|
5 | uint16_t Average_3 = 0;
|
6 |
|
7 | {berechne Average_i};
|
8 |
|
9 | Data->Mittelwert_1 = Average_1;
|
10 | Data->Mittelwert_2 = Average_2;
|
11 | Data->Mittelwert_3 = Average_3;
|
12 | }
|
Das ist aber insofern ungünstig, weil die Buffer_1 bis Buffer_3 nicht
gleichmäßig gefüllt werden und ich daher den Mittelwert eigentlich nur
zu ganz bestimmten Zeitpunkten aktualisieren möchte.
Was ich also bräuchte wäre ein Funktionsaufruf in der Form
1 | uin16_t Average("ZEIGER AUF ELEMENTE AUS DEM STRUCT")
|
2 | {}
|
...nur wie baue ich eine solche Parameterübergabe, also so dass ich die
Funktion "allgemein" halte und genau diejenigen Buffer auswerte, deren
Mittelwert mich gerade interessiert?
mfg