⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sd_ls.c

📁 智林z2148开发板测试源码
💻 C
字号:
#include <RTL.h>                      /* RTL kernel functions & defines      */
#include <stdio.h>                    /* standard I/O .h-file                */
#include <ctype.h>                    /* character functions                 */
#include <string.h>                   /* string and memory functions         */
#include "../Drivers/PCF8833.h"

#define CNTLQ       0x11
#define CNTLS       0x13
#define DEL         0x7F
#define BACKSPACE   0x08
#define CR          0x0D
#define LF          0x0A
#define ESC         0x1B

/*----------------------------------------------------------------------------
 *        Process input string for an entry
 *---------------------------------------------------------------------------*/
static char *get_entry (char *cp, char **pNext) {
   char *sp;

   if (cp == NULL) {                          /* skip NULL pointers          */
      *pNext = cp;
      return (cp);
   }

   for ( ; *cp == ' '; cp++) {                /* skip blanks                 */
      *cp = 0;
   }

   //for (sp = cp; *sp != ' ' && *sp != CR && *sp != LF; sp++) {
   //   *sp = (char)toupper (*sp);              /* convert entry to uppercase  */
   //}
   for ( ; *sp == ' ' || *sp == CR || *sp == LF; sp++) {
      *sp = 0;
   }

   *pNext = (*sp) ? sp : NULL;                /* next entry                  */
   return (cp);
}

/*----------------------------------------------------------------------------
 *        Print size in dotted fomat
 *---------------------------------------------------------------------------*/
static void dot_format (U32 val, char *sp) {

   if (val >= (U32)1e9) {
      sp += sprintf (sp,"%d.",val/(U32)1e9);
      val %= (U32)1e9;
      sp += sprintf (sp,"%03d.",val/(U32)1e6);
      val %= (U32)1e6;
      sprintf (sp,"%03d.%03d",val/1000,val%1000);
      return;
   }
   if (val >= (U32)1e6) {
      sp += sprintf (sp,"%d.",val/(U32)1e6);
      val %= (U32)1e6;
      sprintf (sp,"%03d.%03d",val/1000,val%1000);
      return;
   }
   if (val >= 1000) {
      sprintf (sp,"%d.%03d",val/1000,val%1000);
      return;
   }
   sprintf (sp,"%d",val);
}

/*----------------------------------------------------------------------------
 *        Print a Flash Memory Card Directory
 *---------------------------------------------------------------------------*/
static void ls (char *par) {
   U32 fsize,files;
   char temp[32],*mask,*next;
   FINFO info;
   char s[50];

   mask = get_entry (par, &next);
   if (mask == NULL) {
      mask = "*.*";
   }

   //printf ("\nFile System Directory...");
	PutString(1,16,"Directory... ",0xF800,0xFFE0);
   files = 0;
   fsize = 0;
   info.fileID = 0;
   while (ffind (mask,&info) == 0) {
      dot_format (info.size, &temp[0]);
      sprintf (s,"\n%-20s %14s ", info.name, temp);
	  if( files < 3 ) {
		PutString(1,80+files*16,s,0xF800,0xFFE0);
	  	}
      sprintf (s,"  %02d.%02d.%04d  %02d:%02d  ID[%04d]",
               info.time.day, info.time.mon, info.time.year,
               info.time.hr, info.time.min, info.fileID);
      fsize += info.size;
      files++;

   }
   if (info.fileID == 0) {
      //printf ("\nNo files...");
		PutString(1,32,"No files... ",0xF800,0xFFE0);
   }
   else {
      dot_format (fsize, &temp[0]);
      sprintf (s,"%d File(s)", files);
		PutString(1,32,s,0xF800,0xFFE0);
      sprintf (s,"%s bytes", temp);
		PutString(1,48,s,0xF800,0xFFE0);
   }
   dot_format (ffree(""), &temp[0]);
   sprintf (s,"%s bytes free.\n",temp);
	PutString(1,64,s,0xF800,0xFFE0);
}

/*----------------------------------------------------------------------------
 *        Main: 
 *---------------------------------------------------------------------------*/
int main(void) {
	U32 retv;
//	char s[20];

	PCF8833Init();
	LCD_Clear_Screen();

	for(;;) {
		retv = finit ();           /* Wait until the Card is ready*/
		if(retv != 0) {
			switch( retv ) {
				case 1:
					PutString(1,0,"Init Failed! ",0xF800,0xFFE0);
					break;
				default:
					PutString(1,0,"Unformatted! ",0xF800,0xFFE0);
					break;
				}
			continue;
			}
		PutString(1,0,"Card Ready! ",0xF800,0xFFE0);
		ls("*.*");
		}
	}
/*----------------------------------------------------------------------------
 * end of file
 *---------------------------------------------------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -