バイナリファイルの書込み。
mbedで2kByte程度のバイナリデータをfwriteでファイルに書込もうとしたら、途中からデータが正しく書込めない。
調査したら、フォーラムのfwrite and bufferhttp://mbed.org/forum/mbed/topic/2106/に、
mbedのバッファは512バイトであると書かれていて、大きなデータを一気に書込むうまい方法が見当たらなかったので、ちょっと汚いコードだが、
#define DATA_SIZE 2048 // Data Size
#define MBED_BUFF 256
FILE *fp;
unsigned char dataBuffer[DATA_SIZE];
unsigned char *bufferIndex
unsigned int storeSize;
if ( NULL == (fp = fopen("/sd/hoge.dat", "wb" )) ) {
error( "" ); // Error LED brinking.
return 1;
}
bufferIndex = dataBuffer;
for(storeSize = DATA_SIZE; storeSize > MBED_BUFF; storeSize -= MBED_BUFF) {
fwrite(bufferIndex, 1, MBED_BUFF, fp);
bufferIndex += MBED_BUFF;
}
fwrite(bufferIndex, 1, storeSize, fp);
で、漏れなく書込めた。
1 comment on バイナリファイルの書込み。:
Please log in to post comments.

Localでは割込みが無視される
Localへ fwrite() データを書込んでいる最中は割込みが無視されているようなので、InterruptInを使う場合はSDなどの外部記憶装置を使用する。(前出コードはsdを利用)
fread() も多分同様。