■ Fコマンド(FHをクローズしないデータ書き込み)について
uALFAT搭載製品には、uALFATのコマンドでFコマンド(0x46)があります。 Fコマンドは、ファイルハンドル(FH)をクローズせずにWコマンドで書き込んだデータをメモリーデバイスに書き込むコマンドです。CコマンドはFHを閉じてデータを書き込むのに対して、FコマンドはFHを閉じずにFHのデータを書き込みますので、Fコマンド実行後は再び、OコマンドによってFHを開きなおさなくても、Wコマンドから始められるため、コマンドの送信手順が減ります。 また、Fコマンド実行後に書き込まれたデータは、すでにデータとしてメモリデバイスに書き込まれていますので、予期しない電源切断があってもFコマンド実行前までのデータは書き込まれていますのでデータの保護にもつながります。 FHのクローズはCコマンドで行うことができます。
※本コマンドはuALFAT Ver.3.13以降で使用できます。
■Fコマンド(0x46)
コマンド形式:F{sp}FH{cr}
引数:{sp}はスペース(0x20)、FHはファイルハンドル値(0〜3)、{cr}はキャリッジリターン(0x0D)
例:ファイルハンドル1のデータをメモリーデバイスにフラッシュする
F{sp}1{cr}
戻り値:ACK(正常完了)は!00です。!00以外の場合はエラーです。
補足:FコマンドでデータをフラッシュするとFH内のデータはメモリデバイスに書き込まれFHの中身はすべてなくなります。同じファイルにデータを追記したい場合には、Wコマンドから実行します。(FHは閉じられていませんのでOコマンドは実行しません)
・1つのファイルにデータを追記していく場合のコマンド例 ※{cr}と{sp}は省略して記載しています。
I //メモリデバイス初期化 →!00確認
O 2W>TEST.TXT //FH2にTEST.TXTを新規作成 →!00確認
W 2>64 //FH2に100バイトのデータ書き込みを指定 →!00確認
・・・・・・・100バイトのデータ・・・・・
→$00000064 及び !00確認
F 2 //FH2のデータをフラッシュ →!00確認
---------再度100バイトのデータを書き込む場合-------
W 2>64 //FH2に100バイトのデータ書き込みを指定 →!00確認
・・・・・・・100バイトのデータ・・・・・
→$00000064 及び !00確認
C 2 //FH2をクローズ
もしまだ同じFHにデータを書き込む場合にはCコマンドでFHをクローズせずにFコマンドでデータをフラッシュして、Wコマンドから繰り返し実行します。最後にCコマンドでFHをクローズしてください。
※原則としてCコマンドでFHをクローズした後でないと、メモリデバイスの電源切断後のデータ書き込みは保証されません。
|