drive | 拡張ソケットの番号 |
*fname | ファイル名 |
*buf | 読み込みアドレス |
nblock | 読み込むブロック数 |
*time | タイムスタンプ |
flag | フラグ |
BUD_FLAG_VERIFY:ベリファイあり | |
BUD_FLAG_COPY(n):コピーフラグ(nはコピーフラグ値) |
BUD_ERR_OK | 処理要求を受け付けた |
BUD_ERR_BUSY | 処理中のため要求を受け付けられなかった |
拡張ソケットを指定する引数 drive には次の値が指定可能です。
BUD_DRIVE_A1 | ポートAの拡張ソケット1 |
BUD_DRIVE_A2 | ポートAの拡張ソケット2 |
BUD_DRIVE_B1 | ポートBの拡張ソケット1 |
BUD_DRIVE_B2 | ポートBの拡張ソケット2 |
BUD_DRIVE_C1 | ポートCの拡張ソケット1 |
BUD_DRIVE_C2 | ポートCの拡張ソケット2 |
BUD_DRIVE_D1 | ポートDの拡張ソケット1 |
BUD_DRIVE_D2 | ポートDの拡張ソケット2 |
通常のアプリケーションであればこの関数でファイルをまるごとセーブします。 同名ファイルがある場合、古いファイルは消去されます。 ただし同名ファイルが実行ファイルであった場合はエラーとなります。 また、*bufには必ず 4バイトバウンダリでアドレスを与えるようにしてください。
Sint32 ret; Sint32 blocks, flag; BUS_TIME time; SYS_RTC_DATE rtc; extern char SaveData[]; /* セーブするデータ(512*10バイト) */ : blocks = 10; /* ファイルサイズは10ブロック */ flag = BUD_FLAG_VERIFY | BUD_FLAG_COPY(0x00); /* ベリファイを行う | コピーフラグを00Hに設定する */ syRtcGetDate( &rtc ); time = ( BUS_TIME )rtc; /* タイムスタンプの設定 */ ret = buSaveFile(BUD_DRIVE_A1, "SAVEDATA", SaveData, blocks, &time, flag); if (ret == BUD_ERR_OK) { /* セーブリクエストに成功した */ } else { /* セーブリクエストに失敗した(BUSY) */ } :
buStat()関数によるこの関数の完了ステータスは
BUD_ERR_OK | 正常終了 |
BUD_ERR_NO_DISK | メモリカードがない |
BUD_ERR_UNFORMAT | フォーマットされていない |
BUD_ERR_FILE_NOT_FOUND | ファイルがない |
BUD_ERR_CANNOT_OPEN | ファイルが開けない |
セーブには、(セーブブロック数×5 Int)の時間を必要とします。 (他の拡張ソケットの状態等によっては、多少時間は変動します。)