STM32 FATFS文件按行读取SD卡数据的实现
STM32 FATFS文件系统按行读取SD卡数据
f_gets()
查阅FATFS的使用说明书找到了f_ges()这个函数,该函数是 f_read()的封装函数,读操作一直持续直到存储一个’\n’字符。我们可以使用它识别数据中的换行符。该函数的解释说明及示例如下:
f_tell()
该函数可获取文件的当前指针位置相对于文件首地址的偏移字节数。该函数在说明书中没找到,在程序中的用法如下:
f_tell(&fileobj);
f_lseek()
该函数可移动文件的读写指针。该函数的解释说明及示例如下:
FATFS按行读取
首先使用f_gets()函数读取数据,读到换行符’\n’字符便停止;
然后使用f_tell()函数获取当前的指针位置;
最后使用f_lseek()移动指针到新的读取位置。
三个函数结合使用,就能实现SD卡文件的按行读取了。
实现代码如下:
下面展示一些 内联代码片
。
static void read_file(int locate,int readsize)
{
static char fdatas[100];
static int tempLocate;
fr = f_open(&fileobj,"0:/DATA/testfile.txt",FA_OPEN_EXISTING|FA_READ );//打开读取文件
if(fr==FR_OK)
{
memset(fdatas,0,sizeof(fdatas));
while(tempLocate<sizeof(fileobj))
{
f_gets(fdatas,readsize,&fileobj);
printf("fdatas is:%s\r\n",fdatas);
tempLocate=f_tell(&fileobj);
printf("locate is%d\r\n",tempLocate);
f_lseek(&fileobj, tempLocate);
memset(fdatas,0,sizeof(fdatas));
}
}
f_sync(&fileobj);
}
要逐行读取的txt文件:
实现效果如下: