日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LittleVgl GUI中實現(xiàn)嵌入中文輸入法框架

TopSemic嵌入式 ? 來源:AET網(wǎng)站 ? 作者:jicheng0622 ? 2022-04-02 09:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

時隔一年多終于又冒泡了,哎,隨著工作越來越忙,自己踏實坐下來寫點東西真是越來越費勁,這篇文章也是準(zhǔn)備了好久好久才打算發(fā)表出來(不瞞大家,東西做完好久了,文章憋了一年了,當(dāng)真“高產(chǎn)”出,咳咳),本來想著好久不見該好好扯點兒閑皮撈點兒閑嗑,結(jié)果兒子跑來旁邊嘮嘮叨叨的把我靈感都整沒了。。。最近國內(nèi)疫情嚴(yán)重,還有東航的事件,再回首身邊家人朋友同事,真心感謝靜好的歲月,也感謝負(fù)重前行的人,希望疫情早點結(jié)束,待到春花浪漫時,生活處處有生機,不多說了,talk is cheap, let's writing...

LittleVgl作為一款開源免費的嵌入式GUI得到越來越多工程師的厚愛,我們可以看到很多小型HMI項目或者一些開源社區(qū)都在使用它作為GUI的框架,同時也受益于用戶群的不斷擴(kuò)大以及一些半導(dǎo)體原廠的青睞(通俗點就是說有贊助有錢兒了),LittleVgl本身也在快速的不斷更新迭代,易用的組件和相關(guān)的輔助開發(fā)工具在不斷的增加,而RT1050/1060/1170系列作為一款帶有LCD控制器的平臺,自然成為了LittleVgl最佳的載體之一了。

LittleVgl本身的組件已經(jīng)很豐富了,但是遺憾的是一直沒有加入對中文輸入法Keyboard的支持(看了下它在Github上的Contributor List沒有華人),這讓它在我們國內(nèi)的應(yīng)用有了一些限制(注意在某組件上顯示中文和真正的中文輸入法是不同的概念),所以本項目旨在解決該問題,即把一個簡單輕量的中文輸入法框架嵌入到LittleVgl并跑在RT1050平臺上,并把它開源開放出來,所以不要小看了我的“公益心”,哈哈。

下面進(jìn)入正題,首先把測試環(huán)境給出來,方便有興趣有能力的朋友可以自行搭建(當(dāng)然應(yīng)一部分偷懶的強烈需求,文章后面我隨附贈了完整的移植好的工程),然后我再一步一步地給出如何移植這套框架到用戶自己的工程里,當(dāng)然我已經(jīng)把代碼本身做了很多優(yōu)化,盡量減小環(huán)境依賴,力求最少步驟的移植過程,“理論上”來講不太會出現(xiàn)移植后編譯出一堆Error的問題,咳咳。。。下面我們趕緊開整吧:

測試環(huán)境:

SDK版本:SDK_v2.9.1

SDK參考例程:boardsevkbimxrt1050littlevgl_exampleslittlevgl_demo_widgets

LittleVgl版本:v7.4.0

IDE工具:Keil_v5.31

開發(fā)板:MIMXRT1050-EVK + 480*272 RGB LCD屏

軟件說明:

我們先看下這套中文輸入法所需的幾個文件,如下圖所示,.c和.h文件加起來一共7個,其中nxp_logo.c只是我額外加的一個NXP的官方logo圖標(biāo)轉(zhuǎn)成的C數(shù)組文件供littleVgl調(diào)用顯示,屬于錦上添花的東西,可有可無,真正跟輸入法相關(guān)的是剩下的6個文件,下面我們逐一介紹下這幾個文件的作用:

ac302460-b18b-11ec-aa7f-dac502259ad0.png

