新手上路
- 积分
- 28
- 金钱
- 28
- 注册时间
- 2018-8-30
- 在线时间
- 9 小时
|

楼主 |
发表于 2018-9-23 15:01:03
|
显示全部楼层
//更新字体文件,UNIGBK,GBK12,GBK16,GBK24一起更新
//x,y:提示信息的显示地址
//size:字体大小
//src:字库来源磁盘."0:",SD卡;"1:",FLASH盘,"2:",U盘.
//提示信息字体大小
//返回值:0,更新成功;
//其他,错误代码
u8 update_font(u16 x,u16 y,u8 size,u8* src)
{
u8 *pname;
u32 *buf;
u8 res=0;
u16 i,j;
FIL *fftemp;
u8 rval=0;
res=0XFF;
ftinfo.fontok=0XFF;
pname=mymalloc(SRAMIN,100); //申请100字节内存
buf=mymalloc(SRAMIN,4096); //申请4K字节内存
fftemp=(FIL*)mymalloc(SRAMIN,sizeof(FIL)); //分配内存
if(buf==NULL||pname==NULL||fftemp==NULL)
{
myfree(SRAMIN,fftemp);
myfree(SRAMIN,pname);
myfree(SRAMIN,buf);
return 5; //内存申请失败
}
//先查找文件是否正常
//printf("\r\npname之前的内容是:%s",(char*)pname);
//printf("\r\nsrc的内容是:%s",(char*)src);
/* *src的取值为"0:"、"1:"、和"2:",所以这里面的内容实际上就是0:、1:、2:。
*pname尚未赋值,其值为空,在串口中打印不出数据。事实说明除非在Fatfs文件
系统的API函数中"0:"、"1:"这样的字符串表示磁盘的种类,在其他的函数中,这
样的字符串仅仅是字符串而已,并无特殊含义。*/
strcpy((char*)pname,(char*)src); //copy src内容到pname。
//printf("\r\npname之后的内容是:\r\n%s",(char*)pname);
/*原型声明:char *strcpy(char* dest, const char *src);
头文件:#include "string.h"
功能:把从src地址开始且含有"\0"(NULL)结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针,返回值的类型为char*。*/
//printf("\r\nUNIGBK_PATH中的数据:%s",(char*)UNIGBK_PATH);
/*前面定义了u8*const UNIGBK_PATH="/SYSTEM/FONT/UNIGBK.BIN",UNIGBK_PATH仅仅是指向
字符串/SYSTEM/FONT/UNIGBK.BIN,并没有特殊含义,字符串在这里也仅仅表达了一个普通
字符串所表达的意义,并无特殊含义。只有在Fatfs文件系统中这样格式的字符串才表示文
件路径。*/
strcat((char*)pname,(char*)UNIGBK_PATH);//将UNIGBK文件复制到pname末尾。
//printf("\r\n与UNIGBK结合之后的数据:%s",pname);
/*原型声明:extern char *strcat(char *dest,char *src)
头文件:#include <string.h>
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针,返回值的类型为char*。*/
/*上面的两个函数放在一起实际上是将*pname指针所指向的的地址的数据变为0:/SYSTEM/FONT/UNIGBK.BIN
以供下面的API函数使用。在API函数中0:/SYSTEM/FONT/UNIGBK.BIN就有具体的意义了。"0:"表示磁盘的
种类,这里表示的是SD卡,/SYSTEM/FONT/UNIGBK.BIN表示文件路径。合在一起就表示SD卡中的文件路径。*/
res=f_open(fftemp,(const TCHAR*)pname,FA_READ);
if(res)rval|=1<<4;//打开文件失败 |
|