本帖最后由 与龙共舞 于 2018-6-7 18:09 编辑
搞了一天,无果,埃。
问题:我搬运原子开发板的程序,想用FATFS,SD卡可以读写文件,现在的问题是我想打开文件--写入文件--关闭文件--打开文件--追加写入。这个追加写入怎么实现呢?
以前上位机我知道有参数传进去就OK,现在没有那个标准C的参数了。。。
- void ceshi(void)
- {
- u32 fpos;
- u8 res=0;
- char string[100]={0};
- sprintf(string,"开门%d次,成功%d次,失败%d次,成功率%d%%,最短响应时间%dms,最长响应时间%d ms,平均响应时间%dms",1,2,3,4,5,6,7);
- printf("%s","Log_into_SD\n");
- printf("%d\n",strlen(string));
- res=f_open(&fil,"0:/Report1.txt",(FA_CREATE_ALWAYS|FA_WRITE|FA_READ));
- if(res)
- { printf("%s","openfail\n"); }
- else
- {
- //f_lseek(&fil,EOF); -1 有很大问题-------------------------------------------------------------?
- // f_lseek(&fil,fil.fsize); 打开以后fil.fsize是0 有问题 下面写完以后fil.fsize变成100--------?
- printf("begin write\n");
- res=f_write(&fil,string,sizeof(string),&bww);
- if(res)
- { printf("%s\n","writefail"); }
- else
- {
- f_close(&fil);
- printf("%s\n","writeOK");
- }
- }
- }
复制代码
网上别人遇到这个问题:
http://www.cnblogs.com/sofunny/p/4103635.html
就是用的 f_lseek 究竟怎么用的?
已解决,- void ceshi(void)
- {
- u32 fpos;
- u8 res=0;
- char string[100]={0};
- char* hc="\r\n";
- sprintf(string,"开门%d次,成功%d次,失败%d次,成功率%d%%,最短响应时间%dms,最长响应时间%d ms,平均响应时间%dms",1,2,3,4,5,6,7);
- printf("%s","Log_into_SD\n");
- printf("%d\n",strlen(string));
- res=f_open(&fil,"0:/Report3.txt",(FA_OPEN_ALWAYS|FA_WRITE));//打开 写
- if(res)
- {printf("%s","openfail\n");}
- else
- {
- f_lseek(&fil,fil.fsize);
- printf("begin write\n");
- res=f_write(&fil,string,sizeof(string),&bww);
- res=f_write(&fil,hc,strlen(hc),&bww);//1不能用sizeof2不能混在上面string要单独写
- if(res)
- { printf("%s\n","writefail"); }
- else
- {
- f_close(&fil);
- printf("%s\n","writeOK");
- }
- }
- }
复制代码
|
评分
查看全部评分
找了好久 结果你一句话就搞定了 是的 改成FA_OPEN_ALWAYS就好了 前面那个可能会暴力创一个新文件。
评分
查看全部评分
评分
查看全部评分