打印
[菜农助学交流]

【第三期】M0+12864的文件浏览器

[复制链接]
2186|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kyzb001|  楼主 | 2011-12-15 10:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kyzb001 于 2011-12-15 12:40 编辑

其实就是12864+M0+FATFS文件系统!


附上代码
没有12864的记得把 ST7588lcd_Init和DisplayDisk这个函数屏蔽!  串口一样可以打印消息的~!
 
void disk_read_file()
{
uint8_t Disk_Key=0 ;
uint8_t file_rank=0;
uint8_t temp;
    strcpy(diskname,"");
obtain_folder();
DisplayDisk(0);
while(1)
{
  
  Disk_Key=KeyVolat;
  temp=file_rank;
  switch(Disk_Key)
  {
   
   case KEY_NONE: break;
   case KEY_UP  :
   {
    if(file_rank++>=foldernum)
     file_rank=foldernum;
    while(Disk_Key==KEY_UP)
     Disk_Key=KeyVolat;   
   } break;
   case KEY_DOWN:
   {
    if(file_rank--<=0)
     file_rank=0;
   
    while(Disk_Key==KEY_DOWN)
     Disk_Key=KeyVolat;
   } break;
   case KEY_MENU:
   {
    strcpy(diskname,disk[file_rank].foldername);
    file_rank=0;
    obtain_folder();
   } break;
  }
  if(temp!=file_rank)
  {
   DisplayDisk(file_rank);
  }  
}  
}  



[code]
void obtain_folder()
{
FATFS FatFs; /* File system object for logical drive */
FRESULT res;
FILINFO finfo;
DIR dirs;

uint8_t i;

filenum=0;
foldernum=0;

for(i=0;i<20;i++)
{
memset(disk.foldername,0,20);
memset(disk.filename,0,20);
}

f_mount(0, &FatFs);
printf("--------------Open File:/%s-------------------------\n",diskname);
res=f_opendir(&dirs, diskname);

if ( res== FR_OK)
{
printf("--------------file name:%s--------------------------\n",diskname);
while ((f_readdir(&dirs, &finfo) == FR_OK) && finfo.fname[0])
{
if (finfo.fattrib & AM_DIR)//如果是文件夹
{
printf("%s/%s\n",diskname,&finfo.fname[0]);
strcpy(disk[foldernum++].foldername , &finfo.fname[0]);

}
if (finfo.fattrib & AM_ARC)//如果是文件
{
printf("%s/%s\n",diskname,&finfo.fname[0]);
strcpy(disk[filenum++].filename , &finfo.fname[0]);
}
}
}

// DisplayDisk(0);

f_mount(0, NULL);

}
[/code]
 


typedef struct
{
char filename[20];
char foldername[20];
}disk_t;

disk_t disk[20];
uint8_t filenum=0;
uint8_t foldernum=0;
char  diskname[20];

void DisplayDisk(unsigned char x_line)
{
uint8_t i,j;
uint8_t filenumber;
filenumber=foldernum+filenum;
j=0;
CogLCDClr();

for(i=0;i<filenumber;i++)
{
  if(i<foldernum)
   DisPlay_12X12_Str((uint8_t *)disk.foldername ,5,i*12);
  else if(i>=foldernum&&i<5)
   DisPlay_12X12_Str((uint8_t *)disk[j++].filename  ,5,i*12);
  else
   break;
}  
DisPlay_Picture(0x00,0,3+(x_line*12),4,4);
CogLCDRedraw();
DrvSYS_Delay(8000);
}

相关帖子

沙发
wangjiahao88| | 2011-12-15 12:56 | 只看该作者
请问可以读取bin文件字库 图库吗?

使用特权

评论回复
板凳
kyzb001|  楼主 | 2011-12-15 14:15 | 只看该作者
en ! 可以图~ 显示没做!

使用特权

评论回复
地板
lixiaoxu2meng| | 2011-12-16 08:11 | 只看该作者
很好啊 帮顶:lol

使用特权

评论回复
5
hotpower| | 2011-12-28 14:21 | 只看该作者
顶起来,水太深~~

使用特权

评论回复
6
consif| | 2011-12-28 21:52 | 只看该作者

使用特权

评论回复
7
mcs8098| | 2011-12-29 11:03 | 只看该作者
学习了

使用特权

评论回复
8
mandide| | 2012-1-4 10:16 | 只看该作者
学习~~~~~~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:Is this my life

15

主题

624

帖子

1

粉丝