Gast
#405104
Habe gestern von Karl Heinz Buchegger folgenden Code Vorschlag bekommen
um unterschiedliche buffer zum speichern von Daten zu Nutzen.
Ich habe noch folgendes Problem:
Ich möchte vier Interrupt nutzen um Zeiten zu messen! Mit der funktion
store (siehe unten) kann ich auch im Interrupt den Wert des ICU
abspeichern.
Wie ist das jetzt zu realisieren das von jeder Zeit nur fünf Werte in
den Buffer geschrieben werden und der dann automatisch wechselt in den
nächsten.
Zur Auswertung soll dann immer der Buffer genutzt werden der zuletzt
aktiv war.
Bitte kann mir jemand helfen wie soetwas zu realisieren ist?
struct Buffer {
int Werte[100];
int NrWerte;
};
struct Buffer Messung1; // der erste Buffer
struct Buffer Messung2; // der zweite Buffer
struct Buffer Messung3; // der dritte Buffer
struct Buffer* Active; // Zeiger auf den aktiven Buffer
// in den aktiven Buffer werden Werte
// geschrieben
void Store( int Wert )
{
// Speicher den Wert im aktiven Buffer
Active->Werte[ Active->NrWerte ] = Wert;
Active->NrWerte++;
}
int main()
{
// den ersten Buffer aktivieren
Messung1.NrWerte = 0;
Active = &Messung1;
// speichere ein paar Werte im aktiven Buffer
Store( 100 );
Store( 50 );
Store( 150 );
// Es ist Zeit den 2. Buffer zu aktivieren ...
Messung2.NrWerte = 0;
Active = &Messung2;
// .. denn wir wollen mit der ersten Messreihe was machen
Compute( &Messung1 );
}
void Compute( struct Buffer& Buff )
{
int i;
for( i = 0; i < Buff->NrWerte; ++i )
printf( Buff->Werte[i] );
}