20分鐘搞定嵌入式GUI,這箇國産“柿餅”不簡單

2019-01-04 14:20:00
viprt
原創
1044
摘要:做電子硬件開髮,常常要爲設計一箇良好的用戶界麵(UI)傷透腦筋。因爲界麵開髮是箇細緻活,設計一箇界麵,往往是寫很多代碼,對控件進行多次調試,效果仍然不能盡如人意。

做電子硬件開髮,常常要爲設計一箇良好的用戶界麵(UI)傷透腦筋。因爲界麵開髮是箇細緻活,設計一箇界麵,往往是寫很多代碼,對控件進行多次調試,效果仍然不能盡如人意。而且,隨著智能手機的普及,傳統鍵盤/鼠標式的PC操作體驗和仿Win95/Win98風格的嵌入式圖形用戶界麵(GUI)已經不能滿足用戶需求,以輕觸、滑動、拖拽、縮放等爲代錶的觸控方式、通過“語音/麵部識彆+屏幕”方式産生擬人化效果等都正在成爲人們的新寵。與之對應,嵌入式GUI技術也齣現瞭翻天覆地的變化。


狹路相逢勇者勝


“坦率的説,3-4年前,嵌入式市場對於GUI的需求遠不如現在旺盛,低端的串口屏、點陣屏完全能夠滿足應用需求。但目前在以洗衣機、微波爐、油煙機、淨水器、空氣淨化器、空調爲代錶的智能傢電領域,和以儀器儀錶、工業設備爲代錶的工業領域,對人機交互繫統極爲看重,這給GUI産品提供瞭廣闊的市場。”睿賽德電子科技首席運營官鄒誠説。


镟轉木馬特效


而在目前主流的嵌入式GUI開髮技術中,RT-Thread/Persimmon、TouchGFX和emWin是最受人矚目的。


RT-Thread/ Persimmon是國內主導開髮的實時線程操作繫統RT-Thread中的圖形用戶界麵,是一款麵曏嵌入式繫統的,具備多窗口,多線程的,類似Android界麵效果的C++ GUI,構建於RT-Thread物聯網操作繫統之上。目前也已經髮展到瞭RT-Thread/Persimmon 2.0,支持設計器及腳本方式開髮。


盡管稍遜於安卓繫統顯示效果,但其資源佔用率相比Linux方案低一箇數量級,比安卓繫統更是低幾箇數量級,成本也不高,適用於基於arm Cortex-M7/M4內核MCU、基於arm 9/arm 11/Cortex-A7內核的應用處理器/AI芯片之上。目前在NXP、全誌等芯片上均有採用RT-Thread/Persimmon産品,在智能傢居、樓宇自動化繫統/設備以及音視頻繫統中得到瞭廣泛應用。


emWin是由德國Segger公司針對嵌入式平颱開髮的穩定、高效的圖形軟件庫,屬於老牌的嵌入式GUI,有著十幾年的歷史,軟件架構和功能比較成熟。通過調用emWin提供的函數接口,開髮嵌入式圖形界麵應用變得簡單而快捷,但顯示效果偏Win95/Win98風格。


TouchGFX是一箇採用C++語言編寫的軟件框架,可爲嵌入式GUI提供齣色的圖形和流暢的動畵,資源和功耗需求也很低,是RT-Thread/Persimmon的主要競爭對手。美中不足的是TouchGFX開髮易用性較差,開髮週期性長,而且其供應商Draupner Graphics已於今年7月被意法半導體(ST)所收購。


RT-Thread創始人兼睿賽德電子科技總經理熊譜翔在接受《電子工程專輯》獨傢專訪時錶示,RT-Thread原有的以C語言模擬麵曏對象技術進行開髮的RTGUI在代碼簡潔性、可讀性和實用性上難以滿足需求——簡單來説,由觸控GUI帶來的麵曏對象需求,雖然使用C語言能夠實現,但太過繁瑣、複雜,和公司一直以來追求的簡潔之美背道而馳。思考再三,他們決定依照現代化GUI風格重寫GUI組件,卽以C++爲基礎,支持多點觸摸,提供類似signal/slot信號槽的使用方式,包括各種動畵特效等。而這一支持界麵動畵效果的全新GUI,RT-Thread將其稱之爲柿餅(Persimmon) UI。


不一樣的柿餅


考慮到GUI已經成爲人與機器溝通的橋樑,且嵌入式繫統對GUI的需求越來越高,而這一切均要求有一箇輕型、佔用資源少、高性能、高可靠、可配置及美觀的GUI支持。


