Mi capita spesso, mentre sviluppo qualche sketch, di voler printare informazioni utili sulla porta seriale, potendo gestire il livello di Verbosity e magari disattivare e riattivare rapidamente alcune print, senza ogni volta commentare e decommentare ogni riga…
Per risolvermi questo problema, spulciando qua e la documentazione in rete, mi sono scritto una funzione per gestire in modo semplice le mie print di debug su seriale…
Nel file Debug.h ci sono le define per attivare e disattivare rapidamente singoli tipi di print, ad esempio:
#define DBGp_ERR(lvlDBG, fmt, ... ) DBGp(lvlDBG, fmt, __VA_ARGS__ )
Potete usare DBGp_ERR per printare eventuali errori. Nel momento in cui decidete di disabilitare la segnalazione degli errori basterà commentare la seconda parte della riga di define, in questo modo:
#define DBGp_ERR(lvlDBG, fmt, ... ) //DBGp(lvlDBG, fmt, __VA_ARGS__ )
Se commentate l’intera riga, il compilatore non troverà DBGp_ERR e darà errore.
Quando chiamate la funzione dovete specificare:
- lvlDBG – Il livello minimo di verbosity
- fmt – La stringa da comporre
- var – La/le varibiali da inserire nella stringa
DBGp_ERR(lvlDBG,fmt,var);
La variabile debugL dichiarata nel file Debug.h contiene il livello di verbosity attuale e può esere cambita al volo (tramite comandi su seriale, tramire lettura sui pin o come volete…).
DBGp_ERR(5,"ERR clk=> char not recognized: %c\n", com_data[4]);
La precedente stringa viene stampata quando la variabile debugL è => 5, altrimenti non viene stampato nulla.
Ecco uno sketch di esempio con la funzione in questione. Se volete integrarla nei vostri sketch basta inserire i file Debug.h e Debug.pde, ed includere nel file principale Debug.h
Potete scaricare lo zip da qui: DBG_simple_v001-110924a oppure vedere come ho utilizzato la funzione in un progetto più complesso ma ancora molto indietro nello sviluppo qui. Ho fatto massiccio uso delle print di debug nei file COM_base.pde e COM_PS.pde, ma anche in altri punti del progetto.
Enjoy