不爱胡萝卜的仓鼠 发表于 2023-12-24 20:49

[STM32MP135F-DK]测评 ⑦MP135 GTK与中文

<div class='showpostmsg'> 本帖最后由 不爱胡萝卜的仓鼠 于 2023-12-26 13:32 编辑

<p>&nbsp; &nbsp; &nbsp; &nbsp;写在最前面:我没有解决在MP135上使用GTK绘制的界面如何显示中文的问题,但是我找到了一些方向,只是不知道该如何操作</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我绘制了一个界面,放置了一个标签,标签上写&ldquo;刷新&rdquo;,标签的代码如下</p>

<pre>
<code>GtkWidget *label = gtk_label_new("刷新");</code></pre>

<p>但是界面显示的是一串乱码,如下图所示</p>

<div style="text-align: center;"></div>

<div>于是我就去网上找GTK显示中文的帖子,基本上都是说中文编码的问题,GTK只认UTF-8,需要在代码中加入转换函数,转成UTF-8编码。我也照做了,没有用。</div>

<div>我就怀疑是不是转换函数没有生效,我就直接手动把中文转换成TUF-8编码</div>

<div>
<div style="text-align: center;"></div>

<p>&nbsp;</p>
</div>

<div>装进数组里,直接把数据给GTK(下面放了部分代码,我把&ldquo;刷新&rdquo;放到一个按钮上)</div>

<div>
<pre>
<code>char refresh[] = {0x52, 0x37, 0x65, 0xB0, '\0'};

GtkWidget *button_refresh = gtk_button_new_with_label(refresh);</code></pre>

<p>结果SSH界面还多了报错</p>

<pre>
<code>(gtk_time:1955): Pango-WARNING **: 22:43:01.956: Invalid UTF-8 string passed to pango_layout_set_text()</code></pre>

<p>说我给的不是UTF-8,哦那就有意思了,应该是我直接塞数组的动作有错,但是这也侧面反映了,之前我直接在代码中给中文是正确的。</p>

<p>突然我发现,一开始的界面上现实的乱码其实就是UTF-8的编码,所以我得出一个结论:代码和编译方式都是正确的,但是135上没有对用的中文字库,所以无法显示中文字符。</p>

<p>为了验证我的猜想,我突然想到之前测试时写了一个printf当前时间的demo,打印出的内容中就有中文,在SSH中是可以正常显示出来的,在SSH中运行的结果如下</p>

<div style="text-align: center;">
<div style="text-align: center;"></div>
</div>

<p>于是我给135插上键盘,运行之前的程序,如下图所示</p>

<div style="text-align: center;"></div>

<p>同样的代码,结果不同,那么我就可以断定,就是135上缺少对应的中文字库。</p>

<p>&nbsp;</p>

<p>但是到此为止我已经不知道该怎么下一步了,方向很明确要给他装一个中文字库,但是我就是不知道怎么装,如果有知道该怎么做的大佬,欢迎在评论区指导一下。所以后面我制作demo时只能避开中文了</p>
</div>

<p>&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

qiao--- 发表于 2023-12-25 11:40

<p>把win系统的字库移植到板子上去,我编写QT程序的时候也不能显示中文,后来我直接把win&nbsp;的字库移植到板子上就行了</p><br/>

lugl4313820 发表于 2023-12-25 13:23

这个可以跑touchGFX吗?实时性高不高呀?

不爱胡萝卜的仓鼠 发表于 2023-12-25 13:27

lugl4313820 发表于 2023-12-25 13:23
这个可以跑touchGFX吗?实时性高不高呀?

<p>这个是跑了linux系统的,不能跑TouchGFX。当然135也支持裸机开发,和普通的STM32单片机一样,但是依然不支持TouchGFX(之前听ST工程师说后续可能会支持,但什么时候未知),目前裸机下已支持的是LVGL。还有就是裸机不支持Keil,要么IAR要么ST自己的IDE,因为Keil不支持A核</p>

不爱胡萝卜的仓鼠 发表于 2023-12-25 13:28

qiao--- 发表于 2023-12-25 11:40
把win系统的字库移植到板子上去,我编写QT程序的时候也不能显示中文,后来我直接把win&nbsp;的字库移植到板 ...

<p>能请教一下具体怎么操作吗?</p>

qiao--- 发表于 2023-12-25 14:03

<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&amp;goto=findpost&amp;pid=3289079&amp;ptid=1267906" target="_blank"><font color="#999999">不爱胡萝卜的仓鼠 发表于 2023-12-25 13:28</font></a></font> 能请教一下具体怎么操作吗?</blockquote>
</div>

<p>可以,今天晚上之前我出一期移植这个字库的测评,你关注一下</p>

dukedz 发表于 2023-12-25 14:05

<p>把字体文件(.ttf .ttc 等后缀)拷贝到 当前用户 home 目录下的 .fonts 目录下,即可完成字体安装</p>

不爱胡萝卜的仓鼠 发表于 2023-12-25 16:07

qiao--- 发表于 2023-12-25 14:03
可以,今天晚上之前我出一期移植这个字库的测评,你关注一下

<p>好嘞,非常感谢</p>

不爱胡萝卜的仓鼠 发表于 2023-12-25 16:08

dukedz 发表于 2023-12-25 14:05
把字体文件(.ttf .ttc 等后缀)拷贝到 当前用户 home 目录下的 .fonts 目录下,即可完成字体安装

<p>&#128076;,非常感谢,晚上回去我试一下</p>

freebsder 发表于 2023-12-25 17:15

<p>linux可以直接装字库,不复杂,搜索一下。</p>

aing123 发表于 2023-12-29 19:35

u不错,准备入手一台
页: [1]
查看完整版本: [STM32MP135F-DK]测评 ⑦MP135 GTK与中文