OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5699|回复: 7

emWin移植显示汉字,特定的汉字会导致显示位置的交换。折腾了一天楞没解决,有没有大神知道的???

[复制链接]

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2016-9-14
在线时间
19 小时
发表于 2021-1-15 20:59:04 | 显示全部楼层 |阅读模式
1金钱
问题的发现是在做一个生产检测的工具,检测通过则显示”通过“两个子,实际发现显示的是”过通“ ,追踪发现是”过“这个字会导致显示的位置产生交换,于是进行了简单测试。发现问题较为严重。使用的外部SPI字库,但追踪函数”void GUIPROP_X_DispChar(U16P c)“,函数入口打上断点,发现第一次进入该函数确实是先传入的”过“汉字的内码,也就说SPI字库读取是没问题的,只是不知什么原因导致传入汉字内码时,传入的顺序发生改变。而这个顺序的改变和特定的汉字有关系(别的不知道但至少和”过“有关系)。调试时发现会多次进入”static U16 _GetCharCode(const char GUI_UNI_PTR * s) “函数,且中间有时会出现取到的内码为0x0000,无法进行深入的仿真了。感觉还是无法定位问题,好奇怪。
测试环境:
emWin 6.10f的库
跑emWin的DEMO正常,854*480

程序测试需要显示的内容

程序测试需要显示的内容

实际显示屏显示的内容

实际显示屏显示的内容

最佳答案

查看完整内容[请看2#楼]

都忘记这个帖子了。看到了回答以下。这个是emwin 6.10f库的BUG,6.16的库修复了这个BUG。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2016-9-14
在线时间
19 小时
 楼主| 发表于 2021-1-15 20:59:05 | 显示全部楼层
都忘记这个帖子了。看到了回答以下。这个是emwin 6.10f库的BUG,6.16的库修复了这个BUG。
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4471
金钱
4471
注册时间
2013-4-22
在线时间
335 小时
发表于 2021-1-16 10:44:23 | 显示全部楼层
编码转换有问题吧
回复

使用道具 举报

15

主题

172

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1276
金钱
1276
注册时间
2016-5-31
在线时间
499 小时
发表于 2021-1-16 15:55:10 | 显示全部楼层
使用编译器时,编码转换的问题,

你直接这样调用,不会出错了:

                                     /*---通--------过-----****/
char  hz_Accept_buf[]={0xCD,0xA8,0xB9,0xFD,0x00};
回复

使用道具 举报

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2016-9-14
在线时间
19 小时
 楼主| 发表于 2021-1-16 17:28:26 | 显示全部楼层
xfcjava3 发表于 2021-1-16 15:55
使用编译器时,编码转换的问题,

你直接这样调用,不会出错了:

测试过了,和直接输入汉字一样的效果。这就是说明不是编译器转码的问题。现在唯一的思路是从输入汉字到进入函数“void GUIPROP_X_DispChar(U16P c)”之前到底发生了什么?汉字内码参数是怎么转换和传递的?因为现在只发现有“过”这个字有问题,也有可能是emwin库的问题,“过”这个汉字的编码比较特殊可能和库有点冲突(这种可能性应该极小)。以前用uCgui3.90a显示汉字都是没问题的,从未遇到这种情况,现在的想法是先从“GUI_UC_EncodeNone.c"下手,重点检查,看看能不能有点思路。
回复

使用道具 举报

15

主题

172

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1276
金钱
1276
注册时间
2016-5-31
在线时间
499 小时
发表于 2021-1-16 18:09:43 | 显示全部楼层
ykzjkd 发表于 2021-1-16 17:28
测试过了,和直接输入汉字一样的效果。这就是说明不是编译器转码的问题。现在唯一的思路是从输入汉字到进 ...



1、我测试看了,你的字库有问题,不信的话,用我的字库,你测试看看!!!

hz24字库测试-1.jpg

hz24字库测试.jpg

2、测试用的字库文件:

FontHZ_ST24.zip (5.23 KB, 下载次数: 4)
回复

使用道具 举报

11

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2016-3-30
在线时间
50 小时
发表于 2021-1-22 16:52:30 | 显示全部楼层
xfcjava3 发表于 2021-1-16 15:55
使用编译器时,编码转换的问题,

你直接这样调用,不会出错了:

这个是通过的GBK码吗?
回复

使用道具 举报

15

主题

172

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1276
金钱
1276
注册时间
2016-5-31
在线时间
499 小时
发表于 2021-1-22 17:44:55 | 显示全部楼层
adlf 发表于 2021-1-22 16:52
这个是通过的GBK码吗?

使用汉字库做GUI,没有必要采用全部的汉字库,太浪费资源了。

使用多少个汉字,就采用包含多少个汉字的汉字库,不是很好的事情吗
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 04:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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