📄 readtxt.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 + -