Diferencia entre revisiones de «DEBUG»
De ArduWiki
(→Ejemplos) |
(→Vea también) |
||
(No se muestra una edición intermedia del mismo usuario) | |||
Línea 66: | Línea 66: | ||
DEBUG_ARRAY(data); | DEBUG_ARRAY(data); | ||
} | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 2 == | ||
+ | <syntaxhighlight lang="c++"> | ||
+ | #define DEBUG(a) Serial.println(a); | ||
+ | String texto = "-123.45"; | ||
+ | |||
+ | void setup(){ | ||
+ | Serial.begin(9600); | ||
+ | float valor = texto.toFloat(); | ||
+ | DEBUG(valor); | ||
+ | } | ||
+ | |||
+ | void loop(){ | ||
+ | //Nada. | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Vea también == | == Vea también == | ||
+ | * [[flash]] | ||
+ | * [[SRAM]] | ||
+ | * [[EEPROM]] | ||
== Referencias == | == Referencias == |
Revisión actual del 17:20 25 jul 2018
Durante el desarrollo, todos usamos Serial.print() para ayudar a depurar nuestro código. Cuando las cosas parecen estables, volvemos y eliminamos el código de depuración... solo para descubrir unos días después que necesitamos nuevamente el código de depuración. Una buena solucion es dejar todo el código de depuración donde corresponde y solo modificar esta linea:
Sintaxis
#define DEBUG #ifdef DEBUG Serial.print("Algunas cosas de depuración"); //Más código de depuración ... #endif
Para desactivas solo comente la primera linea:
//#define DEBUG #ifdef DEBUG Serial.print("Algunas cosas de depuración"); //Más código de depuración ... #endif
Comentarios
Cuando comentar la primera linea logras que uC defina que DEBUG desaparezca comentándolo. Como ya no está definido en el programa, cualquier elemento entre el #ifdef y el #endif ya no forma parte del archivo fuente desde el punto de vista del compilador. Esto facilita agregar y eliminar código de depuración.
Ejemplos
#define DEBUG
#ifdef DEBUG
#define DEBUG_PRINT(x) Serial.print(x)
#define DEBUG_PRINTDEC(x) Serial.print(x, DEC)
#define DEBUG_PRINTLN(x) Serial.println(x)
#else
#define DEBUG_PRINT(x)
#define DEBUG_PRINTDEC(x)
#define DEBUG_PRINTLN(x)
#endif
Ejemplo 1
Imprimir una matriz
#define DEBUG_ARRAY(a) {
for (int index=0; index<sizeof(a)/sizeof(a[0]); index++){
Serial.print(a[index]);
Serial.print('\t');
}
Serial.println();
};
String str = "";
const chr separador = ',';
const byte largo = 3;
int datos[largo];
void setup(){
Serial.begin(115200);
}
void loop(){
if (Serial.available()){
str = Serial.readStringUntil('\n');
for (byte i=0; i<largo ; i++){
int indice = str.indexOf(separador);
datos[i] = str.substring(0, indice).toInt();
str = str.substring(indice + 1);
}
DEBUG_ARRAY(data);
}
}
Ejemplo 2
#define DEBUG(a) Serial.println(a);
String texto = "-123.45";
void setup(){
Serial.begin(9600);
float valor = texto.toFloat();
DEBUG(valor);
}
void loop(){
//Nada.
}