[EMWIN] 多国语言实现方法

[STemWin] [EMWIN] 多国语言实现方法---csv文件实现

 

文章转载自:  http://blog.csdn.net/ewrest/article/details/78346882

优点: 多国语言较多的时候,采用这种办法比较容易,
缺点:占用的RAM比较多.

前期准备:

PC: win7X64 vs2013 微软自带的微软雅黑字体
emwin 相关:emwin5.42模拟器,emwin5.42英文手册, Bin2C.exe FontCvt.exe 



第一步:生成csv文件

excel中的内容:
 



①新建txt文件,另存为utf-8格式; ②复制excel中的内容到txt中,将 制表符 替换为 英文的逗号 ,并保存 ; ③将txt文件更改后缀名为 csv;
④得到如下文件(tmp1.csv):
 





第二步: 生成c文件

使用emwin的 Bin2C.exe 软件,将上一步的 tmp1.csv 装换为 tmp1.c 文件;
 


其内容为一个大数组:
 


bin2c.exe : 下载地址: http://dl.pconline.com.cn/download/766925-1.html



第三步: 生成对语言字库:

①记事本打开 tmp1.csv ,且另存为文件为Unicode格式的 tmp1.txt 文件;
②使用 tmp1.txt 文件通过FontCvt.exe 生成字库请详见安富莱教程: http://forum.armfly.com/forum.php?mod=viewthread&tid=6481
③通过②步骤得到 WRYHLight19_10_4bpp.c 字库文件.



第四步:把文件加载到模拟器中

 
① 点击打开 tmp1.c 之后, 将 actmp1 数组改为静态数组,且定义两个全局变量:
 


这里需要注意下: 使用 const 的数组,在后续步骤会使emwin奔溃,可能是emwin需要修改原数组.

②在数组最后增加函数:
 



第五步:多语言环境准备

① 复制文件 tmp1.xlsx 到一个新的文件   有序号的tmp1.xlsx, 增加序号,等会使用多语言的时候有用.

 


②在 MainTas.c 中将①中的序号定义为 enum 类型
 


③多语言宏定义
根据excel定义三个语言的宏定义
 



④初始化多语言使用环境
三个函数:
使用多语言注册 emwin的 utf-8 : GUI_UC_SetEncodeUTF8();
然后就是之前多语言的函数 : void getLanguageInfo(unsigned char** pLan, unsigned int* pLanCnt)
最后是导入多语言到emwin中 : int GUI_LANG_LoadCSV(char * pFileData, U32 FileSize);
 




GUI_LANG_LoadCSV 的相关内容在 emwin5.42 手册的 P1135 ,使用函数  GUI_LANG_LoadCSV 
 


注意:在这里如果使用函数GUI_LANG_LoadCSV的 pFileData  为const 类型,会使emwin 奔溃.切记!!!




第六步: 使用函数进行调用

使用 GUI_LANG_GetTextEx 进行调用emwin中的多语言数据.
GUI_LANG_GetTextEx 函数相关见手册 P1137.
 





附录:

1.文中源码和相关文件,由于软件有版权的问题,请自己自行百度,或者在st的固件库文件中有:
 



2.代码地址: 链接:http://pan.baidu.com/s/1bpItz0j 密码:uedt
3.官方例程: http://forum.armfly.com/forum.php?mod=viewthread&tid=5681

你可能感兴趣的:(嵌入式)