OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7781|回复: 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 小时
2#
 楼主| 发表于 2021-1-15 20:59:05 | 显示全部楼层
都忘记这个帖子了。看到了回答以下。这个是emwin 6.10f库的BUG,6.16的库修复了这个BUG。
回复

使用道具 举报

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2016-9-14
在线时间
19 小时
3#
 楼主| 发表于 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"下手,重点检查,看看能不能有点思路。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-12 14:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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