原创 智林STM32开发板上的FatFS移植过程分析(十)

2010-3-22 19:54 3575 7 9 分类: MCU/ 嵌入式

 


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


十、添加命令flist


1、目标


这个命令的作用是显示当前目录下的所有目录和文件,在串口终端上以这样的形式显示。


名称       属性(目录还是文件)       大小    


2、准备工作


先浏览一遍ff.h,看ff.c对外输出的函数。FRESULT f_opendir (DIR*, const XCHAR*)FRESULT f_readdir (DIR*, FILINFO*)这两个函数就是获取目录项信息。


前一个函数f_opendir给出两个参数,字符串指针是用户指定的目录,DIR信息结构体是在根据目录字符串经过查找、对比后,用该目录的关键信息:起始簇号,填充该结构体。


后一个函数根据目录的起始簇号和目录项索引号,获取当前目录项的所有信息,并填充FILINFO信息结构体,用户根据该结构体得到所需要的信息并显示。


从这里开始,要支持相对路径,故设置#define _FS_RPATH   1


 


3、命令的添加过程


这里不再详细叙述。


#define UartCmdMaxCount 13              //现在支持13个内部命令


u8* UartCmdStrTable[UartCmdMaxCount]={         //串口命令字符串


"help","cls","ledon","ledoff",


"time","temp","i2cwr","i2crd",


"sdrd","sdwr","fread","fwrite",


"flist"};


声明void UartCmdFList(u8 argc,void **argv);


 


4、编写函数UartCmdFList


要用到目录结构信息体和文件属性结构体,先定义:


     DIR DirInf;  FILINFO fileinf;


     res=f_opendir(&DirInf, argv[1]); // 如果不带参数,则从当前目录开始


     if ( res!=FR_OK) { Uart_PutString( "DIR Open Error!\r\n");                            return;}


        for ( ;DirInf.sect>0 ;  ) {   //是否读完根据当前扇区sect的值,因为目录项读完后设为0.


              res=f_readdir(&DirInf,&FileInf); //读取目录项,索引会自动下移。


              Uart_PutString ( (u8 *)FileInf.fname );


              Uart_PutString ( "  " );


              if ( FileInf.fattrib & AM_DIR == AM_DIR ) { Uart_PutString ( " 目录 " );}


              else  { Uart_PutString ( "文件  " );}


              sprintf ( (char *)InfStr, "%d Bytes", FileInf.fsize);


              Uart_PutString ( InfStr );


           Uart_PutString("\r\n");


     }


5、编译下载,测试


串口输入命令:


Sh>flist 0:/111 第一次输入


.  文件  0 Bytes


..  文件  0 Bytes


AAA.TXT  文件  1380 Bytes


BBB.TXT  文件  277 Bytes


CCC.TXT  文件  0 Bytes


新建文~1  文件  0 Bytes


 


Sh>flist 111 第二次输入


.  文件  0 Bytes


..  文件  0 Bytes


AAA.TXT  文件  1380 Bytes


BBB.TXT  文件  277 Bytes


CCC.TXT  文件  0 Bytes


新建文~1  文件  0 Bytes


 


Sh>flist  第三次输入,默认显示当前目录


BBB.TXT  文件  1536 Bytes


DDD.TXT  文件  2048 Bytes


111  文件  0 Bytes


LLL.TXT  文件  0 Bytes


MMM.TXT  文件  0 Bytes


222  文件  0 Bytes


我的文档  文件  0 Bytes


说明这个命令是成功了,目录项的性质显示错误,明明是目录确显示成文件

文章评论2条评论)

登录后参与讨论

用户1025563 2010-9-26 16:11

目录显示为文件的问题我也碰到了?如何解决的呢?

用户1174614 2010-9-5 20:07

正在学习中,谢谢楼主啦
相关推荐阅读
nthq2004 2010-05-08 20:04
USB自定义设备驱动02
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  本来还想编写应用程序测试一下自定...
nthq2004 2010-05-07 21:35
USB自定义设备驱动01
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  一、USB设备驱动入门1、学习目...
nthq2004 2010-05-04 21:01
智林开发板上实现自定义的USB HID设备
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  一、自定义HID设备的相关概念1...
nthq2004 2010-05-01 21:58
U盘例程在智林开发板上的移植
 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 一、移植前的准备工作1、有哪些操...
nthq2004 2010-04-30 19:19
U盘实现流程跟踪分析02
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   二、追踪USB大容量设备的实现...
nthq2004 2010-04-27 21:51
U盘实现流程跟踪分析01
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   一、追踪USB大容量设备的实现...
我要评论
2
7
关闭 站长推荐上一条 /2 下一条