NRF24L01 Funk Modul Problem mit eigener Funktion

Serenifly:
Kommt darauf an ob man den Null-Terminator übertragen möchte oder nicht.

Na ja, strlen+1 ginge ja wohl genauso, oder?

Eventuell einfach strlen statt sizeof ?

"einfach" wäre sizeof. strlen ist aufwändiger.
Andererseits kann die aufgerufene Funktion strlen selber rauskriegen. sizeof muss der Aufrufer, der den Puffer per Zeiger bereit stellt, mitliefern.

strlen erfordert aber einen ordentlichen Abschluß mit '\0'

Gruß Tommy

Wenn ich das mit den Zeigern versuche kommt bei sizeof immernoch 2 raus

Mein Code

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(7, 8);

char empftext[32];
int start;
const byte haupt[6] = "00000";
const byte neben[6] = "00001";

void senden (const byte* adresse, char* sendetext)
{
  radio.stopListening();
  radio.openWritingPipe(adresse);
  radio.write(&sendetext, sizeof(sendetext));
  Serial.print("Sende: ");
  Serial.print(sizeof(sendetext));
  Serial.print("   Sende: ");
  Serial.println(sendetext);
}

char empfangen (const byte* adresse, int laenge)
{
  radio.startListening();
  radio.openReadingPipe(0, adresse);
  start = millis();
  while (millis() - start < laenge * 1000)
  {
    if (radio.available())
    {
    radio.read(&empftext, sizeof(empftext));
    Serial.print("Empfangen: ");
    Serial.print(" char: ");
    Serial.println(empftext);
    return empftext;
    }
  }
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  
  radio.begin();
  radio.setPALevel(RF24_PA_MAX);
  radio.setChannel(0x77);
  radio.setDataRate(RF24_250KBPS);
  radio.enableDynamicPayloads();
  radio.powerUp();
  radio.setRetries(15, 15);
}

void loop() {
  // put your main code here, to run repeatedly:
  senden(neben, "Hallo");
  delay(1000);
}

Wenn ich das mit den Zeigern versuche kommt bei sizeof immernoch 2 raus

Ja!
Wundert mich nicht.
Ein Zeiger ist bei deinem µC halt 2 Byte breit.

Du bekommst, wonach du fragst!

Verstehst du überhaupt irgendwas von dem Code?

Bei empfangen() hast du die Länge als Funktionsparameter und verwendest sie dann nicht. Bei senden() fehlt es komplett

Bei empfangen ist länge nur ein paramter wie lang er es versuchen soll zu empfangen

combie:
Ja!
Wundert mich nicht.
Ein Zeiger ist bei deinem µC halt 2 Byte breit.

Du bekommst, wonach du fragst!

Hab es jetzt auch verstanden, nachdem ich mir das noch mal angeguckt hab