1. qwerty_py.c/.h,實際上這兩個文件才是這套全鍵盤拼音中文輸入法的核心框架,實現(xiàn)了對輸入的拼音字母進(jìn)行索引匹配對應(yīng)的漢字候選列表,這部分我是移植了如下鏈接中網(wǎng)友分享的代碼,所以這兩個文件我的角色只是一個大自然搬運工,不過說實話我是很感激該網(wǎng)友的無私分享的(這也是我一直推崇開源分享精神的源動力),之前對平時使用的各種輸入法里面的算法原理一直充滿好奇,直到看了這篇文章后才豁然開朗,“So that is what it is!”,讓我獲益匪淺(可能人的學(xué)習(xí)曲線和知識體系就是這樣一點一滴的積累吧),而且更關(guān)鍵的是,如果讓我繼續(xù)往下開發(fā)諸如拼音聯(lián)想和多漢字輸入等功能的話,我更多關(guān)心的可能只是邏輯搭建的工作量問題,而不是糾結(jié)于Yes or No的問題了,因為咱已經(jīng)了解了其最底層的工作原理了,所以很多復(fù)雜的事情,我們?nèi)绻艹榻z剝繭的找到其最底層的本質(zhì)(雖然這真的很難),那很多讓人抓耳撓腮的問題很快就可以理清思路。說到這里我思維又發(fā)散了,呵呵,我想起讓Linus Torvalds等一波老大神們一直頭疼的Linux內(nèi)核維護(hù)后繼無人的問題,其實我的個人理解有很大一部分原因是如今的Linux太龐大了以至于幾乎沒有后輩的人對Linux的理解能趕上這些老輩大神,而這些老輩大神的最大優(yōu)勢是他們創(chuàng)建了Linux最早期的底層框架而且難能可貴的是一直在follow Linux每個版本的歷史。總之,推薦大家看看如下這篇文章吧(實際上主要內(nèi)容也都是代碼),希望能各有所獲;

https://www.amobbs.com/thread-5668320-1-1.html?_dsign=0939dcbd

2. lv_chs_keyboard.c/.c文件,這部分就是我的工作了(咱也不能啥都搬運…,這是體現(xiàn)咱的value的東西不是),我把它當(dāng)作littleVgl的一個補充組件來寫的,里面的大多數(shù)API參考官方littlevgl的lv_keyboard.c,所謂的文章開頭的嵌入中文輸入法到LittleVgl GUI環(huán)境中實際上就是這兩個文件干的活,即將上面提到qwerty.c/.h實現(xiàn)的拼音輸入法與LittleVgl框架結(jié)合到一塊,起到一個橋梁的作用,所以如果你想把這套中文輸入法嵌入到其他GUI環(huán)境中的話(比如emWin,GUIX,TouchGFX等),那主要的工作就是參考這兩個文件的內(nèi)容了;

3. lv_font_NotoSansCJKsc_Regular.c字體文件,雖然littleVgl官方源碼包里自帶了一個中文字體文件(lvglsrclv_fontlv_font_simsun_16_cjk.c),但是它只包含了1000個左右最常用的字,我實際體驗了下很多我們想用的字都找不到,所以這個時候就需要自己去做一個更全一點的字體庫了。這里面涉及到兩個問題需要考慮,第一是很多我們常見的中文字體是收費的(咱PC機的Microsoft Office套件里的中文字體都是微軟付費買的,所以咱也理解下早年正版Windows為啥辣么貴了,那你問為啥現(xiàn)在便宜了?因為人家現(xiàn)在不靠這個賺錢了唄),第二個是字體轉(zhuǎn)換工具的問題,我們網(wǎng)上找到的字體都是TTF或者OTF格式的,但littleVgl是不認(rèn)的,需要轉(zhuǎn)換成它支持的字體格式。

對于第一個問題,我網(wǎng)上搜了好久最終選擇了目前用的比較多的Google開源免費的字體,Google真乃金主也,它維護(hù)的網(wǎng)站里面字體各種各樣啥都有且是開源免費的,如下鏈接,我選擇的是NotoSansCJKsc字體(最后面的sc表示simplified Chinese,簡體中文),然后它里面又包含了各種字形(regular, bold, light等),可以根據(jù)需要自行選擇,整個包很大(100多MB),拆分成不同字形的就小了(每個14~16MB左右);

