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.
6 years, 7 months ago.
[PROBLEM] How can i use LocalFileSystem ? (not working)
I try to use LocalFileSystem on LPC1768 but it doesn't work very well. Maybe somebody can try to helps me.
Presentation
Step 1: I try a simple program
#include "mbed.h"
LocalFileSystem local("local");
int main(){
FILE *fp = fopen("/local/out.txt", "w");
fprintf(fp,"test\r\n");
fclose(fp);
}
This one works it generates a file out.txt with "test" printed.
Step 2: I try another program with a while loop
#include "mbed.h"
LocalFileSystem local("local");
DigitalIn button(p12);
int main(){
FILE *fp = fopen("/local/out.txt", "w");
while(button.read()!=0){
fprintf(fp,"test\r\n");
wait(1);
}
fclose(fp);
}
In this one it must print "test" every second util i press a button. But when i press the button the mbed led begin to blinks (indicate an error). When I disconnect and reconnect the mbed the file out.txt was created but nothing is written in it. But what I have found is that a part of the memory has been used.

Step 3: After this i try to put wrinting step into a function
#include "mbed.h"
LocalFileSystem local("local");
void write(){
FILE *fp = fopen("/local/out.txt", "w");
fprintf(fp,"test\r\n");
fclose(fp);
}
int main(){
write();
}
This one works it generates a file out.txt with "test" printed.
Step 4: I also try with a while loop and a function
#include "mbed.h"
LocalFileSystem local("local");
DigitalIn button(p12);
void write(){
FILE *fp = fopen("/local/out.txt", "w");
fprintf(fp,"test\r\n");
fclose(fp);
}
int main(){
while(button.read()!=0){
write();
wait(1);
}
}
But in this one it doesn't work, the error appears before you even press the button.
Objectives
I would like to be able to store values in a file on the mbed
Questions
Is there a bug with the LocalFileSystem in MBED OS 5 ? Is it me who misuses it ? Can't we use it on a loop ? (If this is true, it will become difficult to use it with MBED OS 5)
Thank you for the help you will give me
1 Answer
6 years, 7 months ago.
You need to use append to add data to a file, you can't write the same filename more than once.
This works in OS2 and OS5
#include "mbed.h"
LocalFileSystem local("local");
DigitalIn button(p12);
DigitalOut led1(LED1); // add a bit of debug to see if anything is happening
DigitalOut led2(LED2);
int hits; // hit counter
void write(){
led2=1;
FILE *fp = fopen("/local/out.txt", "a"); // use the append to ADD data to the out.txt file
fprintf(fp,"test %d \r\n", hits); // add test + hit count to the out.txt file
fclose(fp);
led2=0;
}
int main(){
button.mode(PullUp); // pull up the pin if you are using a switch to GND
while(1){ // keep looping round wating for button press
if(button==0){
led1=1;
write();
while(button==0); // wait until button released
led1=0;
wait_ms(10); // small delay for debounce
hits++; // increase hit counter
}
}
}