Para hacer posible el tipo de depuración de printf, planeé usar argumentos variables para pasar al dispositivo USB como dispositivo serial.
Código para imprimir una cadena de prueba:
Debug::Print("Auto toggle 2 %d %s", 12, "!");
Con implementación:
void Debug::Print(const char* format, ...)
{
va_list args;
va_start(args, format);
char buffer[256];
vsprintf(buffer, format, args);
Debug::Print(buffer);
va_end(args);
}
Yo esperaría:
Auto toggle 2 12!
Sin embargo, el dispositivo no responde. Cuando uso el OCD, en la línea Debug :: Print, el búfer contiene:
"Auto toggle 2 134229731 !Debug::Print("Auto toggle 2 %d %s", 12, "!");
§ª2KÖ-çPä(5õ1º= ... (continued with unreadable characters)
Esta es probablemente la razón por la que el dispositivo no responde. Sin embargo, ¿qué debo usar para que el búfer se llene correctamente?
Lo probé como un programa C ++ de la consola de Windows y allí obtengo el resultado correcto. Inicialmente, utilicé un sprintf en lugar de vsprintf y también obtuve un gran número (como e134229731 arriba). Sin embargo, no obtuve la 'basura' adicional.