做電子硬件開發(fā),常常要為設(shè)計一個良好的用戶界面(UI)傷透腦筋。因為界面開發(fā)是個細致活,設(shè)計一個界面,往往是寫很多代碼,對控件進行多次調(diào)試,效果仍然不能盡如人意。而且,隨著智能手機的普及,傳統(tǒng)鍵盤/鼠標式的PC操作體驗和仿Win95/Win98風格的嵌入式圖形用戶界面(GUI)已經(jīng)不能滿足用戶需求,以輕觸、滑動、拖拽、縮放等為代表的觸控方式、通過“語音/面部識別+屏幕”方式產(chǎn)生擬人化效果等都正在成為人們的新寵。與之對應(yīng),嵌入式GUI技術(shù)也出現(xiàn)了翻天覆地的變化。
狹路相逢勇者勝
“坦率的說,3-4年前,嵌入式市場對于GUI的需求遠不如現(xiàn)在旺盛,低端的串口屏、點陣屏完全能夠滿足應(yīng)用需求。但目前在以洗衣機、微波爐、油煙機、凈水器、空氣凈化器、空調(diào)為代表的智能家電領(lǐng)域,和以儀器儀表、工業(yè)設(shè)備為代表的工業(yè)領(lǐng)域,對人機交互系統(tǒng)極為看重,這給GUI產(chǎn)品提供了廣闊的市場?!鳖Y惖码娮涌萍际紫\營官鄒誠說。
而在目前主流的嵌入式GUI開發(fā)技術(shù)中,RT-Thread/Persimmon、TouchGFX和emWin是最受人矚目的。
RT-Thread/ Persimmon是國內(nèi)主導(dǎo)開發(fā)的實時線程操作系統(tǒng)RT-Thread中的圖形用戶界面,是一款面向嵌入式系統(tǒng)的,具備多窗口、多線程的,類似Android界面效果的C++ GUI,構(gòu)建于RT-Thread物聯(lián)網(wǎng)操作系統(tǒng)之上。目前也已經(jīng)發(fā)展到了RT-Thread/Persimmon 2.0,支持設(shè)計器及腳本方式開發(fā)。
盡管稍遜于安卓系統(tǒng)顯示效果,但其資源占用率相比Linux方案低一個數(shù)量級,比安卓系統(tǒng)更是低幾個數(shù)量級,成本也不高,適用于基于arm Cortex-M7/M4內(nèi)核MCU、基于arm 9/arm 11/Cortex-A7內(nèi)核的應(yīng)用處理器/AI芯片之上。目前在NXP、全志等芯片上均有采用RT-Thread/Persimmon產(chǎn)品,在智能家居、樓宇自動化系統(tǒng)/設(shè)備以及音視頻系統(tǒng)中得到了廣泛應(yīng)用。
emWin是由德國Segger公司針對嵌入式平臺開發(fā)的穩(wěn)定、高效的圖形軟件庫,屬于老牌的嵌入式GUI,有著十幾年的歷史,軟件架構(gòu)和功能比較成熟。通過調(diào)用emWin提供的函數(shù)接口,開發(fā)嵌入式圖形界面應(yīng)用變得簡單而快捷,但顯示效果偏Win95/Win98風格。
TouchGFX是一個采用C++語言編寫的軟件框架,可為嵌入式GUI提供出色的圖形和流暢的動畫,資源和功耗需求也很低,是RT-Thread/Persimmon的主要競爭對手。美中不足的是TouchGFX開發(fā)易用性較差,開發(fā)周期性長,而且其供應(yīng)商Draupner Graphics已于今年7月被意法半導(dǎo)體(ST)所收購。
RT-Thread創(chuàng)始人兼睿賽德電子科技總經(jīng)理熊譜翔在接受《電子工程專輯》獨家專訪時表示,RT-Thread原有的以C語言模擬面向?qū)ο蠹夹g(shù)進行開發(fā)的RTGUI在代碼簡潔性、可讀性和實用性上難以滿足需求——簡單來說,由觸控GUI帶來的面向?qū)ο笮枨?,雖然使用C語言能夠?qū)崿F(xiàn),但太過繁瑣、復(fù)雜,和公司一直以來追求的簡潔之美背道而馳。思考再三,他們決定依照現(xiàn)代化GUI風格重寫GUI組件,即以C++為基礎(chǔ),支持多點觸摸,提供類似signal/slot信號槽的使用方式,包括各種動畫特效等。而這一支持界面動畫效果的全新GUI,RT-Thread將其稱之為柿餅(Persimmon) UI。
不一樣的柿餅
考慮到GUI已經(jīng)成為人與機器溝通的橋梁,且嵌入式系統(tǒng)對GUI的需求越來越高,而這一切均要求有一個輕型、占用資源少、高性能、高可靠、可配置及美觀的GUI支持。
如前文所述,Persimmon是以C++編寫的,因為GUI上的一系列控件以C++面向?qū)ο蟮姆绞絹砻枋鰰侠?,例如一個button,一個label,一個image,每個對象有他們自己的屬性、方法等。當然C++也會帶來一些問題,比如調(diào)試困難,開發(fā)周期長。為了某一效果,代碼反復(fù)迭代不說,做出來的UI效果還不像安卓、iOS那樣炫麗,千篇一律等。
熊譜翔說,在這類傳統(tǒng)GUI開發(fā)過程中,他們發(fā)現(xiàn)開發(fā)人員面臨的痛點除了調(diào)試困難外,學習成本高,上手難度大,各種繪圖API讓人頭大。更要命的是,UI一旦確定,后期維護困難,無法升級。
為了最大程度地降低上手難度,柿餅UI對原來的Persimmon 1.0版本進行了升級,變成了2.0版本,并把復(fù)雜的UI效果都封裝成一個個的控件,同時對控件的配置要求降到最低。設(shè)計人員只需通過拖 - 擺 - 輕配,就能完成整個UI效果的設(shè)計,所見即所得。目前,柿餅UI設(shè)計器支持21個控件,不僅覆蓋了開發(fā)者日?;镜男枨螅€有“旋轉(zhuǎn)木馬”這樣具備炫酷特效的控件。
同時,柿餅UI也強調(diào)快捷的開發(fā)方式,采用了美工+“前端”模式的設(shè)計理念,類似前端的小程序編程,使用JavaScript腳本語言來編寫用戶業(yè)務(wù)邏輯。也就是說,在美工準備好素材的前提下,設(shè)計人員只需通過柿餅UI設(shè)計器設(shè)計好UI框架,再通過JavaScript腳本語言,只需幾行代碼就可以實現(xiàn)控件間復(fù)雜的事件傳遞,行為響應(yīng)等。這種做法,可將調(diào)試時間從之前的2-3個月大幅縮短至1周左右,開發(fā)者只需把精力集中在邏輯控制上即可,極大提升了開發(fā)效率。同時,柿餅UI設(shè)計器支持板級效果仿真,在PC端仿真的同時就能體驗到真機運行的效果。效果滿意后,開發(fā)人員可以在設(shè)計器內(nèi)通過USB一鍵下載到設(shè)備,非常方便。
作為中國人自己開發(fā)的GUI,尊重國人的開發(fā)體驗是RT-Thread的頭等大事。鄒誠說,希望不管是控件的配置細節(jié),還是軟件的使用體驗,都能夠最大程度迎合用戶的使用習慣,讓大家一看就會,一用就能出成品,最大程度的降低開發(fā)難度和成本。
柿餅GUI支持對底層硬件的C/C++拓展。用戶可以通過native C/C++ SDK生成動態(tài)鏈接庫.so文件,加載到柿餅GUI內(nèi),然后就可以通過JS代碼直接調(diào)用該動態(tài)庫控制底層硬件了。而在設(shè)備聯(lián)網(wǎng)的情況下,還可以通過OTA遠程升級維護固件、UI應(yīng)用等,擺脫了此前設(shè)計一旦定稿量產(chǎn)后,很難再對UI進行升級或者改動的尷尬。
針對有用戶質(zhì)疑柿餅UI并未開放出全部代碼的做法,鄒誠解釋稱,RT-Thread操作系統(tǒng)的推廣與生態(tài)系統(tǒng)搭建仍然是公司的核心戰(zhàn)略,開源免費是前提,這是毋庸置疑的。因此,工程師可以從官網(wǎng)上下載90%以上的相關(guān)資源。但是,考慮到公司的研發(fā)投入和代碼使用維護的難度,確實有少數(shù)組件沒有實現(xiàn)開源,需要與相關(guān)企業(yè)展開授權(quán)合作。
“相關(guān)企業(yè)自主開發(fā)GUI,或是尋找第三方替代方案目前來看都是不現(xiàn)實的,因為GUI控件的開發(fā)難度非常高。所以用戶對于收費模式其實并不反感,但前提是我們必須要能夠提供易開發(fā)、效果好、資源占用率低的高品質(zhì)產(chǎn)品?!毙茏V翔補充說?!拔覀冋谟媱澩瞥龈咝詢r比的標準硬件模塊,中小型客戶可以直接內(nèi)置于他們的終端當中,通過我們提供的UI設(shè)計器等工具,快速開發(fā)出帶有酷炫GUI圖形顯示的產(chǎn)品”。
評論
查看更多