Serenifly:
Kommt darauf an ob man den Null-Terminator übertragen möchte oder nicht.
Na ja, strlen+1 ginge ja wohl genauso, oder?
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