Hallo
Habe mich noch nicht richtig mit Struct befasst.
Möchte eigentlich in einen vorgegebenen Programm nur die Variable Adr
zur Laufzeit ändern.
Und diese soll in den Struckt geschrieben werden.
Geht dies in einfacher Form z.B in Loop.
Ist ein Ardu Programm!
Danke
int Adr=24;
struct Message {
unsigned char data[7];
unsigned char len;
} ;
#define MAXMSG 2
struct Message msg[MAXMSG] = {
{ { 0xFF, 0, 0xFF, 0, 0, 0, 0}, 3},
{ {Adr, 0x3F, 0, 0, 0, 0, 0}, 4}
};
void setup() {
}
void loop() {
}
Al. K. schrieb:> Habe mich noch nicht richtig mit Struct befasst.
Dann mach das doch jetzt!
Hast genug Zeit dafür.
Kauf dir Ein Buch zum Lernen/Programmieren von C oder
besuche einen Kurs in der Volkshochschule.
@ Al. Kn. (alterknacker)
>Habe mich noch nicht richtig mit Struct befasst.
Dann solltest du das nachholen und ein gutes C-Buch lesen. Auch in
deinem gesetzten Alter.
>Möchte eigentlich in einen vorgegebenen Programm nur die Variable Adr>zur Laufzeit ändern.>Und diese soll in den Struckt geschrieben werden.
Dann tu das.
>Ist ein Ardu Programm!
Und das deine unverständliche AbKü? Warum schreibst du nicht einfach
Arduino? Keine Zeit?
Hallo
msg[1].data[0]=4;
Habe damit im Setup und Loop experimentiert.
Damit geht es.
Werde morgen mal den Vorschlag von nfet (Gast)
testen.
Das mit der zusätzlichen Include gefällt mir aber nicht .
Das include ist nur für die couts da. Wenn dir das nicht bekannt ist,
fehlen dir aber noch sehr viele (alle?) Grundlagen!
Mein Beispiel (auch wenn es funktioniert) war auch alles andere als
ernst gemeint. Wenn dich interessiert, wie es funktioniert, so ist das
Stichwort dazu Operatorüberladung.
Alles was ich gemacht habe, ist eine Funktion namens "=" zu erstellen,
die auch nichts anderes als
Nik D. schrieb:> Warum genau muss man für ein simples Struct ne Klasse drum rum> matschen....
Wenn du mir damit etwas sagen willst, dann musst du es schon genauer
erklären.
Für mich ist nur wichtig ,das das läuft was ich machen will.
Alles andere kostet nur Lebenszeit!
nfet schrieb:> Mein Beispiel (auch wenn es funktioniert)
Nein, es funktioniert nicht.
Denn in der Arduino Welt gibt es von Hause aus kein:
#include <iostream>
Al. K. schrieb:> Für mich ist nur wichtig ,das das läuft was ich machen will.> Alles andere kostet nur Lebenszeit!
Das ist Einbildung. Wenn man etwas wacklig aufhängt und sagt "hält
schon" wird es über kurz oder lang runterfallen. Dann kostet es noch
viel mehr Lebenszeit, nur später. Ist beim Programmieren genauso.
MfG Klaus, auch nicht mehr der Jüngste
Das Prinzip: A box in a box in a box in a...
Ist doch sehr effektiv, wenn einem der Arduino zu schnell ist.
Vor allem, wenn man dies auch noch zur Laufzeit macht.
- Also Parameter auf den Stapel
- Ausgangsadresse ebenso
- Funktionsaufruf
- Parameter erneut vom Stapel holen
- >>Werte zuweisen<<
- Rücksprungadresse holen mit Rücksprung
Einfach:
>>Werte zuweisen<<
wäre doch viel zu schnell und das (den?) FLASH des "Adru" bekommt man so
auch nicht voll.
Sebastian S. schrieb:> Vor allem, wenn man dies auch noch zur Laufzeit macht.
Wird doch nur einmalig gemacht, das sind wenige Millionstel sec.
Es kommt immer darauf an was man machen will!
Sebastian S. schrieb:> Das Prinzip: A box in a box in a box in a...> Ist doch sehr effektiv, wenn einem der Arduino zu schnell ist.> Vor allem, wenn man dies auch noch zur Laufzeit macht.>> - Also Parameter auf den Stapel> - Ausgangsadresse ebenso> - Funktionsaufruf> - Parameter erneut vom Stapel holen> - >>Werte zuweisen<<> - Rücksprungadresse holen mit Rücksprung>> Einfach:>>>Werte zuweisen<<> wäre doch viel zu schnell und das (den?) FLASH des "Adru" bekommt man so> auch nicht voll.
Falls auch das auf meine "Lösung" bezogen war: zumindest ein aktueller
ARM gcc und ein aktueller x86 gcc und ein deravr gcc 4.6.4 machen mit O3
auch meinen überladenen = operator zu einem einfach store byte. Es
brauch aber tatsächlich mehr flash (s. https://godbolt.org/g/8ZcvrR)
Yalu X. schrieb:> Was ist daran so schwer?
Das ist es bestimmt nicht, aber wenn man es sucht und nicht weis, dann
ja!
Habe es in meinen Decoder getestet.
Jetzt kann ich endlich Licht, F1-F28 und Speed -Vor Rück einsetzen.
Danke
Al. K. schrieb:> Das ist es bestimmt nicht, aber wenn man es sucht und nicht weis, dann> ja!
Wenn ich nach "struct" und "C" suche wird mir gleich im ersten Treffer
genau erklärt, wie man sowas bewerkstelligt. Noch einfacher kann man es
eigentlich nicht mehr haben...
Der Pointler schrieb:> Noch einfacher kann man es> eigentlich nicht mehr haben...
wenn es für dich so einfach ist, warum hast du nicht geantwortet,
Wenn das Problem durch einen Anderen gelöst wird , ist gut Torte essen!
nfet schrieb:> Um Adr im struct zu ändern muss man nun nur noch:myadr = 78
Das mag ich so an C++, dieses Verschleiern.
Niemand sieht dann mehr durch, welche Variable wo geändert wird.