https://www.google.com/get/noto/

ac43f6c0-b18b-11ec-aa7f-dac502259ad0.png

對于第二個字體轉(zhuǎn)換工具的問題,LittleVgl官方自帶了一個字體轉(zhuǎn)換工具(online font converter),我個人覺著不太好用(對OTF字體支持的不行),這里推薦阿里大神自己做的一個LittleVgl字體轉(zhuǎn)換工具(LvglFontTool),非常方便好用,且支持加入Awesome圖標(biāo);

http://www.lfly.xyz/forum.php?mod=viewthread&tid=24&extra=page%3D1

ac59af2e-b18b-11ec-aa7f-dac502259ad0.png

關(guān)于字體這部分我需要再補充個問題,就是它占用的memory大小,畢竟我們是在嵌入式MCU平臺Flash和RAM的資源是受限的,如下圖所示,該字體文件占用大概1Mbytes的rodata空間(即可尋址的Flash空間,當(dāng)然該大小可以通過在上圖轉(zhuǎn)換工具中增減一些文字來調(diào) 整),所以在移植本套輸入法之前需要預(yù)留足夠的Flash空間,當(dāng)然對RT平臺來說這部分還好,畢竟其本身就外擴(kuò)至少幾MB空間的QSPI Flash作為存儲空間的。

ac6e70da-b18b-11ec-aa7f-dac502259ad0.png

4. lv_demo_chineseinput.c/.h文件,這兩個文件屬于應(yīng)用層實現(xiàn)了,主要關(guān)注該文件中下圖的ta_event_cb函數(shù)(即textarea事件的callback,點擊文本框的輸入時回調(diào)),在里面我們需要按照1,2,3去調(diào)用即可(這三步的API均在lv_chs_keyboard.c/h文件里實現(xiàn));

ac90d9cc-b18b-11ec-aa7f-dac502259ad0.png

至此,這套全鍵盤拼音中文輸入法框架所需的幾個文件就介紹完了,用戶只需要把這幾個文件放到自己的工程設(shè)置好文件搜索路徑,并參考隨本文檔附帶的代碼工程示例,再結(jié)合自己產(chǎn)品的GUI樣式,把這套中文輸入法嵌入到自己應(yīng)用當(dāng)中。下面鏈接為本項目github倉庫,覺著不錯的別吝嗇您的小星星,star me!好了,就扯到這兒了,本文首發(fā)ChinaAET,續(xù)發(fā)于CSDN:https://blog.csdn.net/jicheng0622/article/details/123851560和博客園:https://www.cnblogs.com/jicheng0622/p/16078169.html,未完待續(xù)!

https://github.com/jicheng0622/Chinese-Input-Method-Framework-on-MCU-based-LittleVgl-GUI

aca20012-b18b-11ec-aa7f-dac502259ad0.png

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5210

    文章

    20679

    瀏覽量

    337343
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    4368

    瀏覽量

    46464
  • GUI
    GUI
    +關(guān)注

    關(guān)注

    3

    文章

    699

    瀏覽量

    43905

原文標(biāo)題:LittleVgl GUI中實現(xiàn)嵌入中文輸入法框架

