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