硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5575|回复: 10
收起左侧

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

[复制链接]

10

主题

23

回帖

63

积分

初级会员

积分
63
发表于 2017-11-1 21:44:47 | 显示全部楼层 |阅读模式
文章转载自:  http://blog.csdn.net/ewrest/article/details/78346882

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

前期准备:

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



第一步:生成csv文件

excel中的内容:
452151-20171023225820644-1439863600(1).png



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





第二步: 生成c文件

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


其内容为一个大数组:
452151-20171023232634769-1012429586(1).png


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



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

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



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

452151-20171023232807426-1049486305.png
① 点击打开 tmp1.c 之后, 将 actmp1 数组改为静态数组,且定义两个全局变量:
452151-20171023234120160-308188934(1).png


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

②在数组最后增加函数:
452151-20171023233428238-1404576583(1).png



第五步:多语言环境准备

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

452151-20171023234853785-642488435.png


②在 MainTas.c 中将①中的序号定义为 enum 类型
452151-20171023235211363-719539447.png


③多语言宏定义
根据excel定义三个语言的宏定义
452151-20171023235401473-379739256.png



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




GUI_LANG_LoadCSV 的相关内容在 emwin5.42 手册的 P1135 ,使用函数  GUI_LANG_LoadCSV
452151-20171023233933926-77943837.png


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




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

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





附录:

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



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

使用道具 举报

10

主题

23

回帖

63

积分

初级会员

积分
63
 楼主| 发表于 2017-11-1 23:51:56 | 显示全部楼层
上传图片有点难...
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106905
QQ
发表于 2017-11-2 01:44:17 | 显示全部楼层
[s:151]  [s:151]
非常谢谢楼主分享,置酷
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2018-1-25 17:00:17 | 显示全部楼层
如果多国语言是用不同的字体呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106905
QQ
发表于 2018-1-26 09:29:35 | 显示全部楼层
guoxiang 发表于 2018-1-25 17:00
如果多国语言是用不同的字体呢?

矢量字库。
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
发表于 2018-1-28 16:59:47 | 显示全部楼层
严重收藏,谢谢楼主
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
发表于 2018-5-15 11:41:11 | 显示全部楼层
发现中文不能显示第一个汉字
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
发表于 2018-5-15 14:10:26 | 显示全部楼层
再试了试,除了英语以外的语言都会少前面一个,汉字是少一个字,俄文少了第一个字母,
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
发表于 2018-5-15 14:13:55 | 显示全部楼层
第三个按钮还不显示了
RU.JPG
hz.JPG
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
发表于 2018-5-15 14:16:21 | 显示全部楼层
对了,我用的5.22测试,难道不行?
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
发表于 2018-5-16 13:47:19 | 显示全部楼层
eric2013 发表于 2017-11-2 01:44
[s:151]  [s:151]
非常谢谢楼主分享,置酷

来帮忙看看怎么解决,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 13:23 , Processed in 0.193350 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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