Array optimieren

Hallo zusammen,

ich bin Neuling und arbeite mich gerade komplett in die Arduino-Welt ein.

Um ein paar Daten verschiedener Arduinos per Funk zu empfangen, habe ich alle Boards mit entsprechenden Modulen ausgestattet, die nun munter Daten hin und herschicken.

Da jetzt die Performance anfängt zu leiden und Ladehemmungen beim Empfangen der Daten entstehen frage ich mich, ob ich die Array-Konstruktion vielleicht optimieren muss. Wie gesagt, ich bin recht frisch dabei und habe das nach bestem Wissen und Gewissen aufgebaut.

Die Sensordaten der versch. Arduinos werden von int in ein String umgewandelt und dann mit einem sprintf-Array verschickt. Dabei schickt jeder Arduino das gleiche Array mit den gleichen Stellen, je nach Gerät aber mit entsprechend vielen Nullen, damit die Stellen erhalten bleiben und beim Empfang nicht von den Daten der anderen Arduinos überschrieben werden.

sprintf(Array, "%d, %d, %d, %d, %d, %d, %d.", outdoortemp, outdoorhumidity, outdoorlight, outdoorwater, indoortemp, indoorhumidity, indoorlight);
  1. Frage: Muss ich Stellen, die eh eine Null erzeugen, überhaupt mitschicken? Wenn ja, kann ich die Stellen irgendwie leer mitschicken und nicht so, dass der Empfänger eine Null liest? Ich habe das Gefühl, dass er sich beim Empfang echt abmüht.

  2. Frage: Ist String der richtige Dateityp für die Sensordaten? Alle Daten sind Zahlen von 2 bis 5 Stellen. Oder kann man hier auch nochmal optimieren?

Freue mich sehr über Unterstützung!

Ohne den vollständigen Kode zu sehen kann man nicht wirklich gut antworten.

daniel_e:
Hallo zusammen,ie Sensordaten der versch. Arduinos werden von int in ein String umgewandelt und dann mit einem sprintf-Array verschickt. Dabei schickt jeder Arduino das gleiche Array mit den gleichen Stellen, je nach Gerät aber mit entsprechend vielen Nullen, damit die Stellen erhalten bleiben und beim Empfang nicht von den Daten der anderen Arduinos überschrieben werden.

sprintf(Array, "%d, %d, %d, %d, %d, %d, %d.", outdoortemp, outdoorhumidity, outdoorlight, outdoorwater, indoortemp, indoorhumidity, indoorlight);

Dein sprintf - Statement sorgt nicht für gleich lange Datagramme.

daniel_e:
2. Frage: Ist String der richtige Dateityp für die Sensordaten? Alle Daten sind Zahlen von 2 bis 5 Stellen. Oder kann man hier auch nochmal optimieren?

String ist für nichts der richtige Datentyp, string könnte man verwenden.

Wenn du die sieben int's binär verschickst ist das Datagramm 14 Bytes lang.
Wenn du dein Format benutzt (wirklich immer auf fünf Ziffern erweitert + Vorzeichen + Komma + Leerzeichen) hat das Datagramm eine Länge von 40 Bytes.

Mit einem NRF könnte man das nicht in einem Stück übertragen,
aber du hast ja nicht einmal gesagt womit du funken willst.