TK499用USB方式下载emWin任意外置XBF字库,从此不用再为显示汉字而发愁
本帖最后由 tiky 于 2020-6-12 02:27 编辑TK499的QSPI例程及emWin例程已经出了很久,但是还有不少网友没利用起来。现在出一个单独的例程给大家参考一下,配置就一两步就行了。附件压缩包给出了7种字体,与下载程序一样,同样的下载程序的方式弹出U盘后,7种字库可以一起拖到U盘中就下载进去了(注意:字库相对较大,几MB级别,要等U盘退出后才算完成,一般是进度条走尽的两倍时间)。
关键代码如下:
/*================================ ST16宋体16*16 ================================*/
GUI_FONT stFont;//字体名称
static GUI_XBF_DATA xbfData;
static int stFont_addr;//字体地址,用函数自动获取
static int _cbGetData(U32 off,U16 NumBytes, void *pVoid, void *pBuffer)
{
QSPIReadGroup(stFont_addr + off, pBuffer, NumBytes);
return 0;
}
void CreateXBF_Font(void)
{
GUI_XBF_CreateFont(&stFont,&xbfData,GUI_XBF_TYPE_PROP,_cbGetData,0);
}
GUI_FONT * SetFont_Xbf(void)
{
return ((GUI_FONT *)GUI_SetFont(&stFont));
}
然后用这个函数初始化一下字库,主要作用是获取字库的地址交给emWin,有多少个字库就要给多少个地址,要不emWin找不着这个字库的地址用不了。
void init_all_Font_addr(void)
{
stFont_addr=get_file_address_NOR_FLASH("ST16.xbf");
XKF24_Font_addr=get_file_address_NOR_FLASH("JDXKF24.xbf");
xkj32_Font_addr=get_file_address_NOR_FLASH("JXK32.xbf");
SMG24_Font_addr=get_file_address_NOR_FLASH("SMG24.XBF");
SMG36_Font_addr=get_file_address_NOR_FLASH("SMG36.XBF");
SMG48_Font_addr=get_file_address_NOR_FLASH("SMG48.XBF");
SMG64_Font_addr=get_file_address_NOR_FLASH("SMG64.XBF");
}
然后就可以随便用了,应用样例:
//========== 存储在外部QSPI FLASH里的全字库 字体 ==========//
void XBF_Disp(void)//宋体16*16
{
CreateXBF_Font(); //create extern flash font lib
GUI_UC_SetEncodeUTF8();
SetFont_Xbf();
GUI_SetColor(GUI_RED);
GUI_DispStringHCenterAt("欢迎使用好钜润科技产品",240,200);
GUI_DispStringHCenterAt("当前全字库存储在外部QSPI FLASH",240,220);
GUI_DispStringHCenterAt("emWin外部XBF字库演示",240,240);
}
基于评估板与5寸屏的演示效果,其它屏基本一样,因为只涉及QSPI底层,所以基于TK499评估板的其它屏也同样适用
参考程序:
楼主,你好,芯片的低功耗数据有么,想搞一个低功耗的应用 我们的芯片主战液晶屏,低功耗都不太好,屏背心一亮,都是mA级别的了,芯片上功耗省点没起到太大作用 那个仿数码管的数字字体,能分享个.c数组文件吗
另外这个仿数码管字体,能不能显示英文ASCII码 数码管的数字字体很漂亮,谢谢! eddia2012 发表于 2020-6-12 16:25
数码管的数字字体很漂亮,谢谢!
这个数码管字体真心不漂亮,您要漂亮的,我发给您 bias 发表于 2020-6-12 14:55
那个仿数码管的数字字体,能分享个.c数组文件吗
另外这个仿数码管字体,能不能显示英文ASCII码 ...
这个字库带有ASCII,如下图。这个是直接生成XBF文件,emWin的字库格式,不是数组形式的,字库也在附件中了。
bias 发表于 2020-6-12 14:55
那个仿数码管的数字字体,能分享个.c数组文件吗
另外这个仿数码管字体,能不能显示英文ASCII码 ...
上面那个字库的源Windowns下TTF文件找不到了,我发现Windowns自带有一个DigifaceWide的数码管字体,好像漂亮一点,发上来,你要多大多小,自己生成就可以了。
源TTF字库文件:
字库在电脑的效果
我生成的效果如下:
5寸屏照出10寸的效果 tiky 发表于 2020-6-12 19:14
上面那个字库的源Windowns下TTF文件找不到了,我发现Windowns自带有一个DigifaceWide的数码管字体,好像 ...
谢谢,有这个字体就好办了 本帖最后由 lordor 于 2020-6-14 10:39 编辑
楼主显示的图片非常棒。
但我搞了一个晚上,没有字体显示 ,麻烦看一下什么问题。源文件分成2个文件
boot已经搞最新的下载了,字体也是类似下载程序那样下载了。
论坛上传文件,好像每天大小有限制,放到服务器了
文件下载地址
http://47.99.71.138/%E6%B2%A1%E6%9C%89%E6%96%87%E5%AD%97--4.3%E4%B8%80%E4%BD%93.zip
本帖最后由 lordor 于 2020-6-14 10:41 编辑
源文件放上面了
另外楼主能不能介绍一下,你的源文件,怎么修改适配4.1寸,一体的屏,电阻屏的。
刚开始玩屏,有些基本的不是很明白 lordor 发表于 2020-6-13 23:13
源文件放上面了
另外楼主能不能介绍一下,你的源文件,怎么修改适配4.1寸,一体的屏,电阻屏的。
你这个是4.3寸Smart Board,我们工程师做了一个例程给你,你看一下有什么不同,可以显示7种字体的,这个Smart Board的FLASH空间有16MB,放个十几种字库都可以了
程序: 你的程序也是可以的,只不过忘记了调用init_all_Font_addr();这个函数了,这个函数的作用是把所有字库的起始地址取出来,存在全局变量中,emWin要调用随时可以取用 tiky 发表于 2020-6-15 12:29
你的程序也是可以的,只不过忘记了调用init_all_Font_addr();这个函数了,这个函数的作用是把所有字库的起 ...
还是没字体,你看一下,是不是因为这个版本的bootload要升级才行?
拷入字库,不会自动退出,一直显示 这个
下午跟客服要BOOTLOAD,升级后正常了 Bootloader是要2020年6月份后的才有这个高级的功能,你上面回贴说升级到最新的了,我以为你的就是最新的;最新的Bootloader在论坛里的TK499评估板资料专贴里也有。 这个看起来似乎非常的不错。 已下载所有字库至外部FLASH,但是在窗口中无法显示汉字,请问如何实现?
static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
// USER START (Optionally insert additional variables)
// USER END
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
//
// Initialization of 'RunWindow'
//
hItem = pMsg->hWin;
WINDOW_SetBkColor(hItem, GUI_MAKE_COLOR(0x009FA7AE));
//
// Initialization of 'Text'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
TEXT_SetText(hItem, "RUN");
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
TEXT_SetFont(hItem, GUI_FONT_20_1);
// USER START (Optionally insert additional code for further widget initialization)
// USER END
break;
// USER START (Optionally insert additional message handling)
case WM_PAINT:
CreateXBF_FontSMG24(); //create extern flash font lib
GUI_UC_SetEncodeUTF8();
GUI_SetFont(&smgFont24);
GUI_SetColor(GUI_RED);
GUI_DispStringHCenterAt("012345678",240,0);
CreateXBF_FontXKJ32(); //create extern flash font lib
GUI_UC_SetEncodeUTF8();
GUI_SetFont(&xkj32Font);
GUI_SetColor(GUI_GREEN);
GUI_DispStringHCenterAt("emWin外部XBF字库演示",240,120);
GUI_DispStringHCenterAt("荡胸生层云,决眦入归鸟",300,160);
GUI_DispStringHCenterAt("会当凌绝顶,一览众山小",300,200);
break;
// USER END
default:
WM_DefaultProc(pMsg);
break;
}
} 在例程的main函数里有这个注释,你看一下是否符合这个要求:
//============= emWin的xbf字体支持汉字,要求用UTF8编码格式,所以xbf_font.c这个文件是UTF8编码格式,printf在UTF8文件下是打印不了中文的=============// tiky 发表于 2021-4-8 00:36
在例程的main函数里有这个注释,你看一下是否符合这个要求:
//============= emWin的xbf字体支持汉字,要 ...
可以搞一个通用10.1寸屏,分辨率1024*600的例程吗?
页:
[1]