请选择 进入手机版 | 继续访问电脑版

安富莱电子论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 311|回复: 8
收起左侧

[STemWin] emWin模拟器中文显示(不需要U2C)

[复制链接]

7

主题

113

帖子

127

积分

初级会员

积分
127
发表于 2019-3-14 14:42:39 | 显示全部楼层 |阅读模式
本帖最后由 xiaosir 于 2019-3-14 20:12 编辑

第一种方法:

第一步:使用FontCvt软件生成字体文件。
生成的方法不多做介绍,参考armfly的emWin教程。
附赠常用6763个常用汉字字库文件:楷体16、24、32号字体。
第二步:

GUI_Init();
后面添加下面语句启用自定义字体支持
GUI_UC_SetEncodeUTF8(); // Enable UTF8 decoding //设置自定义字体支持

第三步:重点

将带有中文字符显示的C文件保存为Unicode(UTF-8 无签名)格式
VS中操作方法:选择要编辑的文件 - 点左上角 文件 -  选择  高级保存选项 - 编码 - Unicode(UTF-8 无签名
Notepad++: 编码 -  转为 UTF-8 无BOM 编码格式


捕获.PNG

第二种方法:(推荐)
第一种方法使用中发现VS编译器对非BOM的UTF-8格式支持不好,出现很多问题。
现在在参考楼下allyzc 及 硬汉大哥的提示,使用ANSI字库更完美,在此感谢@allyzc @eric2013两位大哥的指点。
附上调试的工程,内有使用UcguiFont生成的16,24,32号字库文件。

具体参考硬汉大哥以前的贴子:
http://forum.armfly.com/forum.php?mod=viewthread&tid=423

http://forum.armfly.com/forum.php?mod=viewthread&tid=21302

效果展示:

捕获1.PNG
国标常用汉字6763个.txt (13.21 KB, 下载次数: 8)

SeggerEval_WIN32_MSVC_MinGW_GUI_V548(ANSI字库).7z

31.26 MB, 下载次数: 45

评分

参与人数 1金币 +50 收起 理由
eric2013 + 50 赞一个!

查看全部评分

回复

使用道具 举报

5667

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
45615
QQ
发表于 2019-3-14 14:46:53 | 显示全部楼层
VC6.0好像保存不了,后面我试试,非常感谢楼主分享
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

4

主题

75

帖子

98

积分

初级会员

积分
98
QQ
发表于 2019-3-14 16:15:40 | 显示全部楼层
eric2013 发表于 2019-3-14 14:46
VC6.0好像保存不了,后面我试试,非常感谢楼主分享

VC6.0是不支持UTF8编码,使用VC6.0模拟器时,不需要GUI_UC_SetEncodeUTF8();,直接做ANSI字库就能显示的
回复

使用道具 举报

7

主题

113

帖子

127

积分

初级会员

积分
127
 楼主| 发表于 2019-3-14 16:18:10 | 显示全部楼层
allyzc 发表于 2019-3-14 16:15
VC6.0是不支持UTF8编码,使用VC6.0模拟器时,不需要GUI_UC_SetEncodeUTF8();,直接做ANSI字库就能显示的

最新的模拟器不支持VC6.0吧?
回复

使用道具 举报

5667

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
45615
QQ
发表于 2019-3-14 16:18:32 | 显示全部楼层
allyzc 发表于 2019-3-14 16:15
VC6.0是不支持UTF8编码,使用VC6.0模拟器时,不需要GUI_UC_SetEncodeUTF8();,直接做ANSI字库就能显示的

对,的确是这样的,现在一直用的ANSI的。
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

7

主题

113

帖子

127

积分

初级会员

积分
127
 楼主| 发表于 2019-3-14 16:19:27 | 显示全部楼层
eric2013 发表于 2019-3-14 14:46
VC6.0好像保存不了,后面我试试,非常感谢楼主分享

碰到新问题,有些字符会报这个错误:error C2001: 常量中有换行符,后面加英文的.可以解决。
原因: 非BOM的UTF-8格式
回复

使用道具 举报

5667

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
45615
QQ
发表于 2019-3-15 01:41:48 | 显示全部楼层
xiaosir 发表于 2019-3-14 16:19
碰到新问题,有些字符会报这个错误:error C2001: 常量中有换行符,后面加英文的.可以解决。
原因:  ...

好的
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

3

主题

91

帖子

97

积分

初级会员

积分
97
发表于 2019-3-15 12:20:50 | 显示全部楼层
这是只能用于VC编译器的用法,到了单片机的编译器上就行不通了;有啥意义呢?
回复

使用道具 举报

7

主题

113

帖子

127

积分

初级会员

积分
127
 楼主| 发表于 2019-3-15 14:12:57 | 显示全部楼层
公仆 发表于 2019-3-15 12:20
这是只能用于VC编译器的用法,到了单片机的编译器上就行不通了;有啥意义呢?

这样是为了让仿真更贴近于产品,代码大的时候,编译器编译时间太长了。
如果只是做界面调试,那等待时间太痛苦了,反复烧录也很麻烦....
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|安富莱电子论坛 ( 鄂ICP备09023347号,公安机关备案号42010602000201 )

GMT+8, 2019-5-21 06:46 , Processed in 0.207744 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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