本發(fā)明涉及互聯(lián)網(wǎng)應(yīng)用技術(shù)領(lǐng)域,特別是一種實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的SDK和方法。
背景技術(shù):
隨著智能設(shè)備(如智能照明設(shè)備、智能攝像機(jī)等)的快速普及,各種智能設(shè)備的操控方式也不盡相同,有藍(lán)牙的,有WIFI(WIreless-Fidelity,無(wú)線保真)的,有ZigBee(紫蜂)的,等等。對(duì)這些智能設(shè)備的設(shè)置和控制操作基本都離不開(kāi)智能控制終端或系統(tǒng)上的智能控制模塊,如APP(Application,應(yīng)用程序)等,發(fā)明人發(fā)現(xiàn),目前智能控制模塊對(duì)于不同通信協(xié)議類(lèi)型的無(wú)線通信模塊(即,藍(lán)牙、WIFI或ZigBee等)沒(méi)有統(tǒng)一的調(diào)用方式,基本上是各種通信協(xié)議類(lèi)型對(duì)應(yīng)一套實(shí)現(xiàn)方式,沒(méi)有統(tǒng)一的規(guī)范,這樣開(kāi)發(fā)周期較長(zhǎng)、成本較高,亟待解決這一問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的SDK(Software Development Kit,軟件開(kāi)發(fā)包)和相應(yīng)的方法。
依據(jù)本發(fā)明的一方面,提供了一種實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的軟件開(kāi)發(fā)包SDK,包括:
應(yīng)用接口組件,用于將對(duì)不同協(xié)議類(lèi)型的無(wú)線通信模塊的控制操作封裝成統(tǒng)一的接口,以供外部統(tǒng)一調(diào)用;
設(shè)備組件,用于將所述不同協(xié)議類(lèi)型的無(wú)線通信模塊抽象成獨(dú)立的類(lèi),每個(gè)類(lèi)預(yù)留對(duì)應(yīng)的協(xié)議類(lèi)型的適配器的接口;
至少兩類(lèi)適配器,其中,各類(lèi)適配器對(duì)相應(yīng)的協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作。
可選地,所述無(wú)線通信模塊位于智能設(shè)備中,所述應(yīng)用接口組件針對(duì)不同類(lèi)型的智能設(shè)備提供不同類(lèi)型的控制操作的接口。
可選地,若封裝的統(tǒng)一的接口包括多個(gè),則各接口對(duì)應(yīng)所述不同協(xié)議類(lèi)型的無(wú)線通信模塊的一個(gè)或多個(gè)控制操作。
可選地,所述應(yīng)用接口組件還用于搜索不同協(xié)議類(lèi)型的無(wú)線通信模塊以及創(chuàng)建不同協(xié)議類(lèi)型的無(wú)線通信模塊的標(biāo)識(shí)。
可選地,所述應(yīng)用接口組件包括實(shí)現(xiàn)設(shè)備發(fā)現(xiàn)的功能的接口,該接口定義有第一方法和第二方法,所述第一方法用于搜索不同協(xié)議類(lèi)型的無(wú)線通信模塊,所述第二方法用于通過(guò)無(wú)線通信模塊回復(fù)的消息來(lái)創(chuàng)建相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊的標(biāo)識(shí)。
可選地,所述設(shè)備組件中的各個(gè)類(lèi)實(shí)現(xiàn)所述應(yīng)用接口組件中封裝的統(tǒng)一的接口,當(dāng)該接口被調(diào)用時(shí),所述設(shè)備組件還用于根據(jù)所述應(yīng)用接口組件創(chuàng)建的標(biāo)識(shí)對(duì)應(yīng)的協(xié)議類(lèi)型,調(diào)用相應(yīng)協(xié)議類(lèi)型的適配器的接口,以利用相應(yīng)協(xié)議類(lèi)型的適配器對(duì)相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作。
可選地,所述設(shè)備組件中定義有第一基類(lèi)以及繼承自所述第一基類(lèi)的至少兩個(gè)第二基類(lèi),各個(gè)第二基類(lèi)對(duì)應(yīng)不同的協(xié)議類(lèi)型,通過(guò)繼承所述至少兩個(gè)第二基類(lèi)將所述不同協(xié)議類(lèi)型的無(wú)線通信模塊抽象成獨(dú)立的類(lèi)。
可選地,所述第一基類(lèi)中定義有抽象方法,所述至少兩個(gè)第二基類(lèi)在繼承所述第一基類(lèi)時(shí)實(shí)現(xiàn)定義的抽象方法。
可選地,所述至少兩類(lèi)適配器對(duì)應(yīng)有統(tǒng)一接口,所述統(tǒng)一接口中定義有對(duì)無(wú)線通信模塊進(jìn)行控制操作的方法,各類(lèi)適配器實(shí)現(xiàn)所述統(tǒng)一接口中定義的方法來(lái)實(shí)現(xiàn)對(duì)相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作。
可選地,所述控制操作包括將從無(wú)線通信模塊讀取的消息提交給所述設(shè)備組件的操作,所述設(shè)備組件還用于解析所述消息,得到所述消息中包含的無(wú)線通信模塊的參數(shù)數(shù)據(jù),將所述參數(shù)數(shù)據(jù)更新到各個(gè)類(lèi)中。
可選地,所述軟件開(kāi)發(fā)包用于智能控制終端或系統(tǒng)上的智能控制模塊的調(diào)用,從而實(shí)現(xiàn)智能控制終端或系統(tǒng)通過(guò)智能控制模塊調(diào)用所述軟件開(kāi)發(fā)包提供的統(tǒng)一的接口來(lái)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊。
依據(jù)本發(fā)明的另一方面,還提供了一種實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的方法,包括:
將對(duì)不同協(xié)議類(lèi)型的無(wú)線通信模塊的控制操作封裝成統(tǒng)一的接口,以供外部統(tǒng)一調(diào)用;
將所述不同協(xié)議類(lèi)型的無(wú)線通信模塊抽象成獨(dú)立的類(lèi),每個(gè)類(lèi)預(yù)留對(duì)應(yīng)的協(xié)議類(lèi)型的適配器的接口;
調(diào)用相應(yīng)協(xié)議類(lèi)型的適配器的接口,利用相應(yīng)協(xié)議類(lèi)型的適配器對(duì)相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作。
可選地,所述無(wú)線通信模塊位于智能設(shè)備中,所述方法還包括:
針對(duì)不同類(lèi)型的智能設(shè)備提供不同類(lèi)型的控制操作的接口。
可選地,所述方法還包括:
搜索不同協(xié)議類(lèi)型的無(wú)線通信模塊,并通過(guò)無(wú)線通信模塊回復(fù)的消息來(lái)創(chuàng)建相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊的標(biāo)識(shí)。
可選地,所述調(diào)用相應(yīng)協(xié)議類(lèi)型的適配器的接口,包括:
各個(gè)類(lèi)實(shí)現(xiàn)封裝的統(tǒng)一的接口,當(dāng)該接口被調(diào)用時(shí),根據(jù)創(chuàng)建的標(biāo)識(shí)對(duì)應(yīng)的協(xié)議類(lèi)型,調(diào)用相應(yīng)協(xié)議類(lèi)型的適配器的接口。
可選地,所述方法還包括:
從無(wú)線通信模塊讀取消息,并解析所述消息,得到所述消息中包含的無(wú)線通信模塊的參數(shù)數(shù)據(jù),進(jìn)而將所述參數(shù)數(shù)據(jù)更新到各個(gè)類(lèi)中。
本發(fā)明實(shí)施例提供了一種軟件開(kāi)發(fā)包(SDK),其包括應(yīng)用接口組件、設(shè)備組件以及至少兩類(lèi)適配器,其中,由設(shè)備組件將不同協(xié)議類(lèi)型的無(wú)線通信模塊抽象成獨(dú)立的類(lèi),每個(gè)類(lèi)預(yù)留對(duì)應(yīng)的協(xié)議類(lèi)型的適配器的接口,通過(guò)預(yù)留的適配器的接口調(diào)用各類(lèi)適配器對(duì)相應(yīng)的協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作,并由應(yīng)用接口組件將對(duì)不同協(xié)議類(lèi)型的無(wú)線通信模塊的控制操作封裝成統(tǒng)一的接口,提供給外部(即智能控制模塊,如APP等)統(tǒng)一調(diào)用,讓外部能夠無(wú)差別地調(diào)用不同協(xié)議類(lèi)型的無(wú)線通信模塊,無(wú)需感知底層調(diào)用細(xì)節(jié),從而降低外部的復(fù)雜性和提高外部程序的可維護(hù)性。
上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
根據(jù)下文結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會(huì)更加明了本發(fā)明的上述以及其他目的、優(yōu)點(diǎn)和特征。
附圖說(shuō)明
通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一實(shí)施例的實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的軟件開(kāi)發(fā)包的結(jié)構(gòu)示意圖;
圖2示出了根據(jù)本發(fā)明一實(shí)施例的實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的軟件開(kāi)發(fā)包的分層結(jié)構(gòu)示意圖;
圖3示出了根據(jù)本發(fā)明一實(shí)施例的適配層的UML結(jié)構(gòu)圖;
圖4示出了根據(jù)本發(fā)明一實(shí)施例的設(shè)備層的UML結(jié)構(gòu)圖;
圖5示出了根據(jù)本發(fā)明一實(shí)施例的接口層的UML結(jié)構(gòu)圖;以及
圖6示出了根據(jù)本發(fā)明一實(shí)施例的實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的方法的流程圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的軟件開(kāi)發(fā)包(SDK)。圖1示出了根據(jù)本發(fā)明一實(shí)施例的實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的軟件開(kāi)發(fā)包的結(jié)構(gòu)示意圖。如圖1所示,該軟件開(kāi)發(fā)包100可以包括:應(yīng)用接口組件110、設(shè)備組件120、至少兩類(lèi)適配器130。
在本實(shí)施例的軟件開(kāi)發(fā)包100的各部件中,應(yīng)用接口組件110用于將對(duì)不同協(xié)議類(lèi)型的無(wú)線通信模塊的控制操作封裝成統(tǒng)一的接口,以供外部統(tǒng)一調(diào)用;設(shè)備組件120用于將不同協(xié)議類(lèi)型的無(wú)線通信模塊抽象成獨(dú)立的類(lèi),每個(gè)類(lèi)預(yù)留對(duì)應(yīng)的協(xié)議類(lèi)型的適配器的接口;至少兩類(lèi)適配器130中的各類(lèi)適配器對(duì)相應(yīng)的協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作。
使用本實(shí)施例的軟件開(kāi)發(fā)包100,也即軟件開(kāi)發(fā)工具包,其將對(duì)不同協(xié)議類(lèi)型的無(wú)線通信模塊的控制操作封裝成統(tǒng)一的接口,提供給外部(即智能控制模塊,如APP等)統(tǒng)一調(diào)用,讓外部能夠無(wú)差別地調(diào)用不同協(xié)議類(lèi)型的無(wú)線通信模塊,無(wú)需感知底層調(diào)用細(xì)節(jié),從而降低外部的復(fù)雜性和提高外部程序的可維護(hù)性。
在本發(fā)明的可選實(shí)施例中,無(wú)線通信模塊可以位于智能設(shè)備(如智能照明設(shè)備、智能攝像機(jī)、智能空氣凈化器等)中,軟件開(kāi)發(fā)包100可以通過(guò)遠(yuǎn)程控制無(wú)線通信模塊來(lái)控制智能設(shè)備。在實(shí)際應(yīng)用中,開(kāi)發(fā)者可以基于軟件開(kāi)發(fā)包100來(lái)開(kāi)發(fā)智能控制終端或系統(tǒng)上的智能控制模塊(例如,將軟件開(kāi)發(fā)包100安裝在智能控制模塊中),這樣可以利用智能控制模塊來(lái)遠(yuǎn)程控制無(wú)線通信模塊,進(jìn)而來(lái)控制智能設(shè)備。這里的智能控制終端可以是電腦、智能手機(jī)、智能手表等終端,例如,智能控制終端為智能手機(jī),則智能控制模塊可以是智能手機(jī)上的APP,這樣,用戶可以操控APP來(lái)遠(yuǎn)程控制無(wú)線通信模塊,進(jìn)而來(lái)控制智能設(shè)備。具體地,當(dāng)用戶操控APP時(shí),APP調(diào)用軟件開(kāi)發(fā)包100提供的統(tǒng)一的接口來(lái)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊,從而實(shí)現(xiàn)對(duì)智能設(shè)備的控制。
為了滿足對(duì)不同類(lèi)型的智能設(shè)備的控制需求,軟件開(kāi)發(fā)包100中的應(yīng)用接口組件110還可以針對(duì)不同類(lèi)型的智能設(shè)備提供不同類(lèi)型的控制操作的接口。舉例來(lái)說(shuō),當(dāng)智能設(shè)備為智能照明設(shè)備時(shí),應(yīng)用接口組件110提供的控制操作的接口可以如連接、斷開(kāi)接口,回調(diào)接口,狀態(tài)查詢接口,設(shè)置、控制(如定時(shí)器設(shè)置、參數(shù)設(shè)置、開(kāi)關(guān)、調(diào)光、調(diào)色、調(diào)亮度等)接口,OTA(Over-the-Air,空中下載)升級(jí)接口,等等,本發(fā)明不限于此。當(dāng)智能設(shè)備為智能攝像機(jī)時(shí),應(yīng)用接口組件110提供的控制操作的接口可以如連接、斷開(kāi)接口,回調(diào)接口,狀態(tài)查詢接口,設(shè)置、控制(如攝像機(jī)名稱、相關(guān)參數(shù)設(shè)置、開(kāi)關(guān)、調(diào)節(jié)聲音、調(diào)節(jié)攝像畫(huà)面等)接口、OTA升級(jí)接口,等等,本發(fā)明不限于此。需要說(shuō)明的是,此處舉例僅是示意性的,并不對(duì)本發(fā)明進(jìn)行限制。
在本發(fā)明的可選實(shí)施例中,若封裝的統(tǒng)一的接口包括多個(gè),則各接口可以對(duì)應(yīng)不同協(xié)議類(lèi)型的無(wú)線通信模塊的一個(gè)或多個(gè)控制操作。例如,在上文的舉例中,連接、斷開(kāi)接口對(duì)應(yīng)有連接操作和斷開(kāi)操作,狀態(tài)查詢接口對(duì)應(yīng)狀態(tài)查詢操作,等等。
在本發(fā)明的可選實(shí)施例中,軟件開(kāi)發(fā)包100中的應(yīng)用接口組件110還用于搜索不同協(xié)議類(lèi)型的無(wú)線通信模塊以及創(chuàng)建不同協(xié)議類(lèi)型的無(wú)線通信模塊的標(biāo)識(shí)。具體地,應(yīng)用接口組件110可以包括實(shí)現(xiàn)設(shè)備發(fā)現(xiàn)的功能的接口,不妨定義為IFindDevice接口,該接口定義有第一方法和第二方法,第一方法用于搜索不同協(xié)議類(lèi)型的無(wú)線通信模塊,第二方法用于通過(guò)無(wú)線通信模塊回復(fù)的消息來(lái)創(chuàng)建相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊的標(biāo)識(shí)。這里,無(wú)線通信模塊回復(fù)的消息中攜帶有無(wú)線通信模塊的相關(guān)信息(如型號(hào)或編號(hào)、通信協(xié)議類(lèi)型、IP地址等),從而可以根據(jù)消息中攜帶的無(wú)線通信模塊的相關(guān)信息來(lái)創(chuàng)建相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊的標(biāo)識(shí)。
在本發(fā)明的可選實(shí)施例中,設(shè)備組件120中的各個(gè)類(lèi)實(shí)現(xiàn)應(yīng)用接口組件110中封裝的統(tǒng)一的接口,當(dāng)統(tǒng)一的接口被調(diào)用時(shí),設(shè)備組件120還用于根據(jù)應(yīng)用接口組件110創(chuàng)建的標(biāo)識(shí)對(duì)應(yīng)的協(xié)議類(lèi)型,調(diào)用相應(yīng)協(xié)議類(lèi)型的適配器的接口,以利用相應(yīng)協(xié)議類(lèi)型的適配器對(duì)相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作。由此可見(jiàn),設(shè)備組件120可以根據(jù)無(wú)線通信模塊的協(xié)議類(lèi)型匹配相應(yīng)的適配器,實(shí)現(xiàn)自由切換適配器,靈活度高。
為了更加清楚地說(shuō)明軟件開(kāi)發(fā)包100中各部件與不同協(xié)議類(lèi)型的無(wú)線通信模塊的結(jié)構(gòu)關(guān)系,圖2中將軟件開(kāi)發(fā)包100劃分為三層結(jié)構(gòu),即應(yīng)用接口層、設(shè)備層以及適配層,分別對(duì)應(yīng)應(yīng)用接口組件110、設(shè)備組件120以及至少兩類(lèi)適配器130。圖2中還例舉了各層的功能,下面將分別進(jìn)行詳細(xì)介紹。
首先,應(yīng)用接口層中的應(yīng)用接口組件110將對(duì)不同協(xié)議類(lèi)型的無(wú)線通信模塊的控制操作封裝成統(tǒng)一的接口(如設(shè)備發(fā)現(xiàn)接口,連接、斷開(kāi)接口,回調(diào)接口,狀態(tài)查詢接口,設(shè)置、控制接口,OTA升級(jí)接口,等等),以供外部統(tǒng)一調(diào)用,從而屏蔽底部實(shí)現(xiàn)細(xì)節(jié)。這里的外部可以如APP,一般是APP的UI(User Interface,用戶界面)層。
其次,設(shè)備層中的設(shè)備組件120將不同協(xié)議類(lèi)型的無(wú)線通信模塊抽象成獨(dú)立的類(lèi),每個(gè)類(lèi)預(yù)留對(duì)應(yīng)的協(xié)議類(lèi)型的適配器的接口,圖2中示意的不同協(xié)議類(lèi)型的無(wú)線通信模塊包括有WIFI和藍(lán)牙無(wú)線通信模塊,當(dāng)然并不限于此,還可以有ZigBee等無(wú)線通信模塊。
再者,適配層中的至少兩類(lèi)適配器130,包括WIFI連接適配器和藍(lán)牙連接適配器,各類(lèi)適配器對(duì)相應(yīng)的協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作。另外,圖2中還示意了WIFI無(wú)線通信模塊和藍(lán)牙無(wú)線通信模塊,它們位于智能終端中,從而通過(guò)遠(yuǎn)程控制無(wú)線通信模塊來(lái)控制智能設(shè)備。
對(duì)于外部來(lái)說(shuō),可以調(diào)用應(yīng)用接口組件110提供的實(shí)現(xiàn)設(shè)備發(fā)現(xiàn)的功能的IFindDevice接口,由該接口的第一方法來(lái)搜索不同協(xié)議類(lèi)型的無(wú)線通信模塊,以及由該接口的第二方法通過(guò)無(wú)線通信模塊回復(fù)的消息來(lái)創(chuàng)建相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊的標(biāo)識(shí)。進(jìn)一步地,外部還可以調(diào)用應(yīng)用接口組件110封裝的統(tǒng)一的接口,從而設(shè)備組件120根據(jù)應(yīng)用接口組件110創(chuàng)建的標(biāo)識(shí)對(duì)應(yīng)的協(xié)議類(lèi)型,調(diào)用相應(yīng)協(xié)議類(lèi)型的適配器130的接口,進(jìn)而利用相應(yīng)協(xié)議類(lèi)型的適配器130對(duì)相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作。
在本發(fā)明的可選實(shí)施例中,在適配器130對(duì)相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作時(shí),能夠?qū)?lái)自應(yīng)用接口組件110的控制指令轉(zhuǎn)換成相應(yīng)協(xié)議類(lèi)型的目標(biāo)指令,進(jìn)而將目標(biāo)指令發(fā)送給相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊,從而相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊在接收到目標(biāo)指令后能夠識(shí)別該目標(biāo)指令,進(jìn)而根據(jù)識(shí)別結(jié)果對(duì)智能終端進(jìn)行控制。
下面將結(jié)合UML(Unified Modeling Language,統(tǒng)一建模語(yǔ)言)結(jié)構(gòu)圖來(lái)對(duì)上述三層結(jié)構(gòu)中的各部件進(jìn)行介紹,在UML結(jié)構(gòu)圖中,以無(wú)線通信模塊為WIFI無(wú)線通信模塊和藍(lán)牙無(wú)線通信模塊為例。
(一)適配層
適配層中的至少兩類(lèi)適配器130對(duì)應(yīng)有統(tǒng)一接口,該統(tǒng)一接口中定義有對(duì)無(wú)線通信模塊進(jìn)行控制操作的方法,各類(lèi)適配器130實(shí)現(xiàn)該統(tǒng)一接口中定義的方法來(lái)實(shí)現(xiàn)對(duì)相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作。
圖3示意了適配層的UML結(jié)構(gòu)圖,圖3中適配層主要有三個(gè)類(lèi),分別為BaseConnectionAdapter、BleConnectionAdapter、WiFiConnectionAdapter,其中,BaseConnectionAdapter是統(tǒng)一接口,該統(tǒng)一接口中定義有對(duì)無(wú)線通信模塊進(jìn)行控制操作的方法,如connect()是連接無(wú)線通信模塊、disconnect()是斷開(kāi)無(wú)線通信模塊、release()是釋放資源、write(byte[]data)是往無(wú)線通信模塊寫(xiě)數(shù)據(jù)(即,操作無(wú)線通信模塊,進(jìn)而操作智能設(shè)備)、callback(byte[]data)將從無(wú)線通信模塊讀取的消息拋給上層,isconnect()判斷無(wú)線通信模塊是否連接,等等,本發(fā)明不限于此。
BleConnectionAdapter和WiFiConnectionAdapter分別實(shí)現(xiàn)了上述統(tǒng)一接口,即實(shí)現(xiàn)了該統(tǒng)一接口定義的對(duì)無(wú)線通信模塊進(jìn)行控制操作的方法。
(二)設(shè)備層
設(shè)備層中的設(shè)備組件120定義有第一基類(lèi)以及繼承自第一基類(lèi)的至少兩個(gè)第二基類(lèi),各個(gè)第二基類(lèi)對(duì)應(yīng)不同的協(xié)議類(lèi)型,通過(guò)繼承至少兩個(gè)第二基類(lèi)將不同協(xié)議類(lèi)型的無(wú)線通信模塊抽象成獨(dú)立的類(lèi)。此外,若第一基類(lèi)中定義有抽象方法,則至少兩個(gè)第二基類(lèi)在繼承第一基類(lèi)時(shí)實(shí)現(xiàn)定義的抽象方法。
圖4示意了設(shè)備層的UML結(jié)構(gòu)圖,在圖4中,類(lèi)BaseSmartDevice為第一基類(lèi),它是抽象類(lèi),是無(wú)線通信模塊的最頂層的基類(lèi),此類(lèi)包括了無(wú)線通信模塊的基本信息和BaseConnectionAdapter接口,即,適配層中適配器的統(tǒng)一接口。
在圖4中,類(lèi)BaseBleSmartDevice是繼承自BaseSmartDevice的藍(lán)牙無(wú)線通信模塊的基類(lèi),它實(shí)現(xiàn)了父類(lèi)(即類(lèi)BaseSmartDevice)中定義的抽象方法。類(lèi)BaseWifiSmartDevice是繼承自BaseSmartDevice的WIFI無(wú)線通信模塊的基類(lèi),它實(shí)現(xiàn)了父類(lèi)(即類(lèi)BaseSmartDevice)中定義的抽象方法。
進(jìn)一步地,所有不同協(xié)議類(lèi)型的無(wú)線通信模塊直接繼承類(lèi)BaseBleSmartDevice和類(lèi)BaseWiFiSmartDevice,從而將不同協(xié)議類(lèi)型的無(wú)線通信模塊抽象成獨(dú)立的類(lèi)。如圖4所示,類(lèi)BleMusicWakeUpBedLamp和類(lèi)BlePM25Light繼承自類(lèi)BaseBleSmartDevice;類(lèi)WifiMusicWakeUpBedLamp和類(lèi)WifiPM25Light繼承自類(lèi)BaseWiFiSmartDevice。另外,設(shè)備組件120中的各個(gè)類(lèi)實(shí)現(xiàn)應(yīng)用接口組件110中封裝的統(tǒng)一的接口。
設(shè)備層中的設(shè)備組件120提供一個(gè)重要的方法analyze(),它是用來(lái)解析BaseConnectionAdapter中callback(byte[]data)中的數(shù)據(jù),即,從無(wú)線通信模塊讀取的消息,設(shè)備組件120解析該消息,得到該消息中包含的無(wú)線通信模塊的參數(shù)數(shù)據(jù),將參數(shù)數(shù)據(jù)更新到各個(gè)類(lèi)中。
(三)接口層
接口層的UML結(jié)構(gòu)圖如圖5所示,圖5中示意了封裝的兩個(gè)統(tǒng)一接口,分別是IPM25Light和IMusicWakeUpBedLamp,以及實(shí)現(xiàn)設(shè)備發(fā)現(xiàn)的功能的IFindDevice接口。
上文提到,應(yīng)用接口組件110封裝的統(tǒng)一的接口可以包括多個(gè),各個(gè)接口可以對(duì)應(yīng)不同協(xié)議類(lèi)型的無(wú)線通信模塊的一個(gè)或多個(gè)控制操作。在圖5示意的接口IPM25Light和IMusicWakeUpBedLamp中,它們各自定義了若干方法,這些方法可以用來(lái)實(shí)現(xiàn)相應(yīng)的控制操作。例如,在接口IPM25Light中,其定義了open()、close()方法來(lái)分別實(shí)現(xiàn)開(kāi)啟、關(guān)閉操作。需要說(shuō)明的是,圖5示意的接口和各接口中定義的方法僅是示意性的,并不對(duì)本發(fā)明進(jìn)行限制。
進(jìn)一步地,為了滿足對(duì)不同類(lèi)型的智能設(shè)備的控制需求,應(yīng)用接口組件110還可以針對(duì)不同類(lèi)型的智能設(shè)備提供不同類(lèi)型的控制操作的接口,各接口可以定義不同類(lèi)型的控制操作的方法。例如,對(duì)于智能照明設(shè)備,一般接口包含的方法有連接、斷開(kāi)、開(kāi)關(guān)、調(diào)光、調(diào)色、調(diào)亮度、狀態(tài)查詢、定時(shí)器設(shè)置、參數(shù)設(shè)置、OTA升級(jí)、資源釋放等,本發(fā)明不限于此。
接口層的一個(gè)非常重要的功能是實(shí)現(xiàn)設(shè)備發(fā)現(xiàn),應(yīng)用接口組件110提供了實(shí)現(xiàn)設(shè)備發(fā)現(xiàn)的功能的IFindDevice接口,如圖5所示,該接口定義有第一方法scandevice()方法和第二方法createdevice(byte[]data)方法,第一方法用于搜索不同協(xié)議類(lèi)型的無(wú)線通信模塊,第二方法用于通過(guò)無(wú)線通信模塊回復(fù)的消息來(lái)創(chuàng)建相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊的標(biāo)識(shí)。這里,無(wú)線通信模塊回復(fù)的消息中攜帶有無(wú)線通信模塊的相關(guān)信息(如型號(hào)或編號(hào)、通信協(xié)議類(lèi)型、IP地址等),從而可以根據(jù)消息中攜帶的無(wú)線通信模塊的相關(guān)信息來(lái)創(chuàng)建相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊的標(biāo)識(shí)。在圖5中,具體通過(guò)FindDeviceManager類(lèi)來(lái)實(shí)現(xiàn)IFindDevice接口中定義的方法。
進(jìn)一步地,設(shè)備組件120中的各個(gè)類(lèi)實(shí)現(xiàn)應(yīng)用接口組件110中封裝的統(tǒng)一的接口,在圖5中,類(lèi)WifiPM25Light和類(lèi)BlePM25Light實(shí)現(xiàn)了接口IPM25Light;類(lèi)WifiMusicWakeUpBedLamp和類(lèi)BleMusicWakeUpBedLamp實(shí)現(xiàn)了接口IMusicWakeUpBedLamp。
本發(fā)明實(shí)施例提供的軟件開(kāi)發(fā)包(SDK)可以是基于不同的操作系統(tǒng)來(lái)編寫(xiě),例如基于Linux/Unix、Android(安卓)、IOS或塞班等操作系統(tǒng),本發(fā)明不限于此。這樣,基于不同的操作系統(tǒng)編寫(xiě)的SDK,可以利用SDK在相應(yīng)的操作系統(tǒng)上開(kāi)發(fā)智能控制模塊,從而利用智能控制模塊來(lái)遠(yuǎn)程控制無(wú)線通信模塊,進(jìn)而來(lái)控制智能設(shè)備。
以智能控制模塊為APP為例,基于不同的操作系統(tǒng)編寫(xiě)的SDK,可以利用SDK在相應(yīng)的操作系統(tǒng)上開(kāi)發(fā)APP,從而用戶可以通過(guò)操控APP來(lái)遠(yuǎn)程控制無(wú)線通信模塊,進(jìn)而來(lái)控制智能設(shè)備。具體地,當(dāng)用戶操控APP時(shí),APP調(diào)用軟件開(kāi)發(fā)包100提供的統(tǒng)一的接口來(lái)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊,從而實(shí)現(xiàn)對(duì)智能設(shè)備的控制。
基于上文各個(gè)實(shí)施例提供的實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的軟件開(kāi)發(fā)包,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的方法。
圖6示出了根據(jù)本發(fā)明一實(shí)施例的實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的方法的流程圖。如圖6所示,該方法至少可以包括以下步驟S602至步驟S606。
步驟S602,將對(duì)不同協(xié)議類(lèi)型的無(wú)線通信模塊的控制操作封裝成統(tǒng)一的接口,以供外部統(tǒng)一調(diào)用。
步驟S604,將不同協(xié)議類(lèi)型的無(wú)線通信模塊抽象成獨(dú)立的類(lèi),每個(gè)類(lèi)預(yù)留對(duì)應(yīng)的協(xié)議類(lèi)型的適配器的接口。
步驟S606,調(diào)用相應(yīng)協(xié)議類(lèi)型的適配器的接口,利用相應(yīng)協(xié)議類(lèi)型的適配器對(duì)相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作。
在本發(fā)明實(shí)施例中,將不同協(xié)議類(lèi)型的無(wú)線通信模塊抽象成獨(dú)立的類(lèi),每個(gè)類(lèi)預(yù)留對(duì)應(yīng)的協(xié)議類(lèi)型的適配器的接口,通過(guò)預(yù)留的適配器的接口調(diào)用各類(lèi)適配器對(duì)相應(yīng)的協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作,并將對(duì)不同協(xié)議類(lèi)型的無(wú)線通信模塊的控制操作封裝成統(tǒng)一的接口,提供給外部(如APP)統(tǒng)一調(diào)用,讓外部能夠無(wú)差別地調(diào)用不同協(xié)議類(lèi)型的無(wú)線通信模塊,無(wú)需感知底層調(diào)用細(xì)節(jié),從而降低外部的復(fù)雜性和提高外部程序的可維護(hù)性。
本發(fā)明實(shí)施例提供的實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的方法可以應(yīng)用在智能控制終端或系統(tǒng)上的智能控制模塊中,以智能控制終端為智能手機(jī)為例,則該方法可以應(yīng)用在智能手機(jī)上的APP。
無(wú)線通信模塊可以位于不同類(lèi)型的智能設(shè)備中,如智能照明設(shè)備、智能攝像機(jī)、智能空氣凈化器等,為了滿足對(duì)不同類(lèi)型的智能設(shè)備的控制需求,在本發(fā)明的可選實(shí)施例中,可以針對(duì)不同類(lèi)型的智能設(shè)備提供不同類(lèi)型的控制操作的接口。舉例來(lái)說(shuō),當(dāng)智能設(shè)備為智能照明設(shè)備時(shí),提供的控制操作的接口可以如連接、斷開(kāi)接口,回調(diào)接口,狀態(tài)查詢接口,設(shè)置、控制(如定時(shí)器設(shè)置、參數(shù)設(shè)置、開(kāi)關(guān)、調(diào)光、調(diào)色、調(diào)亮度等)接口,OTA(Over-the-Air,空中下載)升級(jí)接口,等等,本發(fā)明不限于此。當(dāng)智能設(shè)備為智能攝像機(jī)時(shí),提供的控制操作的接口可以如連接、斷開(kāi)接口,回調(diào)接口,狀態(tài)查詢接口,設(shè)置、控制(如攝像機(jī)名稱、相關(guān)參數(shù)設(shè)置、開(kāi)關(guān)、調(diào)節(jié)聲音、調(diào)節(jié)攝像畫(huà)面等)接口、OTA升級(jí)接口,等等,本發(fā)明不限于此。需要說(shuō)明的是,此處舉例僅是示意性的,并不對(duì)本發(fā)明進(jìn)行限制。
在對(duì)無(wú)線通信模塊進(jìn)行遠(yuǎn)程控制之前,首先需要與無(wú)線通信模塊建立連接,即需要發(fā)現(xiàn)設(shè)備,在本發(fā)明實(shí)施例中,可以搜索不同協(xié)議類(lèi)型的無(wú)線通信模塊,并通過(guò)無(wú)線通信模塊回復(fù)的消息來(lái)創(chuàng)建相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊的標(biāo)識(shí)。具體地,在搜索不同協(xié)議類(lèi)型的無(wú)線通信模塊時(shí),可以生成搜索不同協(xié)議類(lèi)型的無(wú)線通信模塊的搜索請(qǐng)求,并將搜索請(qǐng)求對(duì)外廣播,在廣播之后,若接收到無(wú)線通信模塊回復(fù)的消息,則根據(jù)回復(fù)的消息來(lái)創(chuàng)建相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊的標(biāo)識(shí)。接下來(lái),可以向創(chuàng)建的標(biāo)識(shí)對(duì)應(yīng)的無(wú)線通信模塊發(fā)起建立連接的請(qǐng)求,當(dāng)接收到響應(yīng)消息時(shí)完成兩者之間的連接。
上文步驟S606中調(diào)用相應(yīng)協(xié)議類(lèi)型的適配器的接口,本發(fā)明實(shí)施例提供了一種可選的方案,在該方案中,可以由各個(gè)類(lèi)實(shí)現(xiàn)封裝的統(tǒng)一的接口,當(dāng)該接口被調(diào)用時(shí),根據(jù)創(chuàng)建的標(biāo)識(shí)對(duì)應(yīng)的協(xié)議類(lèi)型,調(diào)用相應(yīng)協(xié)議類(lèi)型的適配器的接口。
在本發(fā)明的可選實(shí)施例中,還可以從無(wú)線通信模塊讀取消息,并解析該消息,得到該消息中包含的無(wú)線通信模塊的參數(shù)數(shù)據(jù),進(jìn)而將參數(shù)數(shù)據(jù)更新到各個(gè)類(lèi)中。這里,無(wú)線通信模塊的參數(shù)數(shù)據(jù)包含有無(wú)線通信模塊所在智能設(shè)備的相關(guān)數(shù)據(jù),這樣,智能控制終端或系統(tǒng)上的智能控制模塊可以從各個(gè)類(lèi)中獲取參數(shù)數(shù)據(jù),顯示給智能控制終端或系統(tǒng)的用戶,以便用戶便捷地獲取到智能設(shè)備的狀態(tài)信息。
在本發(fā)明的可選實(shí)施例中,在適配器對(duì)相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作時(shí),能夠?qū)⒎庋b的統(tǒng)一的接口對(duì)應(yīng)的控制指令轉(zhuǎn)換成相應(yīng)協(xié)議類(lèi)型的目標(biāo)指令,進(jìn)而將目標(biāo)指令發(fā)送給相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊,從而相應(yīng)協(xié)議類(lèi)型的無(wú)線通信模塊在接收到目標(biāo)指令后能夠識(shí)別該目標(biāo)指令,進(jìn)而根據(jù)識(shí)別結(jié)果對(duì)智能終端進(jìn)行控制。
根據(jù)上述任意一個(gè)可選實(shí)施例或多個(gè)可選實(shí)施例的組合,本發(fā)明實(shí)施例能夠達(dá)到如下有益效果:
本發(fā)明實(shí)施例提供了一種軟件開(kāi)發(fā)包(SDK),其包括應(yīng)用接口組件、設(shè)備組件以及至少兩類(lèi)適配器,其中,由設(shè)備組件將不同協(xié)議類(lèi)型的無(wú)線通信模塊抽象成獨(dú)立的類(lèi),每個(gè)類(lèi)預(yù)留對(duì)應(yīng)的協(xié)議類(lèi)型的適配器的接口,通過(guò)預(yù)留的適配器的接口調(diào)用各類(lèi)適配器對(duì)相應(yīng)的協(xié)議類(lèi)型的無(wú)線通信模塊進(jìn)行控制操作,并由應(yīng)用接口組件將對(duì)不同協(xié)議類(lèi)型的無(wú)線通信模塊的控制操作封裝成統(tǒng)一的接口,提供給外部(即智能控制模塊,如APP等)統(tǒng)一調(diào)用,讓外部能夠無(wú)差別地調(diào)用不同協(xié)議類(lèi)型的無(wú)線通信模塊,無(wú)需感知底層調(diào)用細(xì)節(jié),從而降低外部的復(fù)雜性和提高外部程序的可維護(hù)性。
在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。
類(lèi)似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書(shū)由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在權(quán)利要求書(shū)中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的實(shí)現(xiàn)遠(yuǎn)程控制不同協(xié)議類(lèi)型的無(wú)線通信模塊的軟件開(kāi)發(fā)包(SDK)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
至此,本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識(shí)到,雖然本文已詳盡示出和描述了本發(fā)明的多個(gè)示例性實(shí)施例,但是,在不脫離本發(fā)明精神和范圍的情況下,仍可根據(jù)本發(fā)明公開(kāi)的內(nèi)容直接確定或推導(dǎo)出符合本發(fā)明原理的許多其他變型或修改。因此,本發(fā)明的范圍應(yīng)被理解和認(rèn)定為覆蓋了所有這些其他變型或修改。