#include "bsp.h" data_common data_common1; FIL fp; /* Pointer to the blank file object */ FATFS fs; UINT btw; /* Number of bytes to write */ UINT bws; u32 send_pos=0; DIR DirInf; FILINFO FileInf; /* 功能:TF卡数据写入 参数:fname dat len 返回值:无 */ void FATFS_WriteFile(char *fname,char *dat,u16 len) //写数据到SD卡 { UINT br; char name[20]; sprintf(name,"%s%s",fname,".txt"); f_mount(0,&fs); f_open (&fp,fname,FA_READ|FA_WRITE|FA_OPEN_ALWAYS); f_lseek(&fp,f_size(&fp)); //移动到文件的末尾--追加数据 f_write(&fp,dat,len,&br); f_close(&fp); f_mount(0,NULL); } /* 功能:TF卡数据写入 时间、电压、经纬度、海拔、传感器数据 参数:fname dat len 返回值:无 */ FRESULT Data_Write_TF(void)//,char *dat,u16 len { FRESULT res; u8 i=0; char name[10]="\0"; f_mount(0,&fs); res=f_open(&fp,name,FA_READ | FA_WRITE | FA_OPEN_ALWAYS );//0:/ if(res!=FR_OK) //打开失败 { i=0; while((res!=FR_OK)&(i<100)) { i++; f_close(&fp); f_mount(0,NULL); f_mount(0,&fs); res=f_open(&fp,name,FA_READ | FA_WRITE | FA_OPEN_ALWAYS );//0:/ } if(i>98)return FR_NO_PATH ; } f_lseek (&fp,f_size(&fp)); f_write(&fp,data_common1.Pack_data,strlen(data_common1.Pack_data),&bws); f_write(&fp,"\r\n",2,&bws); f_close(&fp); return FR_OK; } /*************文件删除*******************************/ FRESULT Fil_delete(char *names) { FRESULT result; char namebuff[10]="\0"; sprintf(namebuff,"%s",names); f_mount(0,&fs); result = f_unlink(namebuff); f_close(&fp); f_mount(0,NULL); return result; } //读取文件的大小byte u32 txt_size_read(char *fname) { // u8 i=0; FRESULT res; u32 txt_size; char name[20]; sprintf(name,"%s%s",fname,".txt"); res=f_mount(0,&fs); res=f_open(&fp,"APP.bin",FA_READ);//0:/ if(res!=FR_OK) //打开失败 { return FR_NO_FILE; } txt_size=f_size(&fp); res=f_close(&fp); f_mount(0,NULL); return txt_size; } /* 功能:TF卡数据读取 参数:start_pos len 返回值:暂时测试,用串口1打印 后续需要返回读取的数据 */ void FATFS_Read_TF(char *fname,u32 start_pos,u32 len) { //u16 time1=0; FRESULT res; u32 tf_sendpos=0; u8 times; u32 i,lens_quotient,len_remainder;//商,余数 uint8_t Tf_Read_Buff[max_transmission+1]; lens_quotient=len/max_transmission; len_remainder=len%max_transmission; memset(Tf_Read_Buff,0,sizeof(Tf_Read_Buff)); res=f_mount(0,&fs); res=f_open(&fp,fname,FA_READ); times=0; while((res!=FR_OK)&(times<100)) { res=f_close(&fp); res=f_mount(0,&fs); res=f_open(&fp,fname,FA_READ); times++; if(times==100)return; } f_lseek(&fp, start_pos+tf_sendpos); for(i=0;i