- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
12点阵汉字在HD系列机型中的应用-屏幕显示-打印
12点阵汉字在HD系列机型中的应用
在设备屏幕上显示输出
在III型机打印输出
加载字库
通常加载字库有两种方式:内嵌常量式,外部参数文件形式
内嵌变量式是指将字库点阵的内容以常量的形式写在程序源码中,如下文
unsigned char FontPattern[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x00, 0x6C, 0x48, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
…………
0x21, 0x00, 0x79, 0x00, 0x49, 0x40, 0x7B, 0xE0, 0x49, 0x40, 0xFD, 0x40, 0x95, 0x40, 0xFD, 0x40, 0x01, 0x40, 0xFD, 0x50, 0x2A, 0x50, 0xCC, 0x70,
0x10, 0x00, 0x3D, 0xF0, 0x24, 0x40, 0x3C, 0x40, 0x24, 0x40, 0x7F, 0xF0, 0x52, 0x40, 0x7E, 0x40, 0x00, 0x40, 0xFF, 0x40, 0x24, 0x40, 0xC4, 0x40,
0x20, 0x80, 0x7B, 0xF0, 0x49, 0xC0, 0x7A, 0xA0, 0x4C, 0x90, 0xFB, 0xE0, 0xAA, 0x20, 0xFB, 0xE0, 0x02, 0x20, 0xFF, 0xE0, 0x48, 0x00, 0x8B, 0xF0
};
显示函数在调用时直接使用该参数即可,程序下载到手持机即可直接使用。
外部参数文件形式是指将字库文件要外部基本参数的形式下载到手持机中,需要手持机程序在开机的时候检查该参数文件是否存在,如果不存在,则提示下载该参数文件,如果存在,则加载该内容。
unsigned char * FontPattern;
typedef union
{
unsigned char s_char[4];
unsigned long l_word;
} typ_long2char;
/*以下部分为字库程序启动时检测加载*/
{
unsigned char tmpbuffer[16];
typ_long2char tmplc;
memcpy(tmpbuffer, (char *)Font12Addr, 8);
if (memcmp(tmpbuffer, \xf0\x0f\x00\xff, 4) == 0)
{
memcpy(tmplc.s_char, tmpbuffer + 4, 4);
Font12Length = tmplc.l_word; //获得字库长度
FontPattern = malloc(Font12Length);
if (FontPattern == NULL)
{
//提示内存分配失败,程序将无法正常运行
}
memcpy(FontPattern, (char *)(Font12Addr + 8), Font12Length);
}
else
{
//提示字库文件未下载
}
}
/*加载完成*/
/*以下部分为字库文件下载*/
void down_font(void)
{
unsigned char * frwBuffer;
long DataLength;
int tcnt;
frwBuffer = malloc(0x40000);
if (frwBuffer == NULL)
{
DispStr_CE(0, 1, 内存分配失败, DISP_POSITION | DISP_CLRSCR);
DispStr_CE(0, 6, 按任意键返回, DISP_POSITION);
PressAnyKey();
}
else
{
DataLength = DownLoadData(font12, frwBuffer + 8, 0x40000);
if (DataLength 0)
{
memcpy(frwBuffer, \xf0\x0f\x00\xff, 4);
tmplc.l_word = DataLength;
memcpy(frwBuffer + 4, tmplc.s_char, 4);
if ((DataLengt
文档评论(0)