Hallo Schuby,
also wenn ich dich richtig verstehe sendest du mit Form1.TCPClient.IOHandler.Writeln('D' +#12); deinen Befehl damit dein ESP32 die Daten senden soll. Ich hab mal meine 22 Jahre alte Routine genommen wo ich in einer CNC-Maschine Daten abfrage. Das Gegenstück ist dort ein von mir erstelltes Delphi-Servermodul. Bei meinem Client hole ich es so ab:
Delphi-Quellcode:
var
AStream: TMemoryStream;
SimulationsPfad, ctdata, LInString: string;
begin
... hier müsstest du noch SimulationsPfad, ctdata mit deinem Zielpfad ersetzen
if(IdTCPClient.Connected = FALSE) then IdTCPClient.Connect;
try
StatusBar.Panels.Items[0].Text := 'Werkzeugdaten online aus Maschine abfragen...';
IdTCPClient.IOHandler.WriteLn('D' +#12); // Hier war mein Befehl
AStream := TMemoryStream.Create;
//OutputDebugString('Readstream...');
IdTCPClient.IOHandler.ReadStream(AStream, -1, FALSE);
//ShowMessage(IntToStr(AStream.Position));
AStream.Position := 0;
AStream.SaveToFile(SimulationsPfad + ctdata);
OutputDebugString(pchar('Stream gelesen und gesichert in ' + SimulationsPfad + ctdata));
FreeAndNil(AStream);
LInString := IdTCPClient.IOHandler.ReadLn; // Kann sein das brauchst du nicht
finally
StatusBar.Panels.Items[0].Text := '';
IdTCPClient.Disconnect;
end;
Hab mal meinen Befehl mit deinem ersetzt. Statusbar etc. kannst, raus werfen vielleicht funktioniert es mit deinem ESP32.