搜索
bottom↓
回复: 20
打印 上一主题 下一主题

TK499用USB方式下载emWin任意外置XBF字库,从此不用再为显示汉字而发愁

[复制链接]

出0入143汤圆

跳转到指定楼层
1
发表于 2020-6-12 02:23:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tiky 于 2020-6-12 02:27 编辑

TK499的QSPI例程及emWin例程已经出了很久,但是还有不少网友没利用起来。现在出一个单独的例程给大家参考一下,配置就一两步就行了。附件压缩包给出了7种字体,与下载程序一样,同样的下载程序的方式弹出U盘后,7种字库可以一起拖到U盘中就下载进去了(注意:字库相对较大,几MB级别,要等U盘退出后才算完成,一般是进度条走尽的两倍时间)。
关键代码如下:
  1. /*================================ ST16  宋体16*16 ================================*/
  2. GUI_FONT stFont;//字体名称
  3. static GUI_XBF_DATA xbfData;
  4. static int stFont_addr;//字体地址,用函数自动获取
  5. static int _cbGetData(U32 off,U16 NumBytes, void *pVoid, void *pBuffer)
  6. {
  7.         QSPIReadGroup(stFont_addr + off, pBuffer, NumBytes);
  8.         return 0;
  9. }

  10. void CreateXBF_Font(void)
  11. {
  12.         GUI_XBF_CreateFont(&stFont,&xbfData,GUI_XBF_TYPE_PROP,_cbGetData,0);
  13. }

  14. GUI_FONT * SetFont_Xbf(void)
  15. {
  16.   return ((GUI_FONT *)GUI_SetFont(&stFont));
  17. }
复制代码


然后用这个函数初始化一下字库,主要作用是获取字库的地址交给emWin,有多少个字库就要给多少个地址,要不emWin找不着这个字库的地址用不了。
  1. void init_all_Font_addr(void)
  2. {
  3.         stFont_addr=get_file_address_NOR_FLASH("ST16.xbf");
  4.         XKF24_Font_addr=get_file_address_NOR_FLASH("JDXKF24.xbf");
  5.         xkj32_Font_addr=get_file_address_NOR_FLASH("JXK32.xbf");

  6.         SMG24_Font_addr=get_file_address_NOR_FLASH("SMG24.XBF");
  7.         SMG36_Font_addr=get_file_address_NOR_FLASH("SMG36.XBF");
  8.         SMG48_Font_addr=get_file_address_NOR_FLASH("SMG48.XBF");
  9.         SMG64_Font_addr=get_file_address_NOR_FLASH("SMG64.XBF");       
  10. }
复制代码


然后就可以随便用了,应用样例:
  1. //========== 存储在外部QSPI FLASH里的全字库 字体 ==========//
  2. void XBF_Disp(void)//宋体16*16
  3. {
  4.        
  5.         CreateXBF_Font();         //create extern flash font lib
  6.         GUI_UC_SetEncodeUTF8();
  7.         SetFont_Xbf();
  8.         GUI_SetColor(GUI_RED);
  9.         GUI_DispStringHCenterAt("欢迎使用好钜润科技产品",240,200);
  10.         GUI_DispStringHCenterAt("当前全字库存储在外部QSPI FLASH",240,220);
  11.   GUI_DispStringHCenterAt("emWin外部XBF字库演示",240,240);
  12. }
复制代码




基于评估板与5寸屏的演示效果,其它屏基本一样,因为只涉及QSPI底层,所以基于TK499评估板的其它屏也同样适用
参考程序: TK499_emWin_TK050F5590_XBF横屏版_支持二次开发.rar (15.95 MB)

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出30入54汤圆

2
发表于 2020-6-12 09:40:03 | 只看该作者
楼主,你好,芯片的低功耗数据有么,想搞一个低功耗的应用

出0入143汤圆

3
 楼主| 发表于 2020-6-12 11:13:49 来自手机 | 只看该作者
我们的芯片主战液晶屏,低功耗都不太好,屏背心一亮,都是mA级别的了,芯片上功耗省点没起到太大作用

出0入10汤圆

4
发表于 2020-6-12 14:55:48 | 只看该作者
那个仿数码管的数字字体,能分享个.c数组文件吗

另外这个仿数码管字体,能不能显示英文ASCII码

出0入0汤圆

5
发表于 2020-6-12 16:25:19 | 只看该作者
数码管的数字字体很漂亮,谢谢!

出140入158汤圆

6
发表于 2020-6-12 16:28:56 | 只看该作者
eddia2012 发表于 2020-6-12 16:25
数码管的数字字体很漂亮,谢谢!

这个数码管字体真心不漂亮,您要漂亮的,我发给您

出0入143汤圆

7
 楼主| 发表于 2020-6-12 18:35:34 | 只看该作者
bias 发表于 2020-6-12 14:55
那个仿数码管的数字字体,能分享个.c数组文件吗

另外这个仿数码管字体,能不能显示英文ASCII码 ...


