FATFS学习笔记——FATFS写文件的两种方式

2024-02-08 08:44

本文主要是介绍FATFS学习笔记——FATFS写文件的两种方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.以hex文件直接写:

适用于需要保存比较大的数据时,无需进行格式化处理,直接保存文件

    FIL file;FRESULT res;UINT bytes_written;// 创建文件res = f_open(&file, "0:/FATFS/TestData.txt", FA_CREATE_ALWAYS | FA_WRITE);if (res != FR_OK) {printf("Failed to create file\n");return 1;}// 待写入的hex数组数据uint8_t hex_data[] = {0x12, 0x34, 0x56, 0x78,0x11,0x22,0x33};uint32_t data_size = sizeof(hex_data[0]);uint32_t data_count = sizeof(hex_data) / sizeof(hex_data[0]);// 写入数据res = f_write(&file, hex_data, data_size, &bytes_written);if (res != FR_OK) {printf("Failed to write data to file\n");f_close(&file);return 1;}// 关闭文件f_close(&file);printf("Data written to file successfully\n");

以这种形式写的时候,读的时候往往可以直接读出存储的数据,无需任何数据格式的转换,比如:直接将一个结构体变量数据存到FATFS 文件文本内,需要读取的时候,直接将读取的数据存储到相同的结构体变量内;

2 转化为格式化字符串的形式后再进行存放

//写fatfs 文件--写字符串数据 typedef struct {U8 Soft_Version[16];//软件版本号U8 Hard_Version[16];}MasterDP_t;MasterDP_t DP = {"V1.01","V1.01"};FIL file;FRESULT res;UINT bytes_written;// 创建文件res = f_open(&file, "0:/FATFS/TestData.txt", FA_CREATE_ALWAYS | FA_WRITE);if (res != FR_OK) {printf("Failed to create file\n");return 1;}// 待写入的数组bufferuint8_t temp_data[256] = {0};sprintf(temp_data,"HardVersion:%s,SoftVersion:%s",DP.Hard_Version,DP.Soft_Version);// 格式化字符串数据res = f_write(&file, temp_data, strlen(temp_data), &bytes_written);if (res != FR_OK) {printf("Failed to write data to file\n");f_close(&file);return 1;}// 关闭文件f_close(&file);printf("Data written to file successfully\n");

使用格式化字符串写文件的格式存储数据,读出时,往往需要进行字符串的截取,以上面的片段为例,往往需要先读取出文件的内容,然后查找指定字符子串的起始位置,随后赋值;

fr = f_open(&freadfil, "0:/FATFS/TestData.txt", FA_READ);if (0 == fr) {mymemset(ReadBuffer,0,sizeof(ReadBuffer));fr = f_read(&freadfil, ReadBuffer, sizeof(ReadBuffer), &br);//获取本地系统参数数据if(br != 0)//文件非空{u8  *ptr_h = (uint8_t*)strstr((const               char*)ReadBuffer,"HardVersion:");//查找"HardVersion:"字符串起始位置u8  *ptr_s = (uint8_t*)strstr((const char*)ReadBuffer,",SoftVersion:");if(ptr_h != NULL && ptr_s != NULL && ptr_h < ptr_s){ptr_h += strlen("HardVersion:");u8 HardverLen = ptr_s - ptr_h;if(HardverLen  > sizeof(DP.Hard_Version))HardverLen  = 16;for(u32 i = 0;i < HardverLen;i++)DP.Hard_Version[i] = *ptr_h++;ptr_s += strlen(",SoftVersion:");for(u32 i = 0;i < HardverLen;i++)DP.Soft_Version[i] = *ptr_s++;}}f_close(&freadfil);}

这篇关于FATFS学习笔记——FATFS写文件的两种方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/690500

相关文章

虚拟机与物理机的文件共享方式

《虚拟机与物理机的文件共享方式》文章介绍了如何在KaliLinux虚拟机中实现物理机文件夹的直接挂载,以便在虚拟机中方便地读取和使用物理机上的文件,通过设置和配置,可以实现临时挂载和永久挂载,并提供... 目录虚拟机与物理机的文件共享1 虚拟机设置2 验证Kali下分享文件夹功能是否启用3 创建挂载目录4

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

MYSQL行列转置方式

《MYSQL行列转置方式》本文介绍了如何使用MySQL和Navicat进行列转行操作,首先,创建了一个名为`grade`的表,并插入多条数据,然后,通过修改查询SQL语句,使用`CASE`和`IF`函... 目录mysql行列转置开始列转行之前的准备下面开始步入正题总结MYSQL行列转置环境准备:mysq

Linux(Centos7)安装Mysql/Redis/MinIO方式

《Linux(Centos7)安装Mysql/Redis/MinIO方式》文章总结:介绍了如何安装MySQL和Redis,以及如何配置它们为开机自启,还详细讲解了如何安装MinIO,包括配置Syste... 目录安装mysql安装Redis安装MinIO总结安装Mysql安装Redis搜索Red

Java文件上传的多种实现方式

《Java文件上传的多种实现方式》文章主要介绍了文件上传接收接口的使用方法,包括获取文件信息、创建文件夹、保存文件到本地的两种方法,以及如何使用Postman进行接口调用... 目录Java文件上传的多方式1.文件上传接收文件接口2.接口主要内容部分3.postman接口调用总结Java文件上传的多方式1