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.
11 years, 1 month ago.
SDカードへの書き込み
初めまして、初めてご質問させていただきます。
スイッチを押すと、SDカードの時間を書き込みむプログラムを作成しています。 Cookbookの「SD Card File System」を参考にさせていただきました。
if(fp == NULL) { error("Could not open file for write\n"); }else{
時間を取得 time_t seconds = time(NULL); char time[16]; strftime(time, 15, "%H:%M:%S", localtime(&seconds));
書き込む処理 fprintf(fp, "%s,%d\r",time,avg_data);
fclose(fp);
}
普通に書き込む分には問題なく動作しています。 しかし、一度SDカードを抜き、再度挿入してから書き込むとエラーになってしまいます。 fprintf(fp, "%s,%d\r",time,avg_data); の部分でエラーで停止しているようです。
なぜ、このようなことが起こるのでしょうか? また、対処方法等がありましたら、ご教授お願い致します。
2 Answers
11 years, 1 month ago.
原因はわからないのですが、 sdオブジェクトをポインタで宣言し、読み書きが必要なときだけnewとdeleteをすればよいです。
sdオブジェクト ポインタ宣言(グローバル)
sdオブジェクトをnewする、file読み書き、sdオブジェクトをdeleteする(抜き差し禁止)
SDカード抜き差し
sdオブジェクトをnewする、file読み書き、sdオブジェクトをdeleteする(抜き差し禁止) ...
コード例
#include "mbed.h" #include "SDFileSystem.h" SDFileSystem *Sd; int main() { printf("Hello World!\n"); mkdir("/sd/mydir", 0777); Sd = new SDFileSystem(p5, p6, p7, p8, "sd"); // new sd object *** unable to draw sd card *** FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); if(fp == NULL) { error("Could not open file for write\n"); } fprintf(fp, "Hello fun SD Card World!"); fclose(fp); delete Sd; // delete object *** enable to draw sd card *** printf("Goodbye World!\n");