Hallo zusammen, ich hoffe, ich bin in der richtigen Rubrik gelandet. Falls nicht, bitte ich das zu entschuldigen. Nun zu meinem Problem: Laut Information von Espressif kann man bis zu 250 Byte per ESPnow verschicken. Leider überträgt er bei mir nur die ersten 32 Bit, den Rest überträgt er nur als 0. Als Test habe ich ein unsigned int Array erstellt und konnte so feststellen, dass nur die ersten beiden Daten übertragen werden. Ich würde mich freuen, wenn mir jemand sagen könnte, welchen Fehler ich gemacht habe und wie ich ihn korrigieren kann. Viele Grüße Simon
Du schreibst (uint8_t *) &mstrg beim Senden. Müsste das nicht (uint8_t *) mstrg oder (uint8_t *) &mstrg[0][0] heißen um auf das erste Element zu zeigen?
Bei mstrg und &mstrg[0][0] passiert das Gleiche Ich hatte dies so eigentlich aus dem Beispiel übernommen.
Gast
#6899473
Eine Möglichkeit: Versuch mal ein unsigned char Array zum Testen. Zweite Möglichkeit: sizeof() durch festen Wert ersetzen.
Hatte nur zur Veränderung, dass bei Array 4 anstatt 2 Einsen angezeigt wurden. Ich habe das sizeof mal ausgetauscht, das hat leider auch nichts gebracht. Danke trotzdem für die bisherigen Vorschläge!
Ich glaube du kopierst in deiner OnDataRecv nur sizeof Pointer. Was je nach System nur 4 Bytes sind. Kopiere mal len Bytes und begrenze die vorsichtshalber auf die Größe deiner Struktur/Array.
Also so in der Art. Vielleicht noch eine Ausgabe o.ä. dass begrenzt wurde.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
Ja, das wars. Vielen, vielen Dank für deine Hilfe und auch vielen Dank, dass du mir gleich einen Beispielcode geschickt hast. Ich hätte wahrscheinlich nochmal nachfragen müssen, wie ich das machen soll. Viele Grüße Simon
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.