这个字库带有ASCII,如下图。这个是直接生成XBF文件,emWin的字库格式,不是数组形式的,字库也在附件中了。

出0入143汤圆

8
 楼主| 发表于 2020-6-12 19:14:48 | 只看该作者
bias 发表于 2020-6-12 14:55
那个仿数码管的数字字体,能分享个.c数组文件吗

另外这个仿数码管字体,能不能显示英文ASCII码 ...

上面那个字库的源Windowns下TTF文件找不到了,我发现Windowns自带有一个DigifaceWide的数码管字体,好像漂亮一点,发上来,你要多大多小,自己生成就可以了。
源TTF字库文件: digifaw.rar (18.43 KB)
字库在电脑的效果


我生成的效果如下:

出0入0汤圆

9
发表于 2020-6-12 20:24:05 | 只看该作者
5寸屏照出10寸的效果

出0入10汤圆

10
发表于 2020-6-12 20:38:00 | 只看该作者
tiky 发表于 2020-6-12 19:14
上面那个字库的源Windowns下TTF文件找不到了,我发现Windowns自带有一个DigifaceWide的数码管字体,好像 ...

谢谢,有这个字体就好办了

出0入14汤圆

11
发表于 2020-6-13 23:05:59 | 只看该作者
本帖最后由 lordor 于 2020-6-14 10:39 编辑

楼主显示的图片非常棒。
但我搞了一个晚上,没有字体显示 ,麻烦看一下什么问题。源文件分成2个文件

boot已经搞最新的下载了,字体也是类似下载程序那样下载了。

论坛上传文件,好像每天大小有限制,放到服务器了


文件下载地址
http://47.99.71.138/%E6%B2%A1%E6 ... %B8%80%E4%BD%93.zip




出0入14汤圆

12
发表于 2020-6-13 23:13:55 | 只看该作者
本帖最后由 lordor 于 2020-6-14 10:41 编辑

源文件放上面了

另外楼主能不能介绍一下,你的源文件,怎么修改适配4.1寸,一体的屏,电阻屏的。

刚开始玩屏,有些基本的不是很明白

出0入143汤圆

13
 楼主| 发表于 2020-6-15 12:17:28 | 只看该作者
lordor 发表于 2020-6-13 23:13
源文件放上面了

另外楼主能不能介绍一下,你的源文件,怎么修改适配4.1寸,一体的屏,电阻屏的。

你这个是4.3寸Smart Board,我们工程师做了一个例程给你,你看一下有什么不同,可以显示7种字体的,这个Smart Board的FLASH空间有16MB,放个十几种字库都可以了
程序: TK499_emWin_SmartBoard_TK043F1168_XBF横屏版_支持二次开发.rar (14.88 MB)

出0入143汤圆

14
 楼主| 发表于 2020-6-15 12:29:57 | 只看该作者
你的程序也是可以的,只不过忘记了调用init_all_Font_addr();这个函数了,这个函数的作用是把所有字库的起始地址取出来,存在全局变量中,emWin要调用随时可以取用

出0入14汤圆

15
发表于 2020-6-15 16:55:51 | 只看该作者
tiky 发表于 2020-6-15 12:29
你的程序也是可以的,只不过忘记了调用init_all_Font_addr();这个函数了,这个函数的作用是把所有字库的起 ...

还是没字体,你看一下,是不是因为这个版本的bootload要升级才行?

拷入字库,不会自动退出,一直显示 这个


出0入14汤圆

16
发表于 2020-6-15 21:49:02 | 只看该作者
下午跟客服要BOOTLOAD,升级后正常了

出0入143汤圆

17
 楼主| 发表于 2020-6-15 23:41:40 | 只看该作者
Bootloader是要2020年6月份后的才有这个高级的功能,你上面回贴说升级到最新的了,我以为你的就是最新的;最新的Bootloader在论坛里的TK499评估板资料专贴里也有。

出0入0汤圆

18
发表于 2020-6-19 07:18:47 | 只看该作者
这个看起来似乎非常的不错。

出0入0汤圆

19
发表于 2021-4-7 11:17:25 | 只看该作者
已下载所有字库至外部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;
  }
}

20210407111452.jpg (276.66 KB)

20210407111452.jpg

出0入143汤圆

20
 楼主| 发表于 2021-4-8 00:36:23 | 只看该作者
在例程的main函数里有这个注释,你看一下是否符合这个要求:

//============= emWin的xbf字体支持汉字,要求用UTF8编码格式,所以xbf_font.c这个文件是UTF8编码格式,printf在UTF8文件下是打印不了中文的=============//

出0入0汤圆

21
发表于 2021-4-10 07:30:33 | 只看该作者
tiky 发表于 2021-4-8 00:36
在例程的main函数里有这个注释,你看一下是否符合这个要求:

//============= emWin的xbf字体支持汉字,要 ...

可以搞一个通用10.1寸屏,分辨率1024*600的例程吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 23:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表