while(1)
{
t++;
// delay_ms(200);
LED0=0;
// *data_nanme=f_typetell("test");
// printf(data_nanme);
// LCD_ShowString(30,290,200,16,16,*u8 data_nanme) ;
// sprintf(write_buff,"%04d\r\n",ad_value[i]*3300/4096);
//res_ad=f_lseek(&fil_ad,f_size(&fil_ad));
//res_ad=f_write(&fil_ad,write_buff,6,&bww_ad);
// if(KEY_Scan(1)==KEY0_PRES)
if(KEY0==0)
{
LED0=1;
// f_mount(0, &fs);
//如果data.txt存在,则打开;否则,创建一个新文件
// res = f_open(&file, "0:/data.txt",FA_OPEN_ALWAYS|FA_READ|FA_WRITE );
//(const TCHAR*) 转换为字符串
/* f_open函数:创建文件
fp:文件指针
1:test.txt:文件名
第三个参数是文件操作的权限,读/写/不管文件是否存在都创建(存在就覆盖)
*/
// /* 打开文件 */
res=f_open(&fsrc, (const TCHAR*)filename, FA_CREATE_ALWAYS | FA_WRITE);
if(res!=FR_OK) //判断是否打开成功
{
LCD_ShowString(10,230,tftlcd_data.width,tftlcd_data.height,16,"f_open error!");
LCD_ShowString(30,230,200,16,16,"f_open error!");
}
/* 将缓冲区的数据写到文件中 */
res = f_write(&fsrc, wtext, sizeof(wtext), &bw);
/* f_close:关闭文件,使用f_open必须使用f_close,不然会有缓存
fp:文件指针
*/
f_close(&fsrc); //关闭文件
/* f_write函数:向文件中写入数据
fp:文件指针
write_buf:要写入文件的数据
第三个参数:写入多少个字节
第四个参数:指针,返回已经写入到文件的字节数
*/
/*
1.打开文件
f_open(filescr2, "0:/201711022.txt", FA_OPEN_DEFAULT);
2.写数据
f_write(filescr1, test_buff0, sizeof(test_buff0), &bw1);
3.关闭文件
f_close(filescr1);//一定要关闭
第二次写入数据
1.打开文件
f_open(filescr2, "0:/201711022.txt", FA_OPEN_DEFAULT);
2.按照文件现有大小移动指针
f_lseek(filescr1,filescr1->fptr+filescr1->fsize);
3.写数据
f_write(filescr1, test_buff0, sizeof(test_buff0), &bw1);
4.关闭文件
f_close(filescr1);//一定要关闭
其实,多次写入的时候就是需要将指针移动,
这样的h我们就可以根据自己的需求进行在相同文件内连续写入数据了。
但是如果要在指定行进行修改就比较麻烦了,
就需要计算指针移动的位置,者相比于面向对象的编程语言而言要麻烦的多。
*/
//f_lseek(&fsrc,(&fsrc)->fsize);
// f_lseek(&fsrc,(&fsrc)->fptr-1);
/*注册一个工作区域*/
// f_mount(0,&fs);
/* 打开创建一个新文件 */
res=f_open(&fdst,"0:/DATA.CSV",FA_CREATE_NEW | FA_WRITE);
/* 写入标题数据 */
res=f_write(&fdst,"年-月-日-时-分-秒,fix,track\n",29,&bw);
/* 关闭文件 */
f_close(&fdst);
/* 数据转换 */
// size = format_data(text,324,12585);
/* 打开文件 */
res=f_open(&fdst,"0:/DATA.CSV",FA_OPEN_EXISTING | FA_WRITE);
/* 查找文件的结尾 */
res=f_lseek(&fdst,f_size(&fdst));
/* 写入数据 */
res=f_write(&fdst,text,sizeof(text),&bw);
/* 关闭文件 */
f_close(&fdst);
if ( res == FR_OK )
{
// /* 打开文件 */
res=f_open(&fsrc, (const TCHAR*)filename, FA_CREATE_ALWAYS | FA_WRITE);
f_lseek(&fsrc, f_size(&fsrc)); //将文件指针移动到文件末尾
/* 将缓冲区的数据写到文件中 */
res = f_write(&fsrc, wtext, sizeof(wtext), &bw);
/* f_close:关闭文件,使用f_open必须使用f_close,不然会有缓存
fp:文件指针
*/
f_close(&fsrc); //关闭文件
}
// res=f_write(&fsrc, wtext, sizeof(wtext), &bw); //向SD卡指定路径写入数据
//LCD_ShowString(30,230,200,16,16,res);
if(res!=FR_OK) //判断是否写入成功
{
LCD_ShowString(10,230,tftlcd_data.width,tftlcd_data.height,16,"f_write error!");
LCD_ShowString(30,230,200,16,16,"f_write error!");
}else
{
LCD_ShowString(10,230,tftlcd_data.width,tftlcd_data.height,16,"f_write ok!");
}
}
//if(KEY_Scan(1)==KEY1_PRES)
if(KEY1==0)
{
res=f_open(&fsrc, (const TCHAR*)filename, FA_READ); //打开文件,如果文件不存在,则创建该文件
if(res!=FR_OK) //判断是否打开成功
{
LCD_ShowString(10,220,tftlcd_data.width,tftlcd_data.height,16,"f_open error!");
}
res=f_read(&fsrc, buffer, sizeof(buffer), &br); //读取SD卡指定路径的内容,并存放在buffer数组中
if(res!=FR_OK) //判断是否读取成功
{
LCD_ShowString(10,240,tftlcd_data.width,tftlcd_data.height,16,"f_read error!");
}
else //如果读取成功,则使用LCD显示
{
LCD_ShowString(10,240,tftlcd_data.width,tftlcd_data.height,16,"f_read ok!");
LCD_ShowString(10,260,tftlcd_data.width,tftlcd_data.height,16,buffer);
}
f_close(&fsrc);
}
}
}