ESP32 Board Definition 3.3.1 vs 3.3.5

Hallo zusammen,

ich ein habe Problem, bei dem ich auf dem Schlauch stehe. Ich habe auf einen ESP32 (Standard) ein Programm laufen, welches mir kontinuierlich Daten über eine virtuelle Schnittstelle am PC an ein laufendes Lazarus (free Pascal) Programm sendet. Die Daten bestehen aus ";"-separierten ASCII-Zeichen. Seit mehreren Jahren funktioniert das einwandfrei.

Ich habe nun die Arduino-IDE, mit der ich das Programm auf den ESP32 überspiele, auf die Version 2.3.6 geupdatet. Plötzlich funktioniert die Kommunikation mit meinem Pascal-Programm nicht mehr. Die Kopplung PC (WIN11) und ESP32 funktioniert, der ESP wird gefunden und zwei virtuelle Ports (eingehend/ausgehend) werden eingerichtet.

Nachdem ich die Board-Definition in der Arduino-IDE von 3.3.5 wieder zurück auf 3.3.1 geändert habe, funktioniert alles wieder wie gewohnt. Ergänzend möchte ich noch hinzufügen, dass der Datensatz vom Bluetoothterminal auf meinem Handy einwandfrei empfangen und angezeigt wird.

In meinem Lazarus-Programm (uses synaser)

ser := TBlockSerial.Create;
ser.config(115200, 8, 'N', SB1, False, False);
ser.SizeRecvBuffer := 1000;
ser.Connect('COM10');
datenstring := ser.RecvString(1000);

stoppt das Programm bei ser.connect für einige Sekunden und gibt als Lasterror 9994 (ESP32 nicht gefunden) aus.

Vielleicht hat ja jemand ähnliche Erfahrungen gemacht und kann mir weiterhelfen.

Das scheint mir merkwürdig, denn eine serielle Verbindung ist wie USB auch bi-direktional. Nicht umsonst gibt es eine Tx- und eine Rx-Leitung.

Macht Lazarus da zwei draus?

Ja, es erscheinen zwei COM-Ports in der Bluetooth-Übersicht. Ich benötige aber nur die ausgehende Schnittstelle. Wie gesagt, bis 3.3.1 funktionierte es einwandfrei!

Grundregel: Never touch a running system!

Versuchen Sie zunächst die neueste Version 3.3.6. Sollte das Problem weiterhin bestehen,
dann sollten Sie sich meiner Meinung nach an die Arduino-Core-Entwickler auf GitHub wenden.

Hallo,

gibt es eine Timeout Methode die man zum ändern/erhöhen verwenden könnte? Vielleicht wurde das Timeout Lib intern reduziert. Falls du einen Arduino Nano ESP32 hast, könntest du hier fragen. Oder hier. Allerdings solltest du dabei klarstellen das du mit v3.3.5 den Espressif ESP32 Core meinst.

@Deva_Rishi
Habe jetzt mal 3.3.6 installiert, leider keine Änderung. Ich werde mich mal an die Core-Entwickler wenden.

@Doc_Arduino
An ein Timing-Problem hatte ich auch schon gedacht, aber für die Connect-Anweisung kann ich kein Timeout definieren. Dies ist nur bei RecvString möglich, bis dahin kommt das Programm aber nicht.

Jetzt habe ich mal die Kommunikationssoftware auf einen alten WIN10-PC überspielt und getestet. Zu meinem Erstaunen funktionierte es sofort!? Es scheint also an WIN11 zu liegen (Bug?) und nicht an der aktuellen Boarddefinition des ESP32.
Da warte ich mal das Update 26H1 ab, möglicherweise ändert sich da was.