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文件:
实现效果如下:

物联沃分享整理
物联沃-IOTWORD物联网 » STM32 FATFS文件按行读取SD卡数据的实现

发表评论