Valor de basura escrito en el archivo .csv por ADC

0

Estoy usando el microcontrolador PIC24 y estoy usando una unidad Thumb para guardar la información del transmisor USB del microcontrolador y los pines del receptor. Los datos se guardan en Thumbdrive usando el formato de archivo '.CSV'. Los siguientes son los datos recopilados:

3/19/2018    12:10  35      
3/19/2018    12:10  7   
3/19/2018    12:10  7   
3/19/2018    12:10  7       
3/19/2018    12:10  19      
3/19/2018    12:10  30      
3/19/2018    12:10  37      
3/19/2018    12:10  44  
3/19/2018    12:10  45      
3/19/2018    12:10  48      
3/19/2018    12:10  58      
3/19/2018    12:10  67      
3/19/2018    12:10  69      
3/19/2018    12:10  79      
3/19/2018    12:10  90      
3/19/2018    12:10  96      
3/19/2018    12:10  99  
3/19/2018    12:10  110     
3/19/2018    12:10  USBSÅV43/19/2018     12:10  126
3/19/2018    12:10  130     
3/19/2018    12:10  140     
3/19/2018    12:10  152     
3/19/2018    12:10  155     
3/19/2018    12:10  159     
3/19/2018    12:10  168     
3/19/2018    12:10  182     
3/19/2018    12:10  184     
3/19/2018    12:10  193 
3/19/2018    12:10  208     
3/19/2018    12:10  218     
3/19/2018    12:10  222     
3/19/2018    12:10  230     
3/19/2018    12:10  245     
3/19/2018    12:10  256     
3/19/2018    12:10  256     
253/19/2018  12:10  256     
3/19/2018    12:10  256     

Como puede ver, la primera columna corresponde a la fecha (mm / dd / aaaa), la segunda columna corresponde a la hora (hh: mm) y la tercera columna corresponde al valor digital. En una de las filas, obtuve un valor de ADC que comienza con 'USBS'. Luego, en la segunda última fila, el mes en la primera columna se anotó como 253 en lugar de solo 3. ¿Por qué obtengo valores de basura y cómo puedo deshacerme de ellos?

La siguiente es la línea de código que me permite escribir los datos en la unidad de disco USB:

charCount = sprintf(printBuffer, "%d/%d/20%d, %d:0%d,  %d, %d\r\n" , month, date, year, hour, minute, ADC);
    
pregunta J2018

1 respuesta

0

Un error realmente obvio es que su cadena de formato especifica 7 campos de datos, pero solo está proporcionando 6 argumentos adicionales. sprintf() (y amigos) leerán con alegría cualquier basura que esté en la pila y la pondrán en cualquier campo no especificado.

Además, tenga en cuenta que no nos está mostrando el contenido del archivo CSV real; nos está mostrando el resultado de pasar el archivo a través de algún otro programa, que está aplicando su propia interpretación a lo que está encontrando allí.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas