Setze Deinen Sketch bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *). Das kannst Du auch noch nachträglich tun.
Dann ist er besser lesbar und wird nicht verstümmelt.
Diese Antwort könnte ich auch an viele andere Postings hängen.
Leute lernt erst mal C und / oder C++ auf einem normalen PC.
Der Einfachheit halber auf der Kommandozeile so das man sich nicht mit der GUI-Programmierung
rum schlagen muss.
Compiler gibt es für lau. Linux sowieso GCC. (Das ist auch der Compiler den die ArduinoIDE nimmt).
Für Windows gibt es den auch. Oder für Windows auc MinGW.
Auch das Microsoft Visualstudio gibt es glaube ich als "lau" Version.
Aber ohne jegliche Programmierkenntnisse auf Mikrocontroller los zu stürmen und in einem
Aufwasch auch noch Hardware verstehen, das ist letztendlich zu viel auf einmal.
So viel kann man gar nicht erklären.
wenn man eine selbstgestrickte Kommunikation hat, die Probleme bereitet,
sollte man beide (bzw. alle) Sketche posten, inclusive der erzeugten Ausgaben.
The_Snapdragon:
Wie soll ich das den mit den sizeof() lösen, weil weglassen kann ich es nicht.
Sowie es auch in C gelöst wird. Und in der Arduino API. Wieso meinst du weshalb man bei vielen Funktionen extra die Größe übergeben muss?
Man kann Arrays auch als Referenzen übergeben. Dann geht sizeof(). Aber dann kann man nur Arrays dieser Größe übergeben. Das ist daher nicht sinnvoll wenn der Code allgemein sein muss
delay und while (true) haben in einem Programm mit Funkkommunikation nichts zu suchen,
Hier finde ich die Absolutheit der Aussage bedenklich, bis falsch.
Als Leitlinie, ok.
Als Dogma, nicht ok.
Man kann Arrays auch als Referenzen übergeben. Dann geht sizeof(). Aber dann kann man nur Arrays dieser Größe übergeben. Das ist daher nicht sinnvoll wenn der Code allgemein sein muss
Das ist kein richtiger Fehler. Daher die Anführungszeichen. Aber es suggeriert, dass da die Größe übergeben wird. Letztlich ist aber auch nur ein Zeiger. Die Größe hat hier nur eine Kommentar-Funktion für den Anwender. Dem Compiler ist das egal.
Vernünftig übergibt man Arrays daher gleich als Zeiger:
Arrays zerfallen bei der Übergabe zu Zeigern auf das erste Element. Lasse die eckigen Klammern weg wenn du Arrays als Funktionsparameter hast. Das verwirrt dich nur und verschleiert genau diesen Zusammenhang. Siehe auch wieder die Fehlermeldung. Egal wie du das schreibst, der Compiler betrachtet Arrays als Zeiger
Und dann eben den zusätzlichen Parameter laenge verwenden. Dann kannst du sizeof() beim Aufruf der Funktion machen um diese zu übergeben