App:Library:LVGL:docs:Overview:File system
https://docs.lvgl.io/8.2/overview/file-system.html
File system
英文 | 自動翻訳 |
---|---|
LVGL has a 'File system' abstraction module that enables you to attach any type of file system. A file system is identified by an assigned drive letter. For example, if an SD card is associated with the letter |
LVGLには'File system'抽象化モジュールがあり、任意の種類のファイルシステムをアタッチすることができます。
ファイルシステムは、ドライブレターで識別されます。 例えば、SDカードに |
Ready to use drivers
英文 | 自動翻訳 |
---|---|
The lv_fs_if repository contains prepared drivers using POSIX, standard C and the FATFS API. See its README for the details. |
lv_fs_ifリポジトリには、POSIX、標準C、FATFS APIを使用したドライバが用意されています。
詳しくはREADMEをご覧ください。 |
Adding a driver
Registering a driver
英文 | 自動翻訳 |
---|---|
To add a driver, a The static lv_fs_drv_t drv; /*Needs to be static or global*/
lv_fs_drv_init(&drv); /*Basic initialization*/
drv.letter = 'S'; /*An uppercase letter to identify the drive */
drv.cache_size = my_cahce_size; /*Cache size for reading in bytes. 0 to not cache.*/
drv.ready_cb = my_ready_cb; /*Callback to tell if the drive is ready to use */
drv.open_cb = my_open_cb; /*Callback to open a file */
drv.close_cb = my_close_cb; /*Callback to close a file */
drv.read_cb = my_read_cb; /*Callback to read a file */
drv.write_cb = my_write_cb; /*Callback to write a file */
drv.seek_cb = my_seek_cb; /*Callback to seek in a file (Move cursor) */
drv.tell_cb = my_tell_cb; /*Callback to tell the cursor position */
drv.dir_open_cb = my_dir_open_cb; /*Callback to open directory to read its content */
drv.dir_read_cb = my_dir_read_cb; /*Callback to read a directory's content */
drv.dir_close_cb = my_dir_close_cb; /*Callback to close a directory */
drv.user_data = my_user_data; /*Any custom data if required*/
lv_fs_drv_register(&drv); /*Finally register the drive*/
Any of the callbacks can be |
ドライバを追加するには、以下のようにlv_fs_drv_t を初期化する必要があります。
lv_fs_drv_t は、ローカル変数ではなく、スタティック、グローバル、またはダイナミックにアロケートされたものである必要があります。 static lv_fs_drv_t drv; /*Needs to be static or global*/
lv_fs_drv_init(&drv); /*Basic initialization*/
drv.letter = 'S'; /*An uppercase letter to identify the drive */
drv.cache_size = my_cahce_size; /*Cache size for reading in bytes. 0 to not cache.*/
drv.ready_cb = my_ready_cb; /*Callback to tell if the drive is ready to use */
drv.open_cb = my_open_cb; /*Callback to open a file */
drv.close_cb = my_close_cb; /*Callback to close a file */
drv.read_cb = my_read_cb; /*Callback to read a file */
drv.write_cb = my_write_cb; /*Callback to write a file */
drv.seek_cb = my_seek_cb; /*Callback to seek in a file (Move cursor) */
drv.tell_cb = my_tell_cb; /*Callback to tell the cursor position */
drv.dir_open_cb = my_dir_open_cb; /*Callback to open directory to read its content */
drv.dir_read_cb = my_dir_read_cb; /*Callback to read a directory's content */
drv.dir_close_cb = my_dir_close_cb; /*Callback to close a directory */
drv.user_data = my_user_data; /*Any custom data if required*/
lv_fs_drv_register(&drv); /*Finally register the drive*/
コールバックのいずれかを |
Implementing the callbacks
Open callback
英文 | 自動翻訳 |
---|---|
The prototype of void * (*open_cb)(lv_fs_drv_t * drv, const char * path, lv_fs_mode_t mode);
The return value is a pointer to a file object that describes the opened file or The returned file object will be passed to other file system related callbacks. (see below) |
open_cb のプロトタイプは以下のようなものです。
void * (*open_cb)(lv_fs_drv_t * drv, const char * path, lv_fs_mode_t mode);
戻り値は、オープンしたファイルを記述したファイルオブジェクトへのポインタ、または何らかの問題(ファイルが見つからなかったなど)があった場合は 返されたファイルオブジェクトは、他のファイルシステム関連のコールバック関数に渡されます。(下記参照) |
Other callbacks
英文 | 自動翻訳 |
---|---|
The other callbacks are quite similar. For example looks like this: lv_fs_res_t (*write_cb)(lv_fs_drv_t * drv, void * file_p, const void * buf, uint32_t btw, uint32_t * bw);
For
For a template of these callbacks see lv_fs_template.c. |
他のコールバックは非常によく似ています。
例えばwrite_cb は以下のような感じです。 lv_fs_res_t (*write_cb)(lv_fs_drv_t * drv, void * file_p, const void * buf, uint32_t btw, uint32_t * bw);
これらのコールバックのテンプレートは,lv_fs_template.cを参照してください. |
Usage example
英文 | 自動翻訳 |
---|---|
The example below shows how to read from a file: lv_fs_file_t f;
lv_fs_res_t res;
res = lv_fs_open(&f, "S:folder/file.txt", LV_FS_MODE_RD);
if(res != LV_FS_RES_OK) my_error_handling();
uint32_t read_num;
uint8_t buf[8];
res = lv_fs_read(&f, buf, 8, &read_num);
if(res != LV_FS_RES_OK || read_num != 8) my_error_handling();
lv_fs_close(&f);
The mode in This example shows how to read a directory's content. It's up to the driver how to mark directories in the result but it can be a good practice to insert a lv_fs_dir_t dir;
lv_fs_res_t res;
res = lv_fs_dir_open(&dir, "S:/folder");
if(res != LV_FS_RES_OK) my_error_handling();
char fn[256];
while(1) {
res = lv_fs_dir_read(&dir, fn);
if(res != LV_FS_RES_OK) {
my_error_handling();
break;
}
/*fn is empty, if not more files to read*/
if(strlen(fn) == 0) {
break;
}
printf("%s\n", fn);
}
lv_fs_dir_close(&dir);
|
以下の例では、ファイルから読み取る方法を示しています。
lv_fs_file_t f;
lv_fs_res_t res;
res = lv_fs_open(&f, "S:folder/file.txt", LV_FS_MODE_RD);
if(res != LV_FS_RES_OK) my_error_handling();
uint32_t read_num;
uint8_t buf[8];
res = lv_fs_read(&f, buf, 8, &read_num);
if(res != LV_FS_RES_OK || read_num != 8) my_error_handling();
lv_fs_close(&f);
この例は、ディレクトリの内容を読み取る方法を示しています。 結果の中でディレクトリをどのようにマークするかはドライバ次第ですが、各ディレクトリ名の前に'/' を挿入するのは良い習慣と言えるでしょう。 lv_fs_dir_t dir;
lv_fs_res_t res;
res = lv_fs_dir_open(&dir, "S:/folder");
if(res != LV_FS_RES_OK) my_error_handling();
char fn[256];
while(1) {
res = lv_fs_dir_read(&dir, fn);
if(res != LV_FS_RES_OK) {
my_error_handling();
break;
}
/*fn is empty, if not more files to read*/
if(strlen(fn) == 0) {
break;
}
printf("%s\n", fn);
}
lv_fs_dir_close(&dir);
|
Use drives for images
英文 | 自動翻訳 |
---|---|
Image objects can be opened from files too (besides variables stored in the compiled program).
|
画像オブジェクトはファイルからも開くことができます(コンパイルされたプログラムに格納されている変数を除く)。
|
API
英文 | 自動翻訳 |
---|---|
Typedefs typedef uint8_t lv_fs_res_t typedef uint8_t lv_fs_mode_t typedef struct _lv_fs_drv_t lv_fs_drv_t Enums enum [anonymous]
enum [anonymous]
enum lv_fs_whence_t
|
Typedefs
typedef uint8_t lv_fs_res_t typedef uint8_t lv_fs_mode_t typedef struct _lv_fs_drv_t lv_fs_drv_t Enums enum [anonymous]
enum [anonymous]
enum lv_fs_whence_t
|
Functions void _lv_fs_init(void)
void lv_fs_drv_init(lv_fs_drv_t *drv)
void lv_fs_drv_register(lv_fs_drv_t *drv)
lv_fs_drv_t *lv_fs_get_drv(char letter)
bool lv_fs_is_ready(char letter)
lv_fs_res_t lv_fs_open(lv_fs_file_t *file_p, const char *path, lv_fs_mode_t mode)
lv_fs_res_t lv_fs_close(lv_fs_file_t *file_p)
lv_fs_res_t lv_fs_read(lv_fs_file_t *file_p, void *buf, uint32_t btr, uint32_t *br)
lv_fs_res_t lv_fs_write(lv_fs_file_t *file_p, const void *buf, uint32_t btw, uint32_t *bw)
lv_fs_res_t lv_fs_seek(lv_fs_file_t *file_p, uint32_t pos, lv_fs_whence_t whence)
lv_fs_res_t lv_fs_tell(lv_fs_file_t *file_p, uint32_t *pos)
lv_fs_res_t lv_fs_dir_open(lv_fs_dir_t *rddir_p, const char *path)
lv_fs_res_t lv_fs_dir_read(lv_fs_dir_t *rddir_p, char *fn)
lv_fs_res_t lv_fs_dir_close(lv_fs_dir_t *rddir_p)
char *lv_fs_get_letters(char *buf)
const char *lv_fs_get_ext(const char *fn)
char *lv_fs_up(char *path)
const char *lv_fs_get_last(const char *path)
struct _lv_fs_drv_t
struct lv_fs_file_cache_t
struct lv_fs_file_t
struct lv_fs_dir_t
|
Functions
void _lv_fs_init(void)
void lv_fs_drv_init(lv_fs_drv_t *drv)
void lv_fs_drv_register(lv_fs_drv_t *drv)
lv_fs_drv_t *lv_fs_get_drv(char letter)
bool lv_fs_is_ready(char letter)
lv_fs_res_t lv_fs_open(lv_fs_file_t *file_p, const char *path, lv_fs_mode_t mode)
lv_fs_res_t lv_fs_close(lv_fs_file_t *file_p)
lv_fs_res_t lv_fs_read(lv_fs_file_t *file_p, void *buf, uint32_t btr, uint32_t *br)
lv_fs_res_t lv_fs_write(lv_fs_file_t *file_p, const void *buf, uint32_t btw, uint32_t *bw)
lv_fs_res_t lv_fs_seek(lv_fs_file_t *file_p, uint32_t pos, lv_fs_whence_t whence)
lv_fs_res_t lv_fs_tell(lv_fs_file_t *file_p, uint32_t *pos)
lv_fs_res_t lv_fs_dir_open(lv_fs_dir_t *rddir_p, const char *path)
lv_fs_res_t lv_fs_dir_read(lv_fs_dir_t *rddir_p, char *fn)
lv_fs_res_t lv_fs_dir_close(lv_fs_dir_t *rddir_p)
char *lv_fs_get_letters(char *buf)
const char *lv_fs_get_ext(const char *fn)
char *lv_fs_up(char *path)
const char *lv_fs_get_last(const char *path)
struct _lv_fs_drv_t
struct lv_fs_file_cache_t
struct lv_fs_file_t
struct lv_fs_dir_t
|