Bastian schrieb:
> Ich könnte jedes Element einzeln übergeben, oder?
zuweisen.
übergeben ist was anderes
>
>
1 | > msg_transmit.data[0] = msg[0];
|
2 | > msg_transmit.data[1] = msg[1];
|
3 | > .
|
4 | > .
|
5 | > .
|
6 | > msg_transmit.data[7] = msg[7];
|
7 | >
|
ja, kannst du.
Du kannst aber auch ganz einfach eine Schleife dafür benutzen
1 | for( i = 0; i < 8; i++ )
|
2 | msg_transmit.data[i] = msg[i];
|
oder du kannst memcpy() dafür benutzen.
> Der Funktion CAN_Send wird ja ein Pointer übergeben, also die Adresse
> des ersten Elementes des Arrays. Richtig?
Genau das steht doch im Source Text.
Und ja. Das ist die Art und Weise, wie Arrays an Funktionen übergeben
werden. In dem sie nicht wie alle anderen Werte als Kopie übergeben
werden, sondern in dem der Funktion die Startadresse der Daten im
Speicher mitgeteilt wird.
> Dann könnte ich doch in das ersten Element des Arrays Data in der
> Struktur msg_transmit diese Adresse kopieren.
Kannst du machen. Die Frage ist, ob die Funktion can_send_message dann
damit was anfangen kann. Dann auf dem CAN Bus willst du ja nicht die
Adresse im Speicher verschicken, auf der an deinem µC die Daten im
Speicher liegen würden. An diese Daten kommt ja der Empfänger der Daten
nicht heran. Mit der Adresse hat der also nichts angefangen. Der will
schon die Daten selber haben. Also musst du ihm die auch geben.
> Würde das so funktionieren?
Die Frage an sich ist schon ok. Nur ist das keine Lösung. Selbst wenn du
die Antwort dazu kennen würdest.
Wenn die Funktion can_send_message davon ausgeht, dass die zu
versendenden Daten in die STruktur can_t einkopiert wurden, dann musst
du die dort auch einfüllen. Oder aber du überarbeitest die Struktur und
die Funktion can_send_message.