Hi,
ich schaff es irgendwie nicht! Wie kann ich bitte in C (stm32) eine
Anzahl von Messwerten aufnehmen und abrufen?
Es sind neun Werte:
1
Accel[3]Gyro[3]Mag[3]
2
3
AccelXYZGYROXYZMAGXYZ
4
5
Messung_1[9]
6
Messung_2[9]
7
Messung_3[9]
8
.
9
.
10
Messung_n[9]
im Prinzip eine Matrix oder ein 2D Array auf das man dann spaeter
zugreifen kann.
kann mir jemand bitte mal die Schleife schreiben?
Ich hatte das so versucht:
1
intcol[9];
2
introw[5000];
3
4
while(pbuttonstate==false)//abbruch wenn taster gedrueckt
5
{
6
7
8
for(i=0;i<5000;i++)//oder abbruch wenn 5000 werte aufgezeichnet
Stichwort "Mehrdimensionales Array".
Das sollte doch auch der STM32-C-Compiler können, oder?
Übersichtlicher (und eindimensional) wär's aber sicherlich mit
Strukturen,
z.B. in der Form:
1
typedef struct Data_s {
2
int accel[3];
3
int gyro[3];
4
int mag[3];
5
} Data;
Die for ()-Schleife und das C-Buch bleiben als Hausaufgabe.
Timo schrieb:> ok - ihr seid gemein :( ... jetzt muss ich hier herumexperimentieren> und kann nicht in expandebles 2
Du kannst C nicht auf die Schnelle anhand irgendwelcher Tutorials
lernen. Wirklich nicht.
Solange du sowas schreibst
> col[]={accel[1],[accel[2],accel[3],Gyro[1],Gyro[2],Gyro[3],Mag[1],Mag[2]
,Mag[3]};
sind nicht wir es, die gemein sind. Sondern du bist gemein, weil du bar
jeglichen C-Basiswissens dich an der Programmierung versuchst und dann
meinst, du könntest das in 10 Minuten.
Karl Heinz Buchegger schrieb:> Sondern du bist gemein, weil du bar> jeglichen C-Basiswissens dich an der Programmierung versuchst und dann> meinst, du könntest das in 10 Minuten.
Karl Heinz das Kino faengt doch um 17 Uhr an und er will doch den Film
kucken :=)
Timo schrieb:> col[]={accel[1],[accel[2],accel[3],Gyro[1],Gyro[2],Gyro[3],Mag[1],Mag[2]>> das war pseudo code!
Ach?
Darum schreibst du auch
> Ich hatte das so versucht:
drüber.
Es hilft nichts. Du brauchst ein C-Buch.
Arrays sind in C Bastarde, die anders funktionieren als alle anderen
Datentypen/Datenstrukturen. Deren Regeln muss man kennen. Und dann gibt
es in deinem C Buch noch tausende andere Dinge, die dir alle neu sein
werden und die du noch nicht kennst, die du aber alle kennen musst um
erfolgreich Programm schreiben zu können.
Timo schrieb:> ok ich habs :D Kino ich kann kommen :)
Sorry. Kino wird noch warten müssen.
Ein Hinweis:
Arrays sind in C Bastarde.
Es gibt keine Operation (ausser der Initialisierung), bei der du mit
einem Array ALS GANZES etwas machen könntest. Alle Array Operationen
laufen in C IMMER über den Weg, das du eine Schleife über das Array
legen musst und die Operation EINZELN auf die ARRAY-Elemente ausführen
musst (bzw. sonst irgendwie dafür sorgst, dass die einzelnen Elemente
angesprochen werden)
Ein Array in ein anderes umkopieren funktioniert nicht so
ziel = quelle;
sondern so
for( i = 0; i < Grösse_des_Arrays; i++ )
ziel[i] = quelle[i];
Und das ist bei ALLEN Array-Operationen so. Egal welche Operation. Sei
es das Umkopieren in ein anderes Arrays, sei es das vergleichen mit
einem anderen Array, sei es die Anwendung einer Rechenvorschrift auf das
Array, sei es .... Man kann in C nichts mit einem Array als Ganzes
anfangen, sondern muss immer alles auf die einzelnen Elemente
runterbrechen. Und in den meisten Fällen bedeutet das: eine Schleife
drüber legen.
Und bei einem 2D Array sind es dann eben 2 Schleifen. Die eine Schleife
wählt die eine Dimension aus, die darin steckende die andere
for( i = 0; i < die_eine_Grösse_des_Arrays; i++ )
for( j = 0; j < die_andere_Grösse_des_Arrays; j++ )
Array[i][j] = .....
oder manchmal dann auch schon mal so
for( i = 0; i < die_eine_Grösse_des_Arrays; i++ )
{
Array[i][0] = .....
Array[i][1] = .....
Array[i][2] = .....
...
}
So. Und jetzt geh in die nächste Buchhandlung und such dir ein C-Buch
aus, mit dessen Stil du klarkommst.