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);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/673817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Script】使用pyOpenAnnotate搭建半自动标注工具(附python源码)

文章目录 0. Background1. Method2. Code3. Example: 雄鹿红外图像标注3.1 选择色彩空间3.2 执行阈值3.3 执行形态学操作3.4 轮廓分析以找到边界框3.5 过滤不需要的轮廓3.6 绘制边界框3.7 以需要的格式保存Reference本文将手把手教你用Python和OpenCV搭建一个半自动标注工具(包…

【项目源码】一套基于springboot+Uniapp框架开发的智慧医院3D人体导诊系统源码

智慧医院3D人体导诊系统源码 开发语言:java 开发工具:IDEA 前端框架:Uniapp 后端框架:springboot 数 据 库:mysql 移 动 端:微信小程序、H5 “智慧导诊”以人工智能手段为依托,为人们提供智能分诊、问病信息等服务,在一定程度上满足了人们自我健康管理、精准挂号…

6个好看的wordpress模板

简站wordpress服务业通用主题 2023年立秋纪念版&#xff0c;简站wordpress服务行业通用主题&#xff0c;适合服务行业企业官网使用。 https://www.jianzhanpress.com/?p5393 小语种翻译wordpress主题 小语种国家外贸网站建设需要的wordpress主题模板&#xff0c;适合做小语…

单链表实现约瑟夫环

大家对约瑟夫环是比较陌生的&#xff0c;但是对于大多数人来说&#xff0c;丢手绢却一点都不陌生&#xff0c;其实约瑟夫环和丢手绢差不多。 约瑟夫环 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1&#xff0c;2&#xff0c;3…n分别表示)围坐在一张圆桌周围。…

Android 10.0 系统sim卡4G LTE信号格数对应的信号强度值修改

1.前言 在10.0的系统产品开发中,在手机通讯这块功能也是特别重要的,在手机插入手机sim卡后,会根据当前的sim卡信号来显示对应的 sim卡信号显示格数,所以为了增强相关的信号格数,就需要修改sim卡对应的信号强度值来实现相关的功能 2.系统sim卡4G LTE信号格数对应的信号强…

分享78个行业PPT,总有一款适合您

分享78个行业PPT&#xff0c;总有一款适合您 78个行业PPT下载链接&#xff1a;https://pan.baidu.com/s/19UL58I5Z1QZidVrq50v6fg?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

海信电视安装第三方软件-电视家分享(侵权联系作者删除)

1.海信电视安装第三方软件电视家&#xff0c;相对来说还是比较复杂的。首先要准备电视安装包&#xff0c;一般来说是电视家海信专用安装包&#xff0c;大家可以搜索电视家的官方网站。这里附上官网地址https://www.tvapk.net/dianshijia/ 点击上方的电视软件。 可以进入下载软…

中兴R5300G4服务器查看服务器、主板序列号及硬盘RAID信息

本文在操作系统带内通过指令操作查看中兴R5300G4服务器、主板序列号及硬盘RAID信息。 一、中兴R5300G4服务器查看服务器、主板序列号 在Linux服务器上&#xff0c;可以使用dmidecode命令来查看服务器的硬件相关信息&#xff0c;由于该命令要读取系统的硬件信息&#xff0c;因…

阅读《极客时间 | Kafka核心技术与实战》(一)【Kafka入门】

阅读《极客时间 | Kafka核心技术与实战》 为什么要学习Kafka消息引擎系统ABC一篇文章带你快速搞定Kafka术语我应该选择哪种Kafka&#xff1f;聊聊Kafka的版本号 为什么要学习Kafka 如果你是一名软件开发工程师的话&#xff0c;掌握 Kafka 的第一步就是要根据你掌握的编程语言去…

MPLS VPN功能组件(2)

MP-BGP 采用地址族(Address Family)来区分不同的网络层协议,以便正确处理VPN-IPv4路由 传统的BGP-4(RFC1771)只能管理IPv4的路由信息,无法正确处理地址空间重叠的VPN的路由。 为了正确处理VPN路由,VPN使用RFC2858(Multiprotocol Extensions for BGP-4)中规定的MP-BG…

Vue3.0(四):Composition API的使用

Composition API 认识Composition API 前几篇文章中主要用Options API进行编写代码&#xff0c;但是有一些弊端 Options API弊端 在 Options API中&#xff0c;有data、watch、computed、methods以及生命周期函数各种各样的选项而一个变量&#xff0c;为了实现某个功能&#x…

【数据分析岗】8家知名企业秋招(含实习)面试题汇总

年底了&#xff0c;技术群组织了一场机器学习算法岗技术&面试讨论会&#xff0c;邀请了一些同学分享他们的面试经历&#xff0c;讨论会会定期召开&#xff0c;如果你想加入我们的讨论群或者希望要更详细的资料&#xff0c;文末加入。 喜欢本文记得收藏、关注、点赞 文章目…

力扣精选算法100道—— 连续数组(前缀和专题)

连续数组&#xff08;前缀和专题&#xff09; 目录 &#x1f6a9;了解题意 &#x1f6a9;算法原理 ❗为什么hash设置成<0,-1>键值对 ❗与和为K的子数组比较hash的键值对 &#x1f6a9;代码实现 &#x1f6a9;了解题意 我们看到给定数组里面只有0和1&#xff0c;我们…

植物生长调节剂行业调研:预计2029年将达到1.2亿美元

未来增长的重点势必在以中国为代表的亚太地区。尤其在我国农业现代化、无人化发展需求下&#xff0c;提升种植的效率和品质是必然需求&#xff0c;我国市场规模增速也将高于全球平均水平。植物生长调节剂的应用具有成本低、收效快、效益高、节省劳动力的优点&#xff0c;不仅对…

Elasticsearch:使用 LangChain 文档拆分器进行文档分块

使用 Elasticsearch 嵌套密集向量支持 这个交互式笔记本将&#xff1a; 将模型 “sentence-transformers__all-minilm-l6-v2” 从 Hugging Face 加载到 Elasticsearch ML Node 中使用 LangChain 分割器将段落分块成句子&#xff0c;并使用嵌套密集向量将它们索引到 Elasticse…

fghbbbbbbbbbb

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏&#xff1a;《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

LeetCode 二叉树/n叉树的解题思路

二叉树 二叉树特点是每个节点最多只能有两棵子树&#xff0c;且有左右之分二叉树的数据结构如下&#xff1a; public class TreeNode {//节点的值int val;//左子树TreeNode left;//右子树TreeNode right;TreeNode(int x) { val x; } }树节点的初始化&#xff1a; int val1;T…

Flink Checkpoint过程

Checkpoint 使用了 Chandy-Lamport 算法 流程 1. 正常流式处理&#xff08;尚未Checkpoint&#xff09; 如下图&#xff0c;Topic 有两个分区&#xff0c;并行度也为 2&#xff0c;根据奇偶数 我们假设任务从 Kafka 的某个 Topic 中读取数据&#xff0c;该Topic 有 2 个 Pa…

机器学习与深度学习

什么是机器学习 机器学习是一门跨学科的学科&#xff0c;它致力于研究和开发让计算机能够模拟人类学习行为的技术和方法。机器学习涉及多个学科的知识&#xff0c;如概率论、统计学、逼近论、凸分析、算法复杂度理论等&#xff0c;这些学科为机器学习提供了理论基础和数学工具…

【Linux】gdb调试与make/makefile工具

目录 导读 1. make/Makefile 1.1 引入 1.2 概念 1.3 语法规则 1.4 示例 2. Linux调试器-gdb 2.1 引入 2.2 概念 2.3 使用 导读 我们在上次讲了Linux编辑器gcc\g的使用&#xff0c;今天我们就来进一步的学习如何调试&#xff0c;以及makefile这个强大的工具。 1. mak…