Ich benutze ja zum Sniffen des CAN-Bus einen ESP32 zusammen mit einem SN65HVD230 CAN-Transceiver. Dieser wurde mit einem angepasstem Sketch aus den "examples" der esp32-can-demo-master Bibliothek der Arduino IDE. Dieser gibt die gescannten Bus-Daten über die serielle Schnittstelle an ein Terminalprogramm auf mein Laptop weiter. Dabei werden aber, wie bereits berichtet, eine ganze Menge Datenframes überlesen. Dies liegt aber, wie in diesem Thread https://esp32.com/viewtopic.php?t=13461#p53109 beschrieben, anscheinend nicht am ESP32, sondern am Datentransfer über die serielle Schnittstelle.
Mit ESP32RET https://github.com/collin80/ESP32RET habe ich eine Alternative zu dem Sketch aus den "examples" gefunden, die die Daten über Wifi sendet. Das Programm kann ferner Daten über Wifi empfangen und an über den CAN-Bus senden. Als Client auf dem Laptop habe ich SavvyCan installiert, welches neben der Darstellung der Daten eine ganze Reihe von Analysetools bietet. Der Datenverlust ist damit jetzt auf ein Minimum reduziert. Nachteilig ist, dass RTE Requests nicht angezeigt und auch nicht gesendet werden können.
Und nun zur Zeiteinstellung:
Die Uhrzeit erhält das Display vom BMS über die ID 0x200.
Code: Alles auswählen
13:35:06.465,->,Standard,ID:,0x200,7,Data:,0x03,0x13,0x20,0x55,0x07,0x11,0x21,
Korrigiert man die Uhrzeit im Display, so wird beim Abspeichern vom Display ein Frame mit der ID 0x201 über den CAN-Bus gesendet, welches nur die korrigierte Zeit enthält. Diese Zeit dient dann dem BMS zu Berechnung der aktuellen Uhrzeit.
Für eine korrigierte Zeit von z.B. 14:30:00 sieht das Frame wie folgt aus:
Code: Alles auswählen
ID:,0x200,4,Data:,0x04,0x14,0x30,0x00,
Damit kann die Zeitanzeige im Display mit jeder Anwendung geändert werden, die Frames über den CAN-Bus sendet kann, indem ein Frame mit der ID 0x201 gesendet wird.