2021-09-13&14

完善FATFS文件存储

  • 使用第一次打开文件的日期作为文件名
  • 创建相关结构体,便于存储和维护
  • 搜索字符串操作相关资料
  • 确定存储的每个数据的位数(一个数,占据数组中的一位)
  • 查看文件打开关闭等时间,了解文件系统里的指针
  • 使用内存管理?
RTC_TimeTypeDef Get_Time = {0};//获取当前RTC时间结构体,全局变量
RTC_DateTypeDef Get_Date = {0};//获取当前RTC日期结构体,全局变量


struct _Time//文件的(文件名)和(每一行数据的第一个数据)
{
  char Year[5];//必须要比放入的数据多一位。在测试中,不多一位,会在使用字符串函数时,出错。%s调用结构体中第一个数据,会直接读取整个结构体
	char Month[3];	
  char Date[3];	
	
	char Hours[3];
  char Minutes[3];
  char Seconds[3];
};



struct _My_File//一个.csv文件的对象:文件名、标题行、每一行的第一列、其余16个传感器对应的每一列、数据换行、数据分隔
{
	char Name[20];			//2021/09/13-10:40:00。【文件名】
	
	char FirstLine[80];//,Rt1,Rt2,Rt3,Rt4,Rt5,Rt6,Rt7,Rt8,Rt9,Rt10,Rt11,Rt12,Rt13,Rt14,Rt15,Rt16【标题行】【固定】
	
	char DataTime[20];	//2021/09/13-10:40:00。每一行中第一个数据的记录时间【每一行的第一列】
	char DataFloat[9];	//0.123456【其余16个传感器对应的每一列】
	
	char NewLine[5];		//\r\n【数据换行】【固定】
	char NewData[2];		//,【数据分隔】【固定】
};




	//获取时间
	//为了便于创建文件的日期
	HAL_RTC_GetTime(&hrtc, &Get_Time, RTC_FORMAT_BIN);//获取RTC时间,10进制形式
	HAL_RTC_GetDate(&hrtc, &Get_Date, RTC_FORMAT_BIN);//获取RTC日期,10进制形式

	//格式转换
	sprintf(Time_s.Year, "%d", 2000+Get_Date.Year);
	sprintf(Time_s.Month, "%02d", Get_Date.Month);
	sprintf(Time_s.Date, "%02d", Get_Date.Date);	
	
	sprintf(Time_s.Hours, "%02d", Get_Time.Hours);
	sprintf(Time_s.Minutes, "%02d", Get_Time.Minutes);
	sprintf(Time_s.Seconds, "%02d", Get_Time.Seconds);
	

	strcat(MyFile_s.Name ,Time_s.Year);
	strcat(MyFile_s.Name ,"/");
	strcat(MyFile_s.Name ,Time_s.Month);
	strcat(MyFile_s.Name ,"/");
	strcat(MyFile_s.Name ,Time_s.Date);
	strcat(MyFile_s.Name ,"-");
	strcat(MyFile_s.Name ,Time_s.Hours);
	strcat(MyFile_s.Name ,":");
	strcat(MyFile_s.Name ,Time_s.Minutes);
	strcat(MyFile_s.Name ,":");
	strcat(MyFile_s.Name ,Time_s.Seconds);

	printf("---%s----",MyFile_s.Name);

	printf("\r\n");


在这里插入图片描述

  • 每次存储和发送数据占用较多时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值