当前位置: 代码迷 >> 单片机 >> ZLG/FS文件系统读SD卡数据的OSFileRead函数如何用
  详细解决方案

ZLG/FS文件系统读SD卡数据的OSFileRead函数如何用

热度:193   发布时间:2016-04-28 16:27:13.0
ZLG/FS文件系统读SD卡数据的OSFileRead函数怎么用
uint32 OSFileRead(void *Buf, uint32 Size, HANDLE Handle);
Buf是保存读到的数据的指针,size是要读的字节数,Handle是文件句柄,返回值是实际读到的字节数。

我是这样用的:


char *FileNameRead = "A:\\toRead.txt";
char ReadFileData[] = "Read File Fail!";

void TASK3(void* pdata)
{
  char buf1[4];
  char buf[20];
  HANDLE FHandleR;
  pdata = pdata;

  OSAddFileDriver(SDCammand);

  strcpy(buf1, "rw");
strcpy(buf, FileNameRead);
FHandleR = OSFileOpen(buf, buf1);
OSFileRead( ReadFileData, 100, FHandleR);
OSFileClose(FHandleR);

  Beep_1(10);//操作完成,鸣铃传信

  OSRemoveFileDriver(0);

  GUI_SetColor(WHITE, BLACK);
  GUI_PutString8_8(10,U_LCD_YSIZE-30,ReadFileData);//显示
  while(1)
  {
  OSTimeDly(OS_TICKS_PER_SEC);
  }
}

我已经事先在SD卡中创建了toRead.txt文件,并且写了一句话(英文)在里面,
但是读数据不成功,ReadFileData的值始终是 "Read File Fail!"

哪位高人指点下怎么回事啊~~~~~!~~~我都快疯掉了

【注】:写数据OSFileWrite是成功的。

------解决方案--------------------
题外话,现在的ZLG/FS支持长文件名了吗?以前用的时候只支持短文件名。
------解决方案--------------------
很好的呢啊。学习了啊

------解决方案--------------------
检查一下,到底是死循环还是出现数据等异常
------解决方案--------------------
void Read_word(char * name)
{
char flag_end2 = 0;
char buf2[8];
char buff[20];
uint32 count2 = 0;
HANDLE FHandle;

strcpy(buf2, "rw");
strcpy(buff, name);
FHandle = OSFileOpen(buff, buf2);


flag_end2 = 0; 
 
{
OSFileSeek(FHandle, count2, SEEK_SET); // 移动文件读\写位置
count = OSFileRead(pic_file1, READNUM2, FHandle);//读取文件

}
OSFileClose(FHandle);
}


void Task0 (void *pdata)
{
uint32 i ;

 
pdata = pdata;

Full_LCD(RED); //背景色
state = OSAddFileDriver(SDCammand); //增加ATA设备0



while(1)
{
Read_word(wordName1); //读汉字
while(1);
}
  相关解决方案