简单描述要实现的功能:分步将几个数组中的字符串存储在SD卡txt文本上,并在需要的时候读取该文本内容,显示在屏幕
但现在问题是:创建并且存储txt文本正常,卸卡后可通过电脑正确读出全部存储的数据,但通过f_read函数只能读出数组1中的数据,数组2、3...中的数据读不出来,更奇怪的是,如果将该文本在电脑上打开并且重新保存(不修改文本内容直接Ctrl+S)后,再次用通过f_read函数读取文本内容,就可以正常读出所有数据了,下面附上部分读写代码,不知道是不是版本兼容的问题(R0.09),请大神赐教
代码
将要存储的字符串:
BYTE FileBuffer1[] = "TianJinYLA Portable Gas Detector
";
BYTE FileBuffer2[] = "
DATE TIME DATA
";
数据存储代码:
f_mount(0,&fs); //磁盘信息注册
res = f_open(&fdst,SDFileName,FA_CREATE_NEW | FA_WRITE);//新建一个文件
if (( res == FR_OK )||(res == FR_EXIST))
{
res = f_write(&fdst, FileBuffer1, sizeof(FileBuffer1), &bw); //便携式气体检测仪数据
res = f_lseek(&fdst, fdst.fsize);//移动到文本最后一个字节
res = f_write(&fdst,"GAS: ", 5, &bw);
res = f_lseek(&fdst, fdst.fsize);//移动到文本最后一个字节
switch(Gas_num)
{
case 1:res = f_write(&fdst,"O2/%VOL", 7, &bw);break;
case 2:res = f_write(&fdst,"H2S/PPM", 7, &bw);break;
case 3:res = f_write(&fdst,"NH3/PPM", 7, &bw);break;
case 4:res = f_write(&fdst,"CO/PPM", 6, &bw);break;
case 5:res = f_write(&fdst,"HCL/PPM", 7, &bw);break;
case 6:res = f_write(&fdst,"SO2/PPM", 7, &bw);break;
case 7:res = f_write(&fdst,"CL2/PPM", 7, &bw);break;
// case 8:res = f_write(&fdst,"可燃气体/LEL", 14, &bw);break;
default:break;
}
res = f_lseek(&fdst, fdst.fsize);//移动到文本最后一个字节
res = f_write(&fdst,"
ID: ", 6, &bw);
res = f_lseek(&fdst, fdst.fsize);//移动到文本最后一个字节
res = f_write(&fdst, IDbuf, 2, &bw); //日期 时间 气体浓度
res = f_lseek(&fdst, fdst.fsize);//移动到文本最后一个字节
res = f_write(&fdst, FileBuffer2, sizeof(FileBuffer2), &bw); //日期 时间 气体浓度
f_close(&fdst);
}
读取文本内容并打印代码:
res = f_open(&fdst,SDFileName_Open,FA_OPEN_ALWAYS | FA_READ);//打开当前索引下的文本
if(!res)
{
if(!f_read(&fdst,&buf_data,512,&num_temp))
{
#ifdef Debug
//printf("%s", SDFileName_Open);//长文件名
printf("%s", buf_data);//长文件名
#endif
Clect_Text(buf_data);//将SD文件内容显示到GUI界面
}
}
一周热门 更多>