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

相关文章

linux批量替换文件内容的实现方式

《linux批量替换文件内容的实现方式》本文总结了Linux中批量替换文件内容的几种方法,包括使用sed替换文件夹内所有文件、单个文件内容及逐行字符串,强调使用反引号和绝对路径,并分享个人经验供参考... 目录一、linux批量替换文件内容 二、替换文件内所有匹配的字符串 三、替换每一行中全部str1为st

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys