硬汉嵌入式论坛

 找回密码
 立即注册
查看: 142|回复: 3
收起左侧

[有问必答] SPIFS中怎么读取文件中的内容(追加)

[复制链接]

24

主题

58

回帖

130

积分

初级会员

积分
130
发表于 2024-4-17 16:13:38 | 显示全部楼层 |阅读模式
[C] 纯文本查看 复制代码
open_file(&(list->File),(char *)(list->File.filename),(char *)(list->File.extname) );

这一行传参是不是正确的?一加上这一行就报错了。
修改的代码在main.c中的这一段,主要想实现打印出文件中的内容。
[C] 纯文本查看 复制代码
void disp_list(FileList *list) {
    FileList *ptr = NULL;
    FileState fstate;
    puts("filelist:");
    while(list) {
        ptr = list->prev;
        putchar('\t');
        disp_name(list->File.filename, sizeof(list->File.filename));
        putchar('.');
        disp_name(list->File.extname, sizeof(list->File.extname));
        putchar('\n');

        putchar('\t');
        read_state(&(list->File), &fstate);
        printf("create time: %d-%d-%d\n", (fstate.year+2000), fstate.month, fstate.day);

        putchar('\t');
        printf("file state: 0x%x\n", fstate.state);

        putchar('\t');
        printf("block addr: 0x%x,cluster_addr: 0x%x,length: 0x%x\n",
               list->File.block, list->File.cluster, list->File.length);
        list = ptr;
        putchar('\t');
        open_file(&(list->File),(char *)(list->File.filename),(char *)(list->File.extname) );
        read_file(&(list->File), dat, 0, 256) ;
        printf("%s\n",dat);
        printf("%s\n",list->File.filename);
        //printf("%s\n",list->File.extname);
    }
}



[C] 纯文本查看 复制代码
uint8_t open_file(File *file, char *filename, char *extname) 

[C] 纯文本查看 复制代码
typedef struct file {
    uint8_t filename[8]; // 文件名
    uint8_t extname[4]; // 拓展名
    uint32_t block;    // 文件索引记录地址
    uint32_t cluster; // 文件内容起始扇区地址
    uint32_t length; // 文件大小
} File;

// 文件信息链表
// 32bytes(64bit), 28bytes(32bit)
typedef struct file_list {
    File File;
    struct file_list *prev;
} FileList;

[C] 纯文本查看 复制代码
void disp_list(FileList *list)


源码 SPIFS.rar (164.29 KB, 下载次数: 2)




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106718
QQ
发表于 2024-4-18 08:57:37 | 显示全部楼层
没用过SPIFS,这个有必要进入函数源码里面调试下,看看那个地方出错了。
回复

使用道具 举报

24

主题

58

回帖

130

积分

初级会员

积分
130
 楼主| 发表于 2024-4-18 13:47:17 | 显示全部楼层
eric2013 发表于 2024-4-18 08:57
没用过SPIFS,这个有必要进入函数源码里面调试下,看看那个地方出错了。

版主有什么推荐可以应用于单片机上的日志系统。有看过FLASHDB,移植过程太难,看不懂调用关系。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106718
QQ
发表于 2024-4-19 08:40:18 | 显示全部楼层
Y1ng 发表于 2024-4-18 13:47
版主有什么推荐可以应用于单片机上的日志系统。有看过FLASHDB,移植过程太难,看不懂调用关系。

用的什么存储器,SPI Flash吗,

这个的话,还可以使用FlashFS,LittleFS,LevelX
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-30 18:59 , Processed in 0.270648 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表