Hallo,
ich würde gerne Texte zwischen 2 ESP32 Boards übertragen.
Ich habe schon mit der Serial Funktion probiert, aber es will mir nicht so gelingen wie ich
ich es gerne hätte.
Vielleicht habt Ihr eine Idee.
Also, die 2 ESP sind mit RX und TX "über Kreuz" verbunden.
Das funktioniert.
Der ESP32 , ich nenne ihn mal Nummer 1 bekommt von einer "Audio Lib"
sequentiell Texte, die aktuell per Serial.Print ausgegeben werden.
Damit der Empfänger die Daten analysieren kann, müssen Sender und Empfänger das gleiche Protokoll verwenden. Sowohl auf physikalischer Ebene, als auch auf logischer.
Wenn Du beim Sender und beim Empfänger festlegst, das "info" eine Zahl bekommt und "id3data" ebenso wie "eof_mp3" eine weitere, dann kannst Du beim Empfänger die Zahl nehmen und danach switchen.
Leider ist der Code unvollständig, das nicht erkennbar ist, was Du vor hast.
Der ESP hat mehrere Serielle Ports.
Einer davon ist für die Kommunikation zum PC vorgesehen.
Den solltest du nicht für die ESP zu ESP Kommunikation verwenden.
Das was du "char"-variable nennst ist ein Zeiger auf einen Speicherbereich im RAM
Eine wirklichechar-variable kann nur ein einzelnes Zeichen speichern.
Die Mechanismen wie das Serial.print() das macht mehrere Zeichen zu übertragen sind aber an dieser Stelle unwichtig.
Wenn dein ESP32 mit dem Computer verbunden ist dann benutzt diese Verbindung
"Serial". Wenn du jetzt auf die gleichen IO-pins die da am USB dranhängen zusätzlich auch noch einen zweiten ESP32 dranhängst dann gibt das durcheinander.
Das ist dann ungefähr so als ob zwei Leute exakt gleichzeitig auf dich einreden und dir etwas erklären wollen.
Deshalb musst du für die ESP32-zu-ESP32 kommunikation Serial1 benutzen.
Achtung da steht Serial_EINS
Serial ohne "1"........Serial.print("Hallo Welt"); // das ist die serielle Verbindung USB zum Computer
Serial mit "1"........Serial1.print("Hallo Welt"); // das ist die Verbindung zwischen den beiden ESP32
Auf der Empfangsseite musst du die Daten in Variablen speichern die eine ganze Zeichenkette aufnehmen können.
Das ist entweder ein array of char oder ein SafeString.
Von SafeString sind hier nicht alle begeistert. Außer man ist array of char = c_strings gewöhnt. Umgewöhnen fällt natürlich schwer.
Ich empfehle SafeString weil der Name Programm ist und das Programmieren damit leichter fällt.
SafeString sind sicher in der Benutzung. Man kann sich keine Speicherinhalte zerschiessen.
Bei der Verwendung von c_strings kann man sich sehr wohl Speicherinhalte durcheinanderbringen. Vom Variablentyp String rate ich komplett ab weil man da auch aufpassen muss wie man String-variablen verwendet ohne das die String-Variablen den gesamten RAM-Speicher auffressen.
SafeString ist eine library die man sich über den Library-Manager installieren kann.
Die bei SafeString mitgelieferten Beispiele sind ziemlich komplex = relativ schwer nachzuvollziehen.
Deshalb ist meine Empfehlung SafeString mit dem Code aus Serial-input basics zu kombinieren.