グラフ関数電卓 fx-9860G SDK (ファイル操作)

2013/05/28


◆ Bfile で始まる関数

先頭に Bfile が付く関数は、ファイルアクセス用の関数だが、ファイルはSDカードの以外にも Storage Memory にも作成できる。 また、メインメモリ内にもファイルを作ることができるようだ。 特に記載が無い場合は Storage Memory と SD カードへの命令となります。

システムを壊すのが怖いのと、フラッシュメモリの書き換え回数が増えて本体の寿命を縮めるので扱わなかったが、どうしても使用しないといけない事になったので調べたことをまとめておく。

OPEN

int Bfile_OpenFile { const FONTCHARACTER *filename, int mode }
既存のファイルを開きます。

*filename はファイルネーム
  \\fls0\ はストレージメモリ
  \\crd0\ は SD カード
  大文字と小文字を区別します。

mode は以下の定数
    _OPENMODE_READ        読み取り専用
    _OPENMODE_READ_SHARE     読み取り専用/他のプロセスへのアクセス拒否 
    _OPENMODE_WRITE       書き込み専用
    _OPEM<ODE_READWRITE     読み取り・書き込み
    _OPENMODE_READWRITE_SHARE  読み取り・書き込み/他のプロセスへのアクセス拒否

オープンに失敗すると戻り値は NULL、
成功したらファイルハンドルを戻す。
int Bfile_OpenMainMemory { const unsigned char *name }
メインメモリ内のファイルを開きます。

name は8文字内のファイルネーム。大文字と小文字を区別します。

オープンに失敗すると NULL、成功するとファイルハンドルを返します。
4つまで同時に開くことができる。

READ

int Bfile_ReadFile { int HANDLE, void *buf, int size, int readpos }
ファイル(メインメモリファイル)からデータを読み出す。

HANDLE  オープン時に取得したファイルハンドル
*buf   読み取りデータの保存先ポインタ
size   読み取りバイト数
readpos  読み取り開始位置

読み取りに失敗すると NULL を返し、成功すると読み取りバイト数を返します。

WRITE

int Bfile_WriteFile { int HANDLE, void *buf, int size }
ファイル(メインメモリファイル)へデータを書き出す。 書き出し位置はファイルポインタの位置

HANDLE  オープン時に取得したファイルハンドル
*buf   書込みデータのポインタ
size   書込みバイト数

書込みに失敗すると NULL を返し、成功すると書込み先頭アドレスを返します。

SEEK

int Bfile_SeekFile { int HANDLE, int pos }
ファイル(メインメモリファイル)へデータを書き出す。 書き出し位置はファイルポインタの位置

HANDLE  オープン時に取得したファイルハンドル
pos    移動先アドレス

失敗すると NULL を返し、成功すると読込み可能バイト数を返します。
ファイルのオープン直後のファイルポインタは先頭になります。

CLOSE

int Bfile_CloseFile { int HANDLE }
オープンしているファイルを(メインメモリファイル)を閉じます。

HANDLE  オープン時に取得したファイルハンドル

正常に閉じると 0 を返し、失敗するとエラーコードを返します。

FREE SIZE

int Bfile_GetMediaFree { enum DEVICE_TYPE devicetype, int *freebytes }
メインメモリ、ストレージメモリ、SD カードの空き領域を調べます。(バイト単位)

devicetype  以下のの定数で宣言します。
  DEVICE_MAIN_MEMORY メインメモリ
  DEVICE_STORAGE   ストレージ・メモリ
  DEVICE_SD_CARD   SD カード

*freebytes  空き領域のサイズを保存する変数のポインタ

正常にサイズを得ると 0 を返し、失敗するとエラーコードを返します。

FILE SIZE

int Bfile_GetFileSize { int HANDLE }
使用中のファイルサイズを調べます。(バイト単位)

HANDLE  オープン時に取得したファイルハンドル

*freebytes  空き領域のサイズを保存する変数のポインタ

正常にサイズを得るとファイルのサイズを返し、失敗するとエラーコード(負の値)を返します。

