INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Logging nach Serial und/oder Telnet
29.12.2020, 06:14
Beitrag #9
RE: Logging nach Serial oder Telnet
Bei der Loggerei wird der Level zur Laufzeit mit MBUlogLvl eingestellt, allerdings nur bis zum global per Compile eingestellten LOG_LEVEL bzw. sourcefileweise durch LOCAL_LOG_LEVEL. Im finalen Produkt ist der Level auf ERROR limitiert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2020, 16:47
Beitrag #10
Gelöst: Logging nach Serial und/oder Telnet
Falls es Euch interessiert: das Problem saß mal wieder vor der Tastatur...

"THOU SHALT NOT ATTEMPT TO RE-ASSIGN A REFERENCE!"

LOGDEVICE war eine Referenz auf ein Print-Objekt und wurde in TelnetLog.cpp mit Serial initalisiert. Der spätere Versuch in main.cpp, LOGDEVICE ein neues Ziel zuzuweisen, ist erfolglos, weil man einmal initialisierte Referenzen nicht mehr ändern kann.

Wundert mich nur, dass der Compiler das nicht moniert - ist ja ein ziemlich offensichtlicher Fehler, wenn man es weiß.

Mit einem "Print *LOGDEVICE;", also einem Pointer, geht es dann natürlich.

Danke für's Mitdenken! Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2020, 17:09
Beitrag #11
RE: Logging nach Serial und/oder Telnet
Nachtrag bezüglich der Vererbung von Print: es reicht tatsächlich, nur "size_t write(uint8_t c);" zu implementieren - der Rest wird von Print.h daraus zusammengestückelt.

Da ich aber immer die jeweiligen WiFiClient-print() aufrufe (und damit dann Hunderte von write©), ist das sehr ineffizient. Deswegen bleibe ich bei meinen Templates, die immer nur eine komplette print() aufrufen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2020, 16:24
Beitrag #12
RE: Logging nach Serial und/oder Telnet
Ja, bei einem blockorientierten Medium sind Einzelzeichen ungünstig.
Evtl. könnte man auch in einem Puffer sammeln und bei '\n' oder wenn der Puffer voll ist (so macht es Telnet unter UNIX) den Puffer senden.

Du musst also auch bei Deiner Define-Orgie zur Compilezeit festlegen, ob Du Seriell oder per Telnet loggen willst?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.12.2020, 06:04
Beitrag #13
RE: Logging nach Serial und/oder Telnet
(30.12.2020 16:24)Tommy56 schrieb:  Du musst also auch bei Deiner Define-Orgie zur Compilezeit festlegen, ob Du Seriell oder per Telnet loggen willst?

Nein, das geht jederzeit umzuschalten. Ich muss nur LOGDEVICE auf das jeweilige Print-Objekt zeigen lassen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.12.2020, 10:49
Beitrag #14
RE: Logging nach Serial und/oder Telnet
(31.12.2020 06:04)miq19 schrieb:  Nein, das geht jederzeit umzuschalten. Ich muss nur LOGDEVICE auf das jeweilige Print-Objekt zeigen lassen.
Da klingt #10 für mich aber anders oder habe ich #10 falsch verstanden?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.12.2020, 12:01
Beitrag #15
RE: Logging nach Serial und/oder Telnet
(31.12.2020 10:49)Tommy56 schrieb:  Da klingt #10 für mich aber anders oder habe ich #10 falsch verstanden?

Ich vermute: falsch verstanden. Statt einer fixen Referenz auf Serial ist LOGDEVICE jetzt ein Pointer auf ein Print-Objekt und damit zur Laufzeit änderbar.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.12.2020, 12:35
Beitrag #16
RE: Logging nach Serial und/oder Telnet
(31.12.2020 12:01)miq19 schrieb:  Ich vermute: falsch verstanden. Statt einer fixen Referenz auf Serial ist LOGDEVICE jetzt ein Pointer auf ein Print-Objekt und damit zur Laufzeit änderbar.
Ok, dann ist es klar.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Serial Puffer manipulieren. Trexis5 26 221 Heute 06:25
Letzter Beitrag: miq19
  Erfahrungen mit ESP32 und WLAN/MQTT oder was ich beobachtet habe... Arduino4Fun 23 4.296 09.04.2021 16:15
Letzter Beitrag: amshh
  ESP8266 Webserver nach Zeit nicht mehr verfügbar. ESPWolf 21 2.686 02.02.2021 17:54
Letzter Beitrag: Tommy56
  falsches Display oder einfach nur keine Ahnung? Steinspiel 30 2.520 11.01.2021 19:48
Letzter Beitrag: Tommy56
  ESP-32 USB->Serial Adapter Positiv 1 1.094 31.08.2020 19:04
Letzter Beitrag: KlaRa
  Esp8266 GPIO default In- oder Out-put? N1d45 0 844 29.08.2020 06:58
Letzter Beitrag: N1d45
  Grundsätzliche Fragen nach Umstieg von Lua auf Arduino Stefan72 6 1.551 06.07.2020 22:58
Letzter Beitrag: Stefan72
  WEMOS D1 mini pro nach 4 Jahren gestorben Tommy56 1 1.097 02.07.2020 05:52
Letzter Beitrag: amithlon
  Allgemeine Frage zu serial.Print array Benny86 4 1.483 16.06.2020 02:10
Letzter Beitrag: Benny86
  i2c LCD Display am Wemos D1 Mini mit mqtt klappt nach modifikation nicht raspido 5 1.859 15.06.2020 22:19
Letzter Beitrag: stw

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste