Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
8 years ago.
How to read a binary file till its end?
Hello all,
I have ADXL345 data in a SD card in Binary. I would like to read the whole data. Currently I could able to read only first 3 bytes. How can we read whole file?.
My code is for reading is below.
int main() { pc.baud(921600); int readings[3] = {0, 0, 0}; FILE *logFile = fopen("/sd/PCE001.bin","rb"); if (!logFile) pc.puts("FAILED TO OPEN FILE"); else { // reading ACC fread((int16_t*)readings,sizeof(int16_t),3,logFile); for (int i = 0; i<3; i++) pc.printf("\r\n %i",readings[i]);} pc.puts("File complete"); fclose(logFile); }
2 Answers
8 years ago.
Hi Mohan. Following link will help:
https://developer.mbed.org/forum/helloworld/topic/2507/
Specifically from one of the posts on the above webpage:
// example of reading a file one byte at a time // and display it in hex format on the terminal unsigned char c; // a single byte buffer FILE *fp = fopen("/sd/myfile.txt", "r"); // open the file in 'read' mode while (!feof(fp)){ // while not end of file c=fgetc(fp); // get a character/byte from the file printf("Read from file %02x\n\r",c); // and show it in hex format } fclose(fp); // close the file
Hi Mohan. Here are the details on how to work around the raised symbol error:
https://developer.mbed.org/questions/68297/Error-Undefined-symbol-feof-referred-fro/
the code here should work:
https://developer.mbed.org/questions/2059/Problem-while-reading-a-file/
Hello Sanjiv, Thank you for your reply. I have tried this before but getting error at feof. undefined symbol feof.
posted by 08 Dec 20168 years ago.
hii , ı have one questıon to you ? why do you use baudrate 921600 ? baudrate of pc is 9600? is it? and also your string size is 3 bytes. ı am not sure but maybe ıt can run so ;
int readings[8] or for(int i=0; i<length.int16_t;i++) or for(int i=0 ; i<sizeof(int16_t); i++);
Hi ibrahim. The baud rate can change to support the UART (serial controller). The baudrate of the PC may power up as a 9600 bps but can be changed to suit the application. For example, we are designing host adapter that can support 20Mbps - if the UART can support the higher data rates then you are fine to select 921600 (ie. 921k). Some of the lower cost UARTs are only able to support up to 115200 bps. For example, the < $1 USD USB UARTs.
posted by 08 Dec 2016