Picproje Elektronik Sitesi

ENDÜSTRiYEL OTOMASYON => IoT => Konuyu başlatan: mr.engineer - 13 Mayıs 2022, 22:55:46

Başlık: ESP32 printf
Gönderen: mr.engineer - 13 Mayıs 2022, 22:55:46
Merhaba,

Projenin içinde çok sayıda printf fonksiyonu (UART ile terminale yazıları göndermek için) var. Run-time'da bu printf fonksiyonlarını açıp kapatmak istiyorum. Yani kapatınca artık log çıkışı duracak.

Şöyle bir fonksiyon var ama işe yaramadı ya da ben kullanamadım:
vprintf_like_tesp_log_set_vprintf(vprintf_like_tfunc);

Log çıkışının UART0 yerine başka bir kaynağa aktarılmasını sağlıyor.

Fikri olan var mı?

NoT: Bu işlemi run-time'da yapacağım o yüzden menuconfig'den logu kapatmak işe yaramayacak.
Başlık: Ynt: ESP32 printf
Gönderen: z - 13 Mayıs 2022, 23:42:44
Her bir printf komutunu if icine koy. Debug diye bir degisken tanimla

if (Debug)
  {
    printf(....);
  }
Başlık: Ynt: ESP32 printf
Gönderen: mr.engineer - 14 Mayıs 2022, 00:00:23
Alıntı yapılan: z - 13 Mayıs 2022, 23:42:44Her bir printf komutunu if icine koy. Debug diye bir degisken tanimla

if (Debug)
  {
    printf(....);
  }

Hocam bunu yapmamak için sormuştum:)
200 tane printf var hepsini if içine almak çok yorucu olacak. Bir de kodun görüntüsü bozulacak gereksiz yer kaplayacaklar.
Başlık: Ynt: ESP32 printf
Gönderen: z - 14 Mayıs 2022, 00:13:35
replace ile yap.

search kismina printf
replace kismina if (debug) printf diyeceksin. Editor komple programi degistirecek.

sprintf falan varsa dikkatli ol.

Yanlis hatirlamiyorsam putch gibi bir fonksiyon vardi. Onu degistirirsen de olmasi lazim.  Dene.
Başlık: Ynt: ESP32 printf
Gönderen: mr.engineer - 14 Mayıs 2022, 01:13:05
Alıntı yapılan: z - 14 Mayıs 2022, 00:13:35replace ile yap.

search kismina printf
replace kismina if (debug) printf diyeceksin. Editor komple programi degistirecek.

sprintf falan varsa dikkatli ol.

Yanlis hatirlamiyorsam putch gibi bir fonksiyon vardi. Onu degistirirsen de olmasi lazim.  Dene.


Evet bu daha kolay. ESPnin hazır bir fonksiyonu ile cozemessem bu şekilde yapacam artık.
Başlık: Ynt: ESP32 printf
Gönderen: brandice5 - 14 Mayıs 2022, 01:14:22
#include <stdio.h>
#define LOG(...) if(debug) printf(__VA_ARGS__)

int debug = 0;

int main()
{
    debug = 1;
    LOG("bu yazilacak\n");
   
    debug = 0;
    LOG("bu yazilmayacak\n");
   
    debug = 1;
    LOG("bu tekrar yazilacak\n");

    return 0;
}
Başlık: Ynt: ESP32 printf
Gönderen: hasankara - 14 Mayıs 2022, 14:25:46
esp_log_level_set("*", ESP_LOG_NONE);
 yada
esp_log_level_set("*", ESP_LOG_INFO);
Başlık: Ynt: ESP32 printf
Gönderen: mr.engineer - 14 Mayıs 2022, 15:26:20
Alıntı yapılan: hasankara - 14 Mayıs 2022, 14:25:46esp_log_level_set("*", ESP_LOG_NONE);
 yada
esp_log_level_set("*", ESP_LOG_INFO);

Bunlar printf için işe yaramıyor. Galiba sadece ESP_LOGI, ESP_LOGW.. ile başlayan fonksiyonlarda kullanılıyor.
Başlık: Ynt: ESP32 printf
Gönderen: hasankara - 14 Mayıs 2022, 17:53:03
Alıntı yapılan: mr.engineer - 14 Mayıs 2022, 15:26:20Bunlar printf için işe yaramıyor. Galiba sadece ESP_LOGI, ESP_LOGW.. ile başlayan fonksiyonlarda kullanılıyor.
::ok