文章出處:【微信號:TopSemic,微信公眾號:TopSemic嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    EsDA科普 | AWTK:打造流暢、開源、跨平臺的嵌入GUI

    聯(lián)網(wǎng)領(lǐng)域,GUI引擎是連接用戶與設(shè)備的關(guān)鍵橋梁。但實際開發(fā),這些問題是否讓你頭疼:渲染效果差:界面卡頓、動畫生硬,用戶體驗打折;資源占用高:嵌入式設(shè)備性能有限,
    的頭像 發(fā)表于 04-09 11:35 ?362次閱讀
    EsDA科普 | AWTK:打造流暢、開源、跨平臺的<b class='flag-5'>嵌入</b>式<b class='flag-5'>GUI</b>

    GUI GUIDER如何啟用eSingle Buffer

    嵌入GUI 開發(fā),“跑不快”“卡頓”“撕裂”幾乎是所有工程師都踩過的坑。尤其是在 RGB LCD 這種持續(xù)掃描的顯示接口下,當(dāng)顯存刷新與 LCD 掃描不同步時,畫面撕裂幾乎不可避免。為了規(guī)避
    的頭像 發(fā)表于 02-09 09:43 ?922次閱讀
    在<b class='flag-5'>GUI</b> GUIDER<b class='flag-5'>中</b>如何啟用eSingle Buffer

    LuatOS 框架嵌入式系統(tǒng)架構(gòu)設(shè)計原理

    API 接口,使開發(fā)者能用高級語言快速實現(xiàn)底層控制。這一設(shè)計顯著提升了開發(fā)效率,同時保持了良好的運行性能。 一、LuatOS框架的概念 ? 在LuatOS,有三個核心概念和一個調(diào)
    的頭像 發(fā)表于 02-03 15:57 ?267次閱讀
    LuatOS <b class='flag-5'>框架</b>的<b class='flag-5'>嵌入</b>式系統(tǒng)架構(gòu)設(shè)計原理

    日本小松集團(tuán)選擇Qt Group,實現(xiàn)工程機械GUI自動化測試

    ?(Nasdaq Helsinki: QTCOM) 1月14日宣布,全球工程機械與礦山機械設(shè)備制造商小松集團(tuán)已采用Qt Group的Squish平臺,實現(xiàn)設(shè)備顯示屏的GUI自動化測試。通過合作,小松集團(tuán)大幅提升
    的頭像 發(fā)表于 01-15 12:20 ?281次閱讀
    日本小松集團(tuán)選擇Qt Group,<b class='flag-5'>實現(xiàn)</b>工程機械<b class='flag-5'>GUI</b>自動化測試

    恩智浦嵌入式HMI應(yīng)用開發(fā)工具GUI Guider 1.10.1全新上線

    恩智浦嵌入式HMI應(yīng)用開發(fā)工具GUI Guider 1.10.1全新上線啦!新版本重點聚焦性能提升、工具鏈升級、多點觸控體驗以及開發(fā)板適配,進(jìn)一步優(yōu)化IDE界面,增強功能穩(wěn)定性,并完善文檔體系。
    的頭像 發(fā)表于 12-28 09:45 ?2043次閱讀

    真正“懂你”的輸入法長什么樣?訊飛用AI鍵作答

    一個日活億級的表達(dá)市集,讓輸入法真的“懂你”
    的頭像 發(fā)表于 11-08 23:33 ?5515次閱讀
    真正“懂你”的<b class='flag-5'>輸入法</b>長什么樣?訊飛用AI鍵作答

    PYQT 應(yīng)用程序框架及開發(fā)工具

    大家好,本團(tuán)隊此次分享的內(nèi)容為開發(fā)過程中使用到的PYQT 應(yīng)用程序框架及開發(fā)工具。 pYqt 是一個多平臺的 python 圖形用戶界面應(yīng)用程序框架,由于其面向?qū)ο蟆? 易擴(kuò)展(可實現(xiàn)組件編程等
    發(fā)表于 10-29 07:15

    ElfBoard技術(shù)貼|如何在【RK3588】ELF 2開發(fā)板移植LVGL8.2

    隨著嵌入式設(shè)備對圖形用戶界面(GUI)的需求不斷提升,選擇一款高效、輕量且易于移植的GUI框架已成為項目開發(fā)的關(guān)鍵環(huán)節(jié)。LVGL與Qt作為
    的頭像 發(fā)表于 10-15 08:52 ?6155次閱讀
    ElfBoard技術(shù)貼|如何在【RK3588】ELF 2開發(fā)板移植LVGL8.2

    【Labview技巧合集】16 在labview嵌入python做的界面

    在labview嵌入python做的GUI界面 無所不能的labview啊
    發(fā)表于 09-22 05:30

    基于兆易創(chuàng)新GD32系列MCU的GUI智能屏顯解決方案

    隨著人機交互需求的不斷提升,圖形用戶界面(GUI)已成為各類智能設(shè)備的核心組成部分。兆易創(chuàng)新GD32系列MCU憑借其豐富的外設(shè)接口和強大的處理能力,為用戶們提供了全面的GUI屏顯解決方案,從低功耗小型顯示屏到高分辨率彩色觸摸屏,都能找到匹配的硬件平臺和軟件
    的頭像 發(fā)表于 08-19 14:49 ?1948次閱讀
    基于兆易創(chuàng)新GD32系列MCU的<b class='flag-5'>GUI</b>智能屏顯解決方案

    嵌入式工程師為什么要學(xué)QT?

    Qt對嵌入式工程師來說,真的很重要嗎? Qt是一個跨平臺的C++應(yīng)用程序開發(fā)框架,非常適合嵌入式系統(tǒng)的開發(fā),Qt在嵌入式開發(fā)具有很重要的作
    發(fā)表于 08-14 15:15

    電壓放大器在預(yù)制塊嵌入波動監(jiān)測試驗的創(chuàng)新應(yīng)用成果

    實驗名稱: 預(yù)制塊嵌入波動監(jiān)測試驗研究 研究方向: 超聲檢測 測試目的: 壓電智能骨料是目前用于混凝土結(jié)構(gòu)健康監(jiān)測中常用的傳感器,可進(jìn)行動態(tài)應(yīng)力及材料性能的超聲監(jiān)測。壓電智能骨料嵌入結(jié)構(gòu)時往往需要
    的頭像 發(fā)表于 08-07 11:53 ?601次閱讀
    電壓放大器在預(yù)制塊<b class='flag-5'>嵌入</b><b class='flag-5'>法</b>波動監(jiān)測試驗<b class='flag-5'>中</b>的創(chuàng)新應(yīng)用成果

    BitsButton嵌入式按鍵處理框架

    BitsButton 一、簡介? ??BitsButton是一款針對嵌入式系統(tǒng)優(yōu)化的按鍵檢測框架??。通過創(chuàng)新的二進(jìn)制位序列技術(shù),它能高效處理單鍵、組合鍵(如Ctrl+C)和復(fù)雜按鍵序列(如單擊
    發(fā)表于 08-02 11:24

    GUI Guider全新優(yōu)化方案GUI xTurbo-VeloRender初體驗:基于i.MX RT平臺的LVGL渲染能力突破

    引言 在嵌入GUI開發(fā)領(lǐng)域,圖形界面的渲染性能直接決定了用戶體驗的流暢度與產(chǎn)品競爭力。針對i.MX RT系列的開發(fā)需求,恩智浦在2025年隆重推出全新的性能優(yōu)化方案?- GUI xTurbo技術(shù)
    的頭像 發(fā)表于 07-10 09:21 ?4053次閱讀
    <b class='flag-5'>GUI</b> Guider全新優(yōu)化方案<b class='flag-5'>GUI</b> xTurbo-VeloRender初體驗:基于i.MX RT平臺的LVGL渲染能力突破

    Quartus II原理圖輸入法教程

    電子發(fā)燒友網(wǎng)站提供《Quartus II原理圖輸入法教程.ppt》資料免費下載
    發(fā)表于 06-18 17:58 ?2次下載
    托克逊县| 武邑县| 聊城市| 卢湾区| 稻城县| 水富县| 军事| 邹平县| 太仆寺旗| 股票| 乌兰浩特市| 当雄县| 民勤县| 黔西县| 西宁市| 拜城县| 简阳市| 龙川县| 资兴市| 灵川县| 九寨沟县| 怀仁县| 银川市| 沅陵县| 阿鲁科尔沁旗| 日照市| 南皮县| 驻马店市| 黄山市| 理塘县| 裕民县| 江孜县| 吉木乃县| 龙游县| 梨树县| 陆川县| 元氏县| 水富县| 龙海市| 陕西省| 长葛市|