如前文所述,Persimmon是以C++編寫的,因爲GUI上的一繫列控件以C++麵曏對象的方式來描述會更閤理,例如一箇button,一箇label,一箇image,每箇對象有他們自己的屬性、方法等。當然C++也會帶來一些問題,比如調試睏難,開髮週期長。爲瞭某一效果,代碼反覆迭代不説,做齣來的UI效果還不像安卓、iOS那樣炫麗,韆篇一律等。

Persimmon GUI結構框圖


熊譜翔説,在這類傳統GUI開髮過程中,他們髮現開髮人員麵臨的痛點除瞭調試睏難外,學習成本高,上手難度大,各種繪圖API讓人頭大。更要命的是,UI一旦確定,後期維護睏難,無法陞級。


爲瞭最大程度地降低上手難度,柿餅UI對原來的Persimmon 1.0版本進行瞭陞級,變成瞭2.0版本,併把複雜的UI效果都封裝成一箇箇的控件,衕時對控件的配置要求降到最低。設計人員隻需通過拖 - 擺 - 輕配,就能完成整箇UI效果的設計,所見卽所得。目前,柿餅UI設計器支持21箇控件,不僅覆蓋瞭開髮者日常基本的需求,還有“镟轉木馬”這樣具備炫酷特效的控件。


飛機大戰Demo


衕時,柿餅UI也強調快捷的開髮方式,採用瞭美工+“前端”模式的設計理念,類似前端的小程序編程,使用JavaScript腳本語言來編寫用戶業務邏輯。也就是説,在美工準備好素材的前提下,設計人員隻需通過柿餅UI設計器設計好UI框架,再通過JavaScript腳本語言,隻需幾行代碼就可以實現控件間複雜的事件傳遞,行爲響應等。這種做法,可將調試時間從之前的2-3箇月大幅縮短至1週左右,開髮者隻需把精力集中在邏輯控製上卽可,極大提陞瞭開髮效率。衕時,柿餅UI設計器支持闆級效果仿真,在PC端仿真的衕時就能體驗到真機運行的效果。效果滿意後,開髮人員可以在設計器內通過USB一鍵下載到設備,非常方便。

傳統GUI和柿餅GUI對比圖


作爲中國人自己開髮的GUI,尊重國人的開髮體驗是RT-Thread的頭等大事。鄒誠説,希望不管是控件的配置細節,還是軟件的使用體驗,都能夠最大程度迎閤用戶的使用習慣,讓大傢一看就會,一用就能齣成品,最大程度的降低開髮難度和成本。


柿餅GUI支持對底層硬件的C/C++拓展。用戶可以通過native C/C++ SDK生成動態鏈接庫.so文件,加載到柿餅GUI內,然後就可以通過JS代碼直接調用該動態庫控製底層硬件瞭。而在設備聯網的情況下,還可以通過OTA遠程陞級維護固件、UI應用等,擺脫瞭此前設計一旦定稿量産後,很難再對UI進行陞級或者改動的尷尬。


針對有用戶質疑柿餅UI併未開放齣全部代碼的做法,鄒誠解釋稱,RT-Thread操作繫統的推廣與生態繫統搭建仍然是公司的核心戰略,開源免費是前提,這是毋庸置疑的。因此,工程師可以從官網上下載90%以上的相關資源。但是,考慮到公司的研髮投入和代碼使用維護的難度,確實有少數組件沒有實現開源,需要與相關企業展開授權閤作。


“相關企業自主開髮GUI,或是尋找第三方替代方案目前來看都是不現實的,因爲GUI控件的開髮難度非常高。所以用戶對於收費模式其實併不反感,但前提是我們必鬚要能夠提供易開髮、效果好、資源佔用率低的高品質産品。”熊譜翔補充説。“我們正在計劃推齣高性價比的標準硬件模塊,中小型客戶可以直接內置於他們的終端當中,通過我們提供的UI設計器等工具,快速開髮齣帶有酷炫GUI圖形顯示的産品”。


商務閤作可通過微信公衆號與我們取得聯繫

發錶評論
評論通過審核後顯示。

關註RT-Thread

License許可證

RT-Thread實時操作繫統遵循Apache許可證2.0版本,實時操作繫統內核及所有開源組件可以免費在商業産品中使用,不需要公佈應用程序源碼,沒有潛在商業風險。

聯繫RT-Thread

support@rt-thread.com

+86 021-31608913

群號87088566

上海浦東新區達爾文路88號半島科技園11號樓5層