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

📄 readtxt.h

📁 在基于avr内核的单片机上实现MP3播放器的功能
💻 H
字号:



uint32 TXTReadedSize=0;



uint32 Read1txt(uint32 ReadedSize,FILE_HANDLE * F_handle) {//size ++
	uint32 i=0,sizetp=ReadedSize;
	uint16 j;
	uint8 xa=1,x=1,ya=1,f1,f2;
	//F_handle=OpenFile("a.bmp",dir_org_clusId);
	
	
	//S1D15G00ClearLcd();
	j=ReadedSize%512;

	for(;ya<=128;)
	  {
	 ReadBlock(POSIT2LBA(&F_handle->dat_posit));
	 if(j>=512) {j=0;Read_current_File_next_sec(F_handle);}
	 uint8 *point=&sd_buf[j];
	  if( 0x80>=(*point) )  {put2asii(xa,ya,*point);j++;sizetp++;xa+=8;if(xa>128) {xa=x;ya+=16;}}
       else {if(xa>118) {put2asii(xa,ya,' ');xa=x;ya+=16;if(ya>128) break;}
	   
	      f1=*point;j++;sizetp++;
		  if(j>=512) {j=0;Read_current_File_next_sec(F_handle);f2=sd_buf[j];}
	      else {point++;f2=*point;}
		  j++;sizetp++;
	  //================================================ 
           if(f1-0xa0) //get a error  
		   i=(94*(f1-0xa1)+(f2-0xa1));//得到它的偏移地址*32
            i=i*32;
		 ReadBlock(Clus2LBA(GbOrgClus)+i/512); //为了高速 ,保证字库fat是连续的   
	     
		    Put2Gb(xa,  ya,&sd_buf[i%512] ,16,0x0000,0xFFE0);
		     xa+=16;if(xa>128) {xa=x;ya+=16;}
		    } 
	   }		 
		return sizetp;	
}


void ReLoadFHDatposit(FILE_HANDLE * F_handle,uint32 datelocation)
{
uint32 clusSizei,clusi,LeftSizei;
uint32 current_clusid;
uint16 bytei;
uint8  seci;
clusSizei=BPB_SecPerClus*BPB_BytesPerSec;//clus size
LeftSizei=datelocation%clusSizei;
//===========================
clusi=datelocation/clusSizei;//how many clus
seci=LeftSizei/BPB_BytesPerSec;
bytei=LeftSizei%BPB_BytesPerSec;
//====================
current_clusid=F_handle->file_org_clusid;
for(uint8 i=0;i<clusi;i++)
current_clusid=ReadFAT(current_clusid);
     
	 F_handle->file_last_clusid=current_clusid;
	 F_handle->dat_posit.ClusID=current_clusid;
	 F_handle->dat_posit.SecOfClus=seci;
	 F_handle->dat_posit.ByteOfSec=bytei;
	 F_handle->dat_posit.state=on;
}


/*++++++++++++++++++++++++++++++++++++++++++++++++
#define LeftBnt    0
#define RightBtn    1
#define MidBtn    2
#define Always0    3
//=====================*/	
void ReadTxt(FILE_HANDLE * F_handle)
{uint32 size;
TXTReadedSize=0;
size=F_handle->size;

TXTReadedSize=Read1txt(TXTReadedSize,F_handle);

for(;TXTReadedSize<size ;)
   {
   if(MouseMsg){ //have a mouse mesage
        if(MouseMsg&(1<<RightBtn)) {Key1SW=off;MouseMsg=0;break;}
		else if(MouseMsg&(1<<LeftBnt)) TXTReadedSize=Read1txt(TXTReadedSize,F_handle);
        else if(MouseMsg&0xf0){
		        if((MouseMsg&0xf0)<=0x80 )  TXTReadedSize=Read1txt(TXTReadedSize,F_handle);
		        else   {if(TXTReadedSize<240) TXTReadedSize=0;
		                 else        TXTReadedSize-=240;
									 	ReLoadFHDatposit(F_handle,TXTReadedSize);
                                     TXTReadedSize=Read1txt(TXTReadedSize,F_handle);}
						 }
         MouseMsg=0;}
		 
   if(Key0SW) {Key0SW=off;TXTReadedSize=Read1txt(TXTReadedSize,F_handle); }
   if(Key1SW==off) break;
   //=========================================
    OSTaskSuspend(1);
	      
   }
Key1SW=off;
}

⌨️ 快捷键说明

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