本發(fā)明屬于人機(jī)界面平臺(tái)技術(shù)領(lǐng)域,特別是涉及一種人機(jī)界面開發(fā)平臺(tái)及其仿真器所采用的組件關(guān)聯(lián)的方法,旨在采用可視化變量關(guān)聯(lián)組件的方法實(shí)現(xiàn)繪圖組件之間的信息交互。
背景技術(shù):
人機(jī)界面(Human-Machine Interface,HMI)是用戶和機(jī)器之間進(jìn)行傳遞和交互的媒介,可視化的開發(fā)平臺(tái)則能夠讓開發(fā)人員更加方便地進(jìn)行人機(jī)界面的定制化開發(fā)??梢暬膱D形界面開發(fā)平臺(tái)廣泛地運(yùn)用于如今商業(yè)界的許多領(lǐng)域的界面開發(fā),包括汽車儀表、智能家居、工業(yè)控制等各個(gè)領(lǐng)域。采用圖形化的開發(fā)界面能降低開發(fā)難度,并且能提供“所見即所得”的開發(fā)優(yōu)勢(shì)。
盡管目前已有的大部分人機(jī)界面可視化圖形界面開發(fā)平臺(tái)很大程度地降低了開發(fā)人員編寫代碼的負(fù)擔(dān),但是組件之間的數(shù)據(jù)交互以及聯(lián)動(dòng)的問(wèn)題一直沒有得到很好地解決。例如,如何將當(dāng)前界面的進(jìn)度條數(shù)據(jù)傳遞給當(dāng)前界面的儀表盤,以及進(jìn)度條數(shù)據(jù)發(fā)生改變的時(shí)候如何通知與其關(guān)聯(lián)的儀表盤也發(fā)生相關(guān)的改變。
一種常用的圖形界面開發(fā)平臺(tái)的實(shí)現(xiàn)方式是將圖形化界面完全轉(zhuǎn)化為代碼,圖形化界面的目的是為了簡(jiǎn)化用戶編寫部分代碼。這種方式可以很方便的利用代碼實(shí)現(xiàn)不同控件之間的關(guān)聯(lián),同時(shí)控件之間的信息交互也可以通過(guò)變量來(lái)完成。但是采用這種開發(fā)平臺(tái)的開發(fā)人員仍然需要具備一定的編程功底。例如基于java開發(fā)的安卓平臺(tái)就屬于這種開發(fā)平臺(tái)。
另一種常用的圖形界面開發(fā)平臺(tái)的實(shí)現(xiàn)方式則是直接將圖形化界面的信息轉(zhuǎn)化為配置信息。這種實(shí)現(xiàn)方式的好處是用戶可以完全不用編寫代碼進(jìn)行界面開發(fā),但是每個(gè)繪圖組件只能設(shè)置自身的屬性值,而其他組件沒有辦法將自身信息傳遞給該組件。從而無(wú)法實(shí)現(xiàn)組件之間的信息交互以及組件聯(lián)動(dòng)。
本發(fā)明的人機(jī)界面開發(fā)平臺(tái)采用的是將圖形化界面信息完全轉(zhuǎn)化為配置信息的方法,在此基礎(chǔ)上加入了“可視化變量”這個(gè)概念,從而能使開發(fā)人員在完全不用編寫代碼的前提下又能通過(guò)變量實(shí)現(xiàn)繪圖組件之間的關(guān)聯(lián)和信息交互。
現(xiàn)有技術(shù)一的技術(shù)方案中:
美國(guó)申請(qǐng)公布專利US7681176B2,提出了一種代碼與圖形互相轉(zhuǎn)換的方式來(lái)簡(jiǎn)化圖形界面開發(fā)以及建模。該發(fā)明提出了將圖形化應(yīng)用封裝為代碼以及從代碼中恢復(fù)出圖形化界面的方法,從而方便用戶通過(guò)圖形化的方式來(lái)修改代碼。此方案提供了用圖形化界面來(lái)簡(jiǎn)化圖形界面開發(fā)的方法,但是實(shí)現(xiàn)組件之間的關(guān)聯(lián)仍然需要編寫代碼。
中國(guó)申請(qǐng)公布專利CN105912472A提出采用自定義變量的軟件設(shè)計(jì)方法,用該方法在軟件設(shè)計(jì)之初不需要相對(duì)固化地定義某些衍生變量。采用這種方案可以由用戶自定義變量的方式修改組件的屬性。此方案中每個(gè)變量都只能綁定到一個(gè)組件上,所以只能實(shí)現(xiàn)單個(gè)控件的改變,但是無(wú)法實(shí)現(xiàn)控件之間的通信以及聯(lián)動(dòng)。
Mikroprojekt公司開發(fā)的人機(jī)界面開發(fā)平臺(tái)IQ-Editor采用的是名為“Tag”的變量關(guān)聯(lián)組件,當(dāng)與“Tag”綁定的任一控件發(fā)生改變的時(shí)候,與其相關(guān)聯(lián)的控件也會(huì)同時(shí)發(fā)生改變。從而通過(guò)完全無(wú)代碼地方式實(shí)現(xiàn)了控件之間的聯(lián)動(dòng)以及交互。該方案能很好地解決控件之間的交互和聯(lián)動(dòng)問(wèn)題,但是:
a.此方案中每個(gè)“Tag”都需要標(biāo)明數(shù)據(jù)類型,從而對(duì)控件綁定“Tag”帶來(lái)一定的局限性
b.此方案中“Tag”只能綁定控件,而不能綁定諸如頁(yè)面等其他繪圖組件。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種人機(jī)界面的可視化變量關(guān)聯(lián)組件的方法及系統(tǒng),通過(guò)采用了可視化變量來(lái)關(guān)聯(lián)繪圖組件的人機(jī)界面開發(fā)平臺(tái),可視化變量來(lái)關(guān)聯(lián)繪圖組件,實(shí)現(xiàn)繪圖組件之間的互聯(lián)和交互。
為解決上述技術(shù)問(wèn)題,本發(fā)明是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:
本發(fā)明為一種人機(jī)界面的可視化變量關(guān)聯(lián)組件的方法,包括如下過(guò)程:
SS0,用戶在生成配置文件的時(shí),將可視化變量與控件綁定;
SS1,初始化可視化變量:讀取可視化變量的配置信息,并且綁定至組件;
SS2,初始化所有任務(wù):初始化操作系統(tǒng)中所有任務(wù);
SS3,加載頁(yè)面:加載0號(hào)頁(yè)面信息,可視化變量改變事件;
SS4,刷新繪圖:刷新所有的繪圖組件并繪制;
SS5,等待事件:通過(guò)人機(jī)交互等待改變可視化變量的事件發(fā)生;
SS6,當(dāng)可視化變量發(fā)生改變的時(shí)候,會(huì)觸發(fā)所有綁定的組件;
SS7,調(diào)用控制函數(shù):可視化變量發(fā)生改變后,調(diào)用所有綁定組件的組件控制函數(shù)。
優(yōu)選地,所述SS6,當(dāng)可視化變量發(fā)生改變的時(shí)候,會(huì)觸發(fā)所有綁定的組件,執(zhí)行步驟如下:
a.觸發(fā)所有綁定頁(yè)面:跳轉(zhuǎn)至變量值對(duì)應(yīng)頁(yè)面;
b.觸發(fā)所有綁定畫布:切換畫布的當(dāng)前顯示的子畫布;
c.觸發(fā)所有綁定控件:調(diào)用控件的控制函數(shù);
d.觸發(fā)所有綁定指令:發(fā)送變量值對(duì)應(yīng)地址所對(duì)應(yīng)的指令。
優(yōu)選地,所述觸發(fā)所有綁定控件:調(diào)用控件的控制函數(shù)具體步驟為:
e.判斷控件是否在頁(yè)面內(nèi);
f.判斷控件是否被顯示;
g.當(dāng)widgetRefresh=1時(shí)或widgetRefresh=0時(shí),調(diào)用控件的控制函數(shù)。
優(yōu)選地,所述SS7,調(diào)用控制函數(shù):可視化變量發(fā)生改變后,調(diào)用所有綁定組件的組件控制函數(shù),其中,所述組件控制函數(shù)包括頁(yè)面控制函數(shù)、畫布控制函數(shù)和控件控制函數(shù)。
一種人機(jī)界面的可視化變量關(guān)聯(lián)組件系統(tǒng),包括:
繪圖組件,用于人機(jī)界面的繪圖組件之間的信息交互;
可視化變量,包括值與被綁定元件列表;
所述可視化變量實(shí)現(xiàn)組件互聯(lián)模型;
觸發(fā)可視化變量改變的事件。
優(yōu)選地,所述繪圖組件包括頁(yè)面、畫布、子畫布和控件;
所述頁(yè)面:為動(dòng)態(tài)內(nèi)存加載的基本單元,一個(gè)頁(yè)面包含多個(gè)畫布,當(dāng)切換頁(yè)面的時(shí)候內(nèi)存數(shù)據(jù)全部重新加載;
所述畫布:繪圖的基本單元,所繪制的控件數(shù)據(jù)存在于畫布上,每一個(gè)畫布包含多個(gè)子畫布;
所述子畫布:為多個(gè)控件的集合,同一個(gè)畫布中不同子畫布完全重疊在一起,通過(guò)畫布來(lái)切換當(dāng)前顯示的子畫布;
所述控件:為基本的顯示單元,控件的類型包含按鈕、儀表盤、進(jìn)度條等多種類型,用于實(shí)現(xiàn)人機(jī)交互以及界面顯示。
優(yōu)選地,所述可視化變量,包括的值與被綁定元件列表中;
所述值包括整數(shù)或者字符串;
所述綁定元件列表中綁定繪圖元件和/或串口寄存器。
優(yōu)選地,所述綁定繪圖元件和/或串口寄存器具體為:
所述頁(yè)面:與頁(yè)面綁定的可視化變量通過(guò)改變值來(lái)切換顯示的頁(yè)面,或發(fā)送對(duì)應(yīng)頁(yè)面的頁(yè)面指令;
所述畫布:與畫布綁定的可視化變量切換畫布當(dāng)前顯示的子畫布;
所述控件:與控件綁定的可視化變量改變當(dāng)前控件的值;
所述串口寄存器:與串口寄存器綁定的可視化變量向串口中發(fā)送數(shù)據(jù)或者從串口中接受數(shù)據(jù),通過(guò)串口與外界進(jìn)行信息交互。
優(yōu)選地,所述可視化變量實(shí)現(xiàn)組件互聯(lián)模型中觸發(fā)的組件包括:
所述頁(yè)面:切換至變量值所對(duì)應(yīng)序號(hào)的頁(yè)面;
所述畫布:切換至變量值所對(duì)應(yīng)序號(hào)的子畫布;
所述控件:調(diào)用對(duì)應(yīng)控件的控件控制函數(shù);
所述指令:調(diào)用變量值所對(duì)應(yīng)地址的指令。
優(yōu)選地,所述可視化變量可以被內(nèi)部組件、外部串口或者人機(jī)交互過(guò)程所改變,這種改變變量的過(guò)程稱為事件,事件的發(fā)生改變了變量,從而改變變量所關(guān)聯(lián)的組件,以此方式實(shí)現(xiàn)了組件之間交互或者人機(jī)交互,觸發(fā)可視化變量改變的事件包括:
頁(yè)面事件:系統(tǒng)初始化或者切換頁(yè)面時(shí)發(fā)生,整個(gè)頁(yè)面刷新同時(shí)調(diào)用頁(yè)面指令;
鼠標(biāo)事件:用戶觸碰屏幕時(shí)會(huì)調(diào)用可觸碰控件的控制函數(shù),觸碰處理函數(shù)修改其綁定的可視化變量;
串口事件:串口通過(guò)可視化變量所綁定的寄存器號(hào)直接修改可視化變量;
定時(shí)器事件:周期性地更改其所綁定的可視化變量;
指令事件:部分指令可以直接修改可視化變量。
本發(fā)明具有以下有益效果:
1、本發(fā)明通過(guò)在人機(jī)界面中實(shí)現(xiàn)了一種可視化變量與組件綁定的方法,通過(guò)該方法可以達(dá)到的好處有:通過(guò)可視化變量來(lái)連接各個(gè)組件,使組件之間能夠聯(lián)動(dòng),同時(shí)不同組件之間以及組件與外界能夠方便地進(jìn)行通信。而且整個(gè)界面的開發(fā)過(guò)程中不需要引入寫代碼的過(guò)程。
2、本發(fā)明通過(guò)再操作系統(tǒng)上完成了可視化控件的綁定的方法的驗(yàn)證,同時(shí)提出了整個(gè)人機(jī)界面系統(tǒng)的運(yùn)行流程。這樣的好處是:使用了完全無(wú)代碼的方式實(shí)現(xiàn)了組件之間的互聯(lián)與通信,減少了開發(fā)人員的人力成本。
當(dāng)然,實(shí)施本發(fā)明的任一產(chǎn)品并不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明的一種人機(jī)界面的可視化變量關(guān)聯(lián)組件的方法流程圖;
圖2為可視化變量觸發(fā)綁定組件的過(guò)程流程圖;
圖3為組件互聯(lián)示意圖;
圖4為繪圖組件互聯(lián)示意圖;
圖5為事件模型示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖1所示,本發(fā)明為一種人機(jī)界面的可視化變量關(guān)聯(lián)組件的方法,通過(guò)可視化變量綁定組件來(lái)實(shí)現(xiàn)組件的互聯(lián)與通信的方法運(yùn)行于自主研發(fā)的人機(jī)界面操作系統(tǒng)上,首先用戶在生成配置文件的時(shí)候需要將可視化變量與相關(guān)控件綁定,然后人機(jī)界面的運(yùn)行過(guò)程分為以下幾個(gè)步驟:
SS0,用戶在生成配置文件的時(shí),將可視化變量與控件綁定;
SS1,初始化可視化變量:讀取可視化變量的配置信息,并且綁定至組件;
SS2,初始化所有任務(wù):初始化操作系統(tǒng)中所有任務(wù);
SS3,加載頁(yè)面:加載0號(hào)頁(yè)面信息,可視化變量改變事件;
SS4,刷新繪圖:刷新所有的繪圖組件并繪制;
SS5,通過(guò)人機(jī)交互等待改變可視化變量的事件發(fā)生,當(dāng)可視化變量發(fā)生改變的時(shí)候,會(huì)觸發(fā)所有綁定的組件,當(dāng)可視化變量發(fā)生改變時(shí)調(diào)用的函數(shù),用來(lái)更改綁定的組件;
SS6,調(diào)用控制函數(shù):可視化變量發(fā)生改變后,調(diào)用所有綁定組件的組件控制函數(shù)。
其中如圖2所示,SS6,當(dāng)可視化變量發(fā)生改變的時(shí)候,會(huì)觸發(fā)所有綁定的組件,執(zhí)行步驟如下:
a.觸發(fā)所有綁定頁(yè)面:跳轉(zhuǎn)至變量值對(duì)應(yīng)頁(yè)面;
b.觸發(fā)所有綁定畫布:切換畫布的當(dāng)前顯示的子畫布;
c.觸發(fā)所有綁定控件:調(diào)用控件的控制函數(shù);
d.觸發(fā)所有綁定指令:發(fā)送變量值對(duì)應(yīng)地址所對(duì)應(yīng)的指令。
其中,當(dāng)可視化變量發(fā)生改變,觸發(fā)所有綁定控件:調(diào)用控件的控制函數(shù)具體步驟為:
e.判斷控件是否在頁(yè)面內(nèi);
f.判斷控件是否被顯示;
g.當(dāng)widgetRefresh=1時(shí)或widgetRefresh=0時(shí),調(diào)用控件的控制函數(shù)。
其中如圖3所示,SS7,調(diào)用控制函數(shù):可視化變量發(fā)生改變后,調(diào)用所有綁定組件的組件控制函數(shù),其中,組件控制函數(shù)包括頁(yè)面控制函數(shù)、畫布控制函數(shù)和控件控制函數(shù),該頁(yè)面控制函數(shù)、畫布控制函數(shù)和控件控制函數(shù)通過(guò)HMI顯示進(jìn)行顯示,調(diào)用HMI重新繪制;可視化變量發(fā)生改變后,調(diào)用指令控制函數(shù)發(fā)送指令。
一種人機(jī)界面的可視化變量關(guān)聯(lián)組件系統(tǒng),包括:
繪圖組件,用于人機(jī)界面的繪圖組件之間的信息交互;
可視化變量,包括值與被綁定元件列表;
可視化變量實(shí)現(xiàn)組件互聯(lián)模型;
觸發(fā)可視化變量改變的事件。
其中如圖4所示,人機(jī)界面開發(fā)平臺(tái)包含的繪圖組件包括頁(yè)面(page),畫布(canvas),子畫布(subcanvas)以及控件(widget);
頁(yè)面:為動(dòng)態(tài)內(nèi)存加載的基本單元,一個(gè)頁(yè)面包含多個(gè)畫布,當(dāng)切換頁(yè)面的時(shí)候內(nèi)存數(shù)據(jù)全部重新加載;
畫布:繪圖的基本單元,所繪制的控件數(shù)據(jù)存在于畫布上,每一個(gè)畫布包含多個(gè)子畫布;
子畫布:為多個(gè)控件的集合,同一個(gè)畫布中不同子畫布完全重疊在一起,通過(guò)畫布來(lái)切換當(dāng)前顯示的子畫布;
控件:為基本的顯示單元,控件的類型包含按鈕、儀表盤、進(jìn)度條等多種類型,用于實(shí)現(xiàn)人機(jī)交互以及界面顯示。
其中,可視化變量,可視化變量包含兩個(gè)基本信息:值與被綁定元件列表。值可以設(shè)置為任意類型,包括整數(shù)或者字符串。綁定元件列表中可以綁定繪圖元件或者串口寄存器。綁定不同元件所實(shí)現(xiàn)的功能不同:
值包括整數(shù)或者字符串;
綁定元件列表中綁定繪圖元件和/或串口寄存器。
其中,綁定繪圖元件和/或串口寄存器具體為:
頁(yè)面:與頁(yè)面綁定的可視化變量通過(guò)改變值來(lái)切換顯示的頁(yè)面,或發(fā)送對(duì)應(yīng)頁(yè)面的頁(yè)面指令;
畫布:與畫布綁定的可視化變量切換畫布當(dāng)前顯示的子畫布;
控件:與控件綁定的可視化變量改變當(dāng)前控件的值;
串口寄存器:與串口寄存器綁定的可視化變量向串口中發(fā)送數(shù)據(jù)或者從串口中接受數(shù)據(jù),通過(guò)串口與外界進(jìn)行信息交互。
其中,當(dāng)有內(nèi)部或者外部的事件觸發(fā)可視化變量的改變的時(shí)候,可視化變量會(huì)依次觸發(fā)其所綁定的所有組件,從而將同一變量所綁定的組件實(shí)現(xiàn)互聯(lián),可視化變量實(shí)現(xiàn)組件互聯(lián)模型中觸發(fā)的組件包括:
頁(yè)面:切換至變量值所對(duì)應(yīng)序號(hào)的頁(yè)面;
畫布:切換至變量值所對(duì)應(yīng)序號(hào)的子畫布;
控件:調(diào)用對(duì)應(yīng)控件的控件控制函數(shù);
指令:調(diào)用變量值所對(duì)應(yīng)地址的指令。
其中如圖5所示,可視化變量可以被內(nèi)部組件、外部串口或者人機(jī)交互過(guò)程所改變,這種改變變量的過(guò)程稱為事件,事件的發(fā)生改變了變量,從而改變變量所關(guān)聯(lián)的組件,以此方式實(shí)現(xiàn)了組件之間交互或者人機(jī)交互,觸發(fā)可視化變量改變的事件包括:
頁(yè)面事件:系統(tǒng)初始化或者切換頁(yè)面時(shí)發(fā)生,整個(gè)頁(yè)面刷新同時(shí)調(diào)用頁(yè)面指令;
鼠標(biāo)事件:用戶觸碰屏幕時(shí)會(huì)調(diào)用可觸碰控件的控制函數(shù),觸碰處理函數(shù)修改其綁定的可視化變量;
串口事件:串口通過(guò)可視化變量所綁定的寄存器號(hào)直接修改可視化變量;
定時(shí)器事件:周期性地更改其所綁定的可視化變量;
指令事件:部分指令可以直接修改可視化變量。
改變可視化變量所發(fā)生的事件需要調(diào)用的各個(gè)任務(wù),包括鼠標(biāo)任務(wù)、頁(yè)面切換任務(wù)、定時(shí)器任務(wù)、串口任務(wù)和指令發(fā)送任務(wù)
值得注意的是,上述系統(tǒng)實(shí)施例中,所包括的各個(gè)單元只是按照功能邏輯進(jìn)行劃分的,但并不局限于上述的劃分,只要能夠?qū)崿F(xiàn)相應(yīng)的功能即可;另外,各功能單元的具體名稱也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護(hù)范圍。
另外,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,相應(yīng)的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì),如ROM/RAM、磁盤或光盤等。
以上公開的本發(fā)明優(yōu)選實(shí)施例只是用于幫助闡述本發(fā)明。優(yōu)選實(shí)施例并沒有詳盡敘述所有的細(xì)節(jié),也不限制該發(fā)明僅為所述的具體實(shí)施方式。顯然,根據(jù)本說(shuō)明書的內(nèi)容,可作很多的修改和變化。本說(shuō)明書選取并具體描述這些實(shí)施例,是為了更好地解釋本發(fā)明的原理和實(shí)際應(yīng)用,從而使所屬技術(shù)領(lǐng)域技術(shù)人員能很好地理解和利用本發(fā)明。本發(fā)明僅受權(quán)利要求書及其全部范圍和等效物的限制。