0
点赞
收藏
分享

微信扫一扫

emwin多语言实现的两种方式

开源GIS定制化开发方案 2022-02-09 阅读 122
c语言

MCU开发中经常会涉及到多语言的制作和支持,本文将介绍两种制作字库的方法

字库的实现主要包含两部分,一是 字库 一是要显示的字符串,将这两个东西准备好,就可以实现了。

第一种方法:

详细的可以直接参考这篇博客:可 

[EMWIN] 多国语言实现方法---csv文件实现_ewrest的博客-CSDN博客_emwin 多语言

1 将需要显示的字符放在excel表格中,竖排放同一语言的字符,横排放不同的语言种类

2 然后将表格中的内容复制到一个空白的txt文档中

3 将空格用逗号全部替代,另存为一个unicode编码的txt文档,另存一个utf8编码的txt文档,这两个文档将用于制作字库

4 用软件Bin2C.exe软件将utf8的txt文件打开并转换为.c文件

5 打开软件FontCvtST.exe软件选择Antialiased,4bpp 16 Bit UNICODE Internal,然后选择字体和大小,选择Pixels

6 然后点击 Edit –> disable all characters 然后edit ->read pattern file 打开Unicode编码的文件,另存为一个.C文件即可

7 将上面生成的两个.c文件添加到字库程序中即可,

注意这个字库程序是一个静态库,编译完成后是一个.lib文件添加到主程序即可

还需要在主程序中去加载字库,增加相应的代码才可以。具体内容可以参考上面那篇博客

const unsigned char _actmp1[4617UL + 1] LOCATION_EXTFLASH_ATTRIBUTE = {};

/*************************** End of file ****************************/
void getLanguageInfo(unsigned char** pLan, unsigned int* pLanCnt)
{
	*pLan =(unsigned char*) (0X60000000+1*1024*1024+512*1024+320*240*4);
	*pLanCnt = sizeof(_actmp1);
}




extern const  unsigned char _actmp1[4617UL + 1];
memcpy((void*)(0X60000000+1*1024*1024+512*1024+320*240*4),_actmp1,sizeof(_actmp1));



  getLanguageInfo(&lan, &lanCnt);
  GUI_LANG_LoadCSV(lan, lanCnt);

方法二

http://www.armbbs.cn/forum.php?mod=viewthread&tid=94294

可参考以上博客内容

常规字库中有汉语 英语 西班牙 意大利 法语 俄语 德语   但是在制作像韩语这样的小语种的时候,会发现思源字体无法识别其中的某些字符,因此需要使用其他的方法来制作字库

在上面这篇博客中的网友制作的上位机中,进行相关设置后,就可以生成一个可用的字库,这个软件能包含的字库还是很丰富的,该有的基本都支持。

然后需要显示的字符串可以放在一个三维数组中

unsigned char LAN_NUM[167][1][64]

如果编码方式不对显示乱码,可以用u2c.exe软件将每个字符串转换为通用的字符串去显示。

总结:以上两种方法明显来说第二种方案更简单,易操作,易修改,更高效。代码量也少很多。

以上的软件后续会分享百度网盘。

举报

相关推荐

0 条评论