CREATE FILE

int Bfile_CreateFile { const FONTCHARACTER *filename, int size }
ファイルを作成します。

*filename はファイルネーム
  \\fls0\ はストレージメモリ
  \\crd0\ は SD カード
  大文字と小文字を区別します。

size はファイルサイズ。

正常に作成すると 0 を返し、失敗するとエラーコード(負の値)を返します。
int Bfile_CreateMainMemory { const unsiged char *name }
メインメモリにファイルを作成します。

name は8文字内のファイルネーム。大文字と小文字を区別します。

正常に作成すると 0 を返し、失敗するとエラーコード(負の値)を返します。

DELETE FILE

int Bfile_DeleteFile { const FONTCHARACTER *filename }
ファイルを削除します。

*filename はファイルネーム
  \\fls0\ はストレージメモリ
  \\crd0\ は SD カード
  大文字と小文字を区別します。

size はファイルサイズ。

正常に削除すると 0 を返し、失敗するとエラーコード(負の値)を返します。
int Bfile_DeleteMainMemory { const unsiged char *name }
メインメモリのファイルを削除します。

name は8文字内のファイルネーム。大文字と小文字を区別します。

正常に作成すると 0 を返し、失敗するとエラーコード(負の値)を返します。

CREATE DIRECTORY

int Bfile_CreateDirectory { const FONTCHARACTER *pathname }
ストレージ・メモリ/SDカードにディレクトリを作成します。
メインメモリにはディレクトリを作成できません。

*pathname  ディレクトリ名

正常に作成すると 0 を返し、失敗するとエラーコード(負の値)を返します。

DELETE DIRECTORY

int Bfile_DeleteDirectory { const FONTCHARACTER *pathname }
ディレクトリを削除します。

*pathname  ディレクトリ名

正常に作成すると 0 を返し、失敗するとエラーコード(負の値)を返します。

RENAME

int Bfile_RenameMainMemory { const unsigned char *oldname, const unsigned char *newname }
メインメモリファイルのファイル名を変更します。

*oldname  変更前のファイル名
*newname  変更後のファイル名
ファイル名は8文字内で、大文字と小文字を区別します。

正常に作成すると 0 を返し、失敗するとエラーコード(負の値)を返します。

FIND

int Bfile_FindFirst { const FONTCHARACTER *pathname, int *FindHandle, FONTCHARACTER *foundfile, FILE_INFO *fileinfo }


*pathname   パス名
*FindHandle  検索ハンドル
*foundfile   
*fileinfo   検索結果

typedef struct tag_FILE_INFO {
  unsigned short id;
  unsigned short type;
             DT_DIRECTORY      ディレクトリ名
             DT_FILE        ファイル名
             DT_ADDIN_APP      アドイン・アプリケーション名
             DT_EACT        eActivity名
             DT_LANGUAGE      ランゲージ・ファイル名
             DT_BITMAP       ビットマップ・ファイル名
             DT_MAINMEM       メインメモリ・ファイル名
             DT_TEMP        一時ファイル名
             DT_DOT “.” (Current directory)
             DT_DOTDOT “..” (Parent directory)
             DT_VOLUME       ボリュームラベル名
  unsigned long fsize;
  unsigned long dsize;
  unsigned int propety
  unsigned long address;
} FILE_INFO

ファイル名は8文字内で、大文字と小文字を区別します。

正常に作成すると 0 を返し、失敗するとエラーコード(負の値)を返します。
int Bfile_FindNext { int FindHandle, FONTCHARACTER *foundfile, FILE_INFO *fileinfo }

FindHandle
*foundfile
*fileinfo

正常に作成すると 0 を返し、失敗するとエラーコード(負の値)を返します。
int Bfile_FindClose { int FindHandle }

FindHandle

正常に作成すると 0 を返し、失敗するとエラーコード(負の値)を返します。

FONTCHARACTER

パス名で使用できる文字は以下のものだけ
¥¥, c, r, d, 0, *, ., b, m, p;