In den Beispielprogrammen der Netzwerk-Library für nRF24L01-Transmitter
(https://schullebernd.de/master-slave-netzwerk-mit-nrf24l01-und-arduino-esp8266/)
taucht folgendes Code-Segment auf, was auch funktioniert:
1 | ...
|
2 | char* message = "test message.";
|
3 | Serial.println(message); //<--- das zeigt auch 'test message." an!
|
4 | nd.sendToDevice(nd.NetworkDevice.MasterMAC, message, strlen(message) + 1);
|
5 | ...
|
Nun benötige ich aber für message einen variablen String und habe mich
mit der Typumwandung herumgequält. Der folgende Code wird zwar ohne
Fehler compiliert, aber Serial.println(message) ist leer und auch das
was gesendet wird. Der Empfänger stellt zwar fest, es wurde etwas
gesendet, aber auch dort ist die Ausgabe in den seriellen Monitor leer
...
1 | ...
|
2 | String mystr = "test message.";
|
3 | char* message;
|
4 | mystr.toCharArray(message, mystr.length());
|
5 | Serial.println(message); //<--- das gibt eine leere Zeile
|
6 | nd.sendToDevice(nd.NetworkDevice.MasterMAC, message, strlen(message) + 1);
|
7 | ...
|
Die Anzahl der gesendeten Zeichen wird vom Empfänger richtig erkannt,
nur die Sendung selbst ist quasi unsichtbar und belegt im seriellen
Monitor die Länge null. Code auf Empfängerseite:
1 | ...
|
2 | int messageSize = networkDevice.available();
|
3 | if (messageSize > 0)
|
4 | {
|
5 | Serial.print("receive: ");
|
6 | Serial.print((char*)networkDevice.getMessage());
|
7 | Serial.print(" - ");
|
8 | Serial.println(messageSize);
|
9 | }
|
10 | ...
|
Kann mir bitte mal jemand zeigen, wie es richtig geht? Ist bestimmt nur
eine Kleinigkeit. Danke.