本發(fā)明涉及終端技術(shù)領(lǐng)域,具體而言,涉及一種類串口設(shè)備的驅(qū)動模型及驅(qū)動系統(tǒng)。
背景技術(shù):
類串口設(shè)備是一類可串行讀數(shù)據(jù)和寫數(shù)據(jù)的實體設(shè)備或虛擬設(shè)備,如鍵盤或溫度傳感器等實體設(shè)備,及文件讀寫或遠(yuǎn)端文件操作等虛擬設(shè)備。應(yīng)用程序需通過類串口設(shè)備的設(shè)備驅(qū)動來調(diào)用和管理類串口設(shè)備。
當(dāng)前,相關(guān)技術(shù)中提供了一種類串口設(shè)備的驅(qū)動方法,包括:當(dāng)應(yīng)用程序需調(diào)用某類串口設(shè)備時,在應(yīng)用程序中加入該類串口設(shè)備對應(yīng)的驅(qū)動組件,應(yīng)用程序直接通過該驅(qū)動組件與該類串口設(shè)備進行通信,實現(xiàn)對該類串口設(shè)備的控制和管理。若應(yīng)用程序需調(diào)用其他類串口設(shè)備,則同樣在應(yīng)用程序中加入其他類串口設(shè)備對應(yīng)的驅(qū)動組件,以實現(xiàn)對其他類串口設(shè)備的控制和管理。
但上述相關(guān)技術(shù)中只要增加新的類串口設(shè)備,或者原有的類串口設(shè)備的協(xié)議改變,都需要對應(yīng)用程序重新進行開發(fā)和編譯,導(dǎo)致開發(fā)成本增加。且應(yīng)用程序包括的驅(qū)動組件越多,應(yīng)用程序的維護難度越大,導(dǎo)致應(yīng)用程序的兼容性和擴展性很差。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例的目的在于提供一種類串口設(shè)備的驅(qū)動模型及驅(qū)動系統(tǒng),通過基于組件的軟件分層結(jié)構(gòu)來管理類串口設(shè)備,不需要對應(yīng)用程序進行任何修改,即可實現(xiàn)應(yīng)用程序與不同類串口設(shè)備之間的通信,不會增加應(yīng)用程序的維護難度,提高了應(yīng)用程序的兼容性和擴展性。
第一方面,本發(fā)明實施例提供了一種類串口設(shè)備的驅(qū)動模型,所述驅(qū)動模型包括設(shè)備驅(qū)動層和控制翻譯層;
所述控制翻譯層為應(yīng)用程序提供統(tǒng)一控制接口,且包括一個或多個類串口設(shè)備對應(yīng)的驅(qū)動組件;
所述設(shè)備驅(qū)動層分別與所述一個或多個類串口設(shè)備及所述控制翻譯層連接,所述控制翻譯層與所述應(yīng)用程序連接。
結(jié)合第一方面,本發(fā)明實施例提供了上述第一方面的第一種可能的實現(xiàn)方式,其中,當(dāng)所述應(yīng)用程序向所述類串口設(shè)備發(fā)送設(shè)備控制信息時,
所述控制翻譯層接收所述應(yīng)用程序發(fā)送的設(shè)備控制信息,確定所述設(shè)備控制信息包括的設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件,通過確定的所述驅(qū)動組件將所述設(shè)備控制信息的格式轉(zhuǎn)換為所述設(shè)備標(biāo)識對應(yīng)的特定格式,通過所述設(shè)備驅(qū)動層傳輸所述特定格式的所述設(shè)備控制信息給所述設(shè)備標(biāo)識對應(yīng)的類串口設(shè)備。
結(jié)合第一方面的第一種可能的實現(xiàn)方式,本發(fā)明實施例提供了上述第一方面的第二種可能的實現(xiàn)方式,其中,當(dāng)所述類串口設(shè)備向所述應(yīng)用程序發(fā)送設(shè)備輸入信息時,
所述設(shè)備驅(qū)動層接收所述類串口設(shè)備發(fā)送的所述設(shè)備輸入信息,傳輸所述設(shè)備輸入信息給所述控制翻譯層;
所述控制翻譯層確定所述設(shè)備輸入信息包括的設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件,通過確定的所述驅(qū)動組件將所述設(shè)備輸入信息的格式轉(zhuǎn)換為標(biāo)準(zhǔn)格式,傳輸所述標(biāo)準(zhǔn)格式的所述設(shè)備輸入信息給所述應(yīng)用程序。
結(jié)合第一方面,本發(fā)明實施例提供了上述第一方面的第三種可能的實現(xiàn)方式,其中,所述控制翻譯層包括設(shè)備控制層、隔離層和設(shè)備訪問層;
所述隔離層為所述應(yīng)用程序提供所述統(tǒng)一控制接口;所述設(shè)備訪問層包括所述一個或多個類串口設(shè)備對應(yīng)的驅(qū)動組件;
所述設(shè)備控制層分別與所述應(yīng)用程序、所述隔離層和所述設(shè)備驅(qū)動層連接,所述隔離層與所述設(shè)備訪問層連接。
結(jié)合第一方面的第三種可能的實現(xiàn)方式,本發(fā)明實施例提供了上述第一方面的第四種可能的實現(xiàn)方式,其中,當(dāng)所述應(yīng)用程序向所述類串口設(shè)備發(fā)送設(shè)備控制信息時,
所述設(shè)備控制層接收所述應(yīng)用程序發(fā)送的所述設(shè)備控制信息,根據(jù)所述設(shè)備控制信息包括的設(shè)備標(biāo)識,通過所述統(tǒng)一控制接口,將所述設(shè)備控制信息傳輸給所述設(shè)備訪問層中所述設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件;
所述設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件將所述設(shè)備控制信息的格式轉(zhuǎn)換為所述設(shè)備標(biāo)識對應(yīng)的特定格式,將所述特定格式的所述設(shè)備控制信息通過所述統(tǒng)一控制接口傳輸給所述設(shè)備控制層;
所述設(shè)備控制層通過所述設(shè)備驅(qū)動層將所述特定格式的所述設(shè)備控制信息傳輸給所述設(shè)備標(biāo)識對應(yīng)的類串口設(shè)備。
結(jié)合第一方面的第三種可能的實現(xiàn)方式,本發(fā)明實施例提供了上述第一方面的第五種可能的實現(xiàn)方式,其中,當(dāng)所述類串口設(shè)備向所述應(yīng)用程序發(fā)送設(shè)備輸入信息時,
所述設(shè)備驅(qū)動層接收所述類串口設(shè)備發(fā)送的所述設(shè)備輸入信息,通過所述設(shè)備控制層傳輸所述設(shè)備輸入信息給所述隔離層;
所述隔離層根據(jù)所述設(shè)備輸入信息包括的設(shè)備標(biāo)識,通過所述統(tǒng)一控制接口,將所述設(shè)備輸入信息傳輸給所述設(shè)備訪問層中所述設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件;
所述設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件將所述設(shè)備輸入信息的格式轉(zhuǎn)換為標(biāo)準(zhǔn)格式,將所述標(biāo)準(zhǔn)格式的所述設(shè)備輸入信息通過所述隔離層及所述設(shè)備控制層傳輸給所述應(yīng)用程序。
結(jié)合第一方面及第一方面的第一至第五種可能的實現(xiàn)方式,本發(fā)明實施例提供了上述第一方面的第六種可能的實現(xiàn)方式,其中,
所述設(shè)備驅(qū)動層支持的設(shè)備驅(qū)動應(yīng)用程序編程接口API包括串口API、網(wǎng)絡(luò)通信API和虛擬設(shè)備API。
結(jié)合第一方面及第一方面的第一至第五種可能的實現(xiàn)方式,本發(fā)明實施例提供了上述第一方面的第七種可能的實現(xiàn)方式,其中,
所述統(tǒng)一控制接口包括創(chuàng)建接口、刪除接口、用于向設(shè)備寫信息的接口和用于從設(shè)備讀取信息的接口。
結(jié)合第一方面的第六種可能的實現(xiàn)方式,本發(fā)明實施例提供了上述第一方面的第八種可能的實現(xiàn)方式,其中,
當(dāng)接入一個新的類串口設(shè)備時,通過所述設(shè)備驅(qū)動層中所述新的類串口設(shè)備需使用的設(shè)備驅(qū)動API連接所述新的類串口設(shè)備;
所述設(shè)備控制層通過所述設(shè)備驅(qū)動層獲取所述新的類串口設(shè)備的設(shè)備標(biāo)識和設(shè)備協(xié)議;根據(jù)所述設(shè)備標(biāo)識和所述設(shè)備協(xié)議,通過驅(qū)動組件接口函數(shù)在所述設(shè)備訪問層中添加所述設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件。
第二方面,本發(fā)明實施例提供了一種類串口設(shè)備的驅(qū)動系統(tǒng),所述驅(qū)動系統(tǒng)包括:應(yīng)用層、設(shè)備層及上述第一方面所述的驅(qū)動模型;
所述應(yīng)用層包括一個或多個應(yīng)用程序,所述設(shè)備層包括一個或多個類串口設(shè)備;
所述應(yīng)用層中的應(yīng)用程序通過所述驅(qū)動模型與所述設(shè)備層中的類串口設(shè)備進行通信。
在本發(fā)明實施例提供的驅(qū)動模型及驅(qū)動系統(tǒng)中,該驅(qū)動模型包括設(shè)備驅(qū)動層和控制翻譯層;控制翻譯層為應(yīng)用程序提供統(tǒng)一控制接口,且包括一個或多個類串口設(shè)備對應(yīng)的驅(qū)動組件;設(shè)備驅(qū)動層分別與一個或多個類串口設(shè)備及控制翻譯層連接,控制翻譯層與應(yīng)用程序連接。本發(fā)明提供的驅(qū)動模型通過統(tǒng)一控制接口來隔離不同類串口設(shè)備的特殊性,使得應(yīng)用程序能夠通過統(tǒng)一控制接口實現(xiàn)對不同類串口設(shè)備的控制管理。驅(qū)動模型中包括類串口設(shè)備對應(yīng)的驅(qū)動組件,通過基于組件的軟件分層結(jié)構(gòu),不需要對應(yīng)用程序進行任何修改,即可實現(xiàn)應(yīng)用程序與不同類串口設(shè)備之間的通信,不會增加應(yīng)用程序的維護難度,提高了應(yīng)用程序的兼容性和擴展性。
為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細(xì)說明如下。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實施例,因此不應(yīng)被看作是對范圍的限定,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1示出了本發(fā)明實施例1所提供的一種類串口設(shè)備的驅(qū)動模型的示意圖;
圖2示出了本發(fā)明實施例1所提供的另一種類串口設(shè)備的驅(qū)動模型的示意圖;
圖3示出了本發(fā)明實施例1所提供的一種類串口設(shè)備控制流程圖;
圖4示出了本發(fā)明實施例1所提供的另一種類串口設(shè)備控制流程圖;
圖5示出了本發(fā)明實施例2所提供的一種類串口設(shè)備的驅(qū)動系統(tǒng)的示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發(fā)明實施例的組件可以以各種不同的配置來布置和設(shè)計。因此,以下對在附圖中提供的本發(fā)明的實施例的詳細(xì)描述并非旨在限制要求保護的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實施例?;诒景l(fā)明的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
考慮到相關(guān)技術(shù)中只要增加新的類串口設(shè)備,或者原有的類串口設(shè)備的協(xié)議改變,都需要對應(yīng)用程序重新進行開發(fā)和編譯,導(dǎo)致開發(fā)成本增加。且應(yīng)用程序包括的驅(qū)動組件越多,應(yīng)用程序的維護難度越大,導(dǎo)致應(yīng)用程序的兼容性和擴展性很差。基于此,本發(fā)明實施例提供了一種類串口設(shè)備的驅(qū)動模型及驅(qū)動系統(tǒng),下面通過實施例進行描述。
實施例1
參見圖1,本發(fā)明實施例提供了一種類串口設(shè)備的驅(qū)動模型,該驅(qū)動模型包括設(shè)備驅(qū)動層1和控制翻譯層2;
控制翻譯層2為應(yīng)用程序提供統(tǒng)一控制接口,且包括一個或多個類串口設(shè)備對應(yīng)的驅(qū)動組件;
設(shè)備驅(qū)動層1分別與一個或多個類串口設(shè)備及控制翻譯層2連接,控制翻譯層2與應(yīng)用程序連接。
上述設(shè)備驅(qū)動層1是驅(qū)動模型的最底層,支持各種設(shè)備驅(qū)動API(Application Programming Interface,應(yīng)用程序編程接口),包括串口API、網(wǎng)絡(luò)通信API和虛擬設(shè)備API。另外,除串口API、網(wǎng)絡(luò)通信API和虛擬設(shè)備API以外,還可以通過定義實現(xiàn)其他通信協(xié)議對應(yīng)的驅(qū)動API。設(shè)備驅(qū)動層1與類串口設(shè)備及控制翻譯層2連接,負(fù)責(zé)將控制翻譯層2傳輸?shù)脑O(shè)備控制信息傳送到類串口設(shè)備,或者負(fù)責(zé)從類串口設(shè)備讀取設(shè)備輸入信息發(fā)送給控制翻譯層2,對控制翻譯層2的驅(qū)動開發(fā)提供可移植的基本支撐,設(shè)備驅(qū)動層1可以根據(jù)實現(xiàn)需求開發(fā)新的驅(qū)動API,具有很好的擴容性。
其中,在實現(xiàn)其他通信協(xié)議對應(yīng)的驅(qū)動API時需在類串口設(shè)備對應(yīng)的驅(qū)動組件中設(shè)置該驅(qū)動API對應(yīng)的接口類型。
設(shè)備驅(qū)動層1所支持的上述每種設(shè)備驅(qū)動API都提供一套編程接口,控制翻譯層2就是通過這些編程接口與類串口設(shè)備進行通信。本發(fā)明實施例以串口API為例進行說明,串口API提供一套一致的串口編程接口,這些串口編程接口主要用于開發(fā)掛接在串口上的類串口設(shè)備的設(shè)備驅(qū)動。具體地,串口API包括以下接口:用于獲得串口對象的接口、用于釋放串口對象的接口、用于向串口寫信息的接口以及用于設(shè)置當(dāng)串口數(shù)據(jù)到達時進行回調(diào)的接口??刂品g層2可以在任意線程上下文發(fā)起串口API函數(shù)調(diào)用這些接口,通過這些接口與類串口設(shè)備進行通信。
在本發(fā)明實施例中,驅(qū)動模型不僅適用于對串口設(shè)備進行管理,還同樣適用于網(wǎng)絡(luò)串口設(shè)備以及虛擬設(shè)備的管理,具有很好的擴展性。對于網(wǎng)絡(luò)串口設(shè)備,設(shè)備驅(qū)動層1中加載網(wǎng)絡(luò)通信API,控制翻譯層2中的驅(qū)動組件中設(shè)備驅(qū)動API的類型指定為網(wǎng)絡(luò)API即可。應(yīng)用程序向網(wǎng)絡(luò)串口設(shè)備發(fā)送信息時,控制翻譯層2會調(diào)用網(wǎng)絡(luò)通信API和網(wǎng)絡(luò)串口設(shè)備通信。對于像文件讀寫這種虛擬設(shè)備,將驅(qū)動組件中設(shè)備驅(qū)動API類型定義為虛擬設(shè)備,具體功能的實現(xiàn)需要在驅(qū)動組件中完成。對于其他通信協(xié)議通過定義實現(xiàn)對應(yīng)的驅(qū)動API,在對應(yīng)的驅(qū)動組件中制定驅(qū)動API類型即可完成。
上述控制翻譯層2為應(yīng)用程序提供統(tǒng)一控制接口,統(tǒng)一控制接口包括創(chuàng)建接口、刪除接口、用于向設(shè)備寫信息的接口和用于從設(shè)備讀取信息的接口。另外,統(tǒng)一控制接口還包括用于獲取設(shè)備信息的接口和用于控制類串口設(shè)備的設(shè)備控制接口??刂品g層2負(fù)責(zé)類串口設(shè)備的創(chuàng)建、刪除、信息的分發(fā)和獲取,以及解釋處理設(shè)備協(xié)議。統(tǒng)一控制接口在類串口設(shè)備和應(yīng)用程序之間起到隔離的作用,為應(yīng)用程序隔離了各個類串口設(shè)備的特殊性,使得應(yīng)用程序能夠通過統(tǒng)一控制接口對多個類串口設(shè)備進行統(tǒng)一管理和控制。
控制翻譯層2中包括一個或多個類串口設(shè)備對應(yīng)的驅(qū)動組件。當(dāng)控制翻譯層2中的一個類串口設(shè)備對應(yīng)的驅(qū)動組件接收到應(yīng)用程序發(fā)送的設(shè)備控制信息時,該設(shè)備控制信息的格式為應(yīng)用程序默認(rèn)的標(biāo)準(zhǔn)格式,該驅(qū)動組件將該設(shè)備控制信息的格式轉(zhuǎn)換為該類串口設(shè)備對應(yīng)的特定格式,即將該設(shè)備控制信息翻譯為該類串口設(shè)備能夠識別的信息。當(dāng)控制翻譯層2接收到設(shè)備驅(qū)動層1傳輸?shù)膩碜灶惔谠O(shè)備的設(shè)備輸入信息時,將該設(shè)備輸入信息分配給該類串口設(shè)備對應(yīng)的驅(qū)動組件,該驅(qū)動組件將該設(shè)備輸入信息的格式轉(zhuǎn)換為標(biāo)準(zhǔn)格式,即將該設(shè)備輸入信息翻譯為應(yīng)用程序能夠識別的信息。
例如,假設(shè)應(yīng)用程序需要控制管理的類串口設(shè)備包括報警盒和鍵盤,則控制翻譯層2中包括報警盒驅(qū)動組件及鍵盤驅(qū)動組件。當(dāng)應(yīng)用程序發(fā)送設(shè)備控制信息給鍵盤時,控制翻譯層2接收應(yīng)用程序發(fā)送的設(shè)備控制信息,通過鍵盤驅(qū)動組件將該設(shè)備控制信息翻譯為鍵盤能夠識別的特定格式的設(shè)備控制信息,將翻譯操作后的設(shè)備控制信息通過設(shè)備驅(qū)動層1發(fā)送給鍵盤。當(dāng)鍵盤發(fā)送設(shè)備輸入信息給應(yīng)用程序時,設(shè)備驅(qū)動層1接收鍵盤發(fā)送的設(shè)備輸入信息,并轉(zhuǎn)發(fā)給控制翻譯層2,控制翻譯層2通過鍵盤驅(qū)動組件將設(shè)備輸入信息翻譯為標(biāo)準(zhǔn)格式的設(shè)備輸入信息,然后將標(biāo)準(zhǔn)格式的設(shè)備輸入信息發(fā)送給應(yīng)用程序。
在本發(fā)明實施例中,統(tǒng)一控制接口通過類串口設(shè)備的設(shè)備標(biāo)識來查找類串口設(shè)備對應(yīng)的驅(qū)動組件。設(shè)備標(biāo)識可以為能夠唯一標(biāo)識類串口設(shè)備的設(shè)備型號或設(shè)備序列號等。本發(fā)明實施例中,將設(shè)備型號作為設(shè)備標(biāo)識,類串口設(shè)備的設(shè)備型號是一個32位的值,設(shè)備型號的高8位表示類串口設(shè)備的驅(qū)動類型,低24位是由16位廠家編號和8位產(chǎn)品編號組成。
控制翻譯層2加載設(shè)備驅(qū)動后,可以在任意線程上下文發(fā)起統(tǒng)一控制接口函數(shù)。其中,統(tǒng)一控制接口的接口定義如下所示:
(1)獲取設(shè)備信息
處理:返回設(shè)備信息DRIVER_INFO。
設(shè)備信息DRIVER_INFO的結(jié)構(gòu):
(2)創(chuàng)建設(shè)備
創(chuàng)建接口的接口函數(shù)為fcreate(),函數(shù)fcreate()的輸入?yún)?shù)為類串口設(shè)備接入設(shè)備驅(qū)動層1所使用的串口號和類串口設(shè)備的地址碼。函數(shù)fcreate()用于創(chuàng)建類串口設(shè)備對應(yīng)的驅(qū)動對象,并返回對象句柄。
(3)刪除設(shè)備
刪除接口的接口函數(shù)為fdelete(),函數(shù)fdelete()的輸入?yún)?shù)為需刪除的類串口設(shè)備的對象句柄。函數(shù)fdelete()用于刪除類串口設(shè)備對應(yīng)的驅(qū)動對象。
(4)向設(shè)備寫
用于向設(shè)備寫信息的接口對應(yīng)的接口函數(shù)為fwrite(),函數(shù)fwrite()的輸入?yún)?shù)為類串口設(shè)備的對象句柄、需寫入的數(shù)據(jù)及該數(shù)據(jù)的數(shù)據(jù)長度。函數(shù)fwrite()用于調(diào)用類串口設(shè)備對應(yīng)的用于向設(shè)備寫信息的接口,向類串口設(shè)備中寫入信息。
(5)設(shè)置設(shè)備讀取回掉函數(shù)
用于從設(shè)備讀取信息的接口對應(yīng)的接口函數(shù)為fsetcallback(),函數(shù)fsetcallback()的輸入?yún)?shù)為類串口設(shè)備的對象句柄及回掉函數(shù)。函數(shù)fsetcallback()用于調(diào)用類串口設(shè)備對應(yīng)的用于從設(shè)備讀取信息的接口,從類串口設(shè)備中讀取信息。
(6)設(shè)備控制
用于控制類串口設(shè)備的設(shè)備控制接口對應(yīng)的接口函數(shù)為fcontrol(),函數(shù)fcontrol()的輸入?yún)?shù)為類串口設(shè)備的對象句柄、控制命令、控制參數(shù)及數(shù)據(jù)長度。函數(shù)fcontrol()用于調(diào)用類串口設(shè)備對應(yīng)的設(shè)備控制接口,控制該類串口設(shè)備。
在本發(fā)明實施例中,控制翻譯層2根據(jù)類串口設(shè)備的設(shè)備標(biāo)識,通過統(tǒng)一控制接口中的用于獲取設(shè)備信息的接口來查找該類串口設(shè)備對應(yīng)的驅(qū)動組件。以及通過該類串口設(shè)備提供的設(shè)備驅(qū)動協(xié)議,實現(xiàn)該類串口設(shè)備對應(yīng)的驅(qū)動組件的驅(qū)動動作。本發(fā)明實施例在實現(xiàn)該類串口設(shè)備對應(yīng)的驅(qū)動組件時,能夠在Windows(窗口)系統(tǒng)和Linux系統(tǒng)等不同操作系統(tǒng)之間實現(xiàn)源代碼可移植。
由于類串口設(shè)備對應(yīng)的驅(qū)動組件的接口由統(tǒng)一控制接口調(diào)用,所以驅(qū)動組件的接口與統(tǒng)一控制接口的定義一致,也提供了上述統(tǒng)一控制接口中的創(chuàng)建接口、刪除接口、用于向設(shè)備寫信息的接口、設(shè)備控制接口及用于從設(shè)備讀取信息的接口等。
在本發(fā)明實施例中,當(dāng)接入一個新的類串口設(shè)備時,通過設(shè)備驅(qū)動層1中新的類串口設(shè)備需使用的設(shè)備驅(qū)動API連接新的類串口設(shè)備;控制翻譯層2通過設(shè)備驅(qū)動層1獲取新的類串口設(shè)備的設(shè)備標(biāo)識和設(shè)備協(xié)議;根據(jù)設(shè)備標(biāo)識和設(shè)備協(xié)議,通過驅(qū)動組件接口函數(shù)添加設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件。
即在接入一個新的類串口設(shè)備時,需確定該新的類串口設(shè)備對應(yīng)的設(shè)備標(biāo)識,確定需使用的設(shè)備驅(qū)動API,即確定使用串口API、網(wǎng)絡(luò)通信API還是虛擬設(shè)備API等。確定需使用的設(shè)備驅(qū)動API后,將該新的類串口設(shè)備連接到設(shè)備驅(qū)動層1,控制翻譯層2通過統(tǒng)一控制接口中的用于獲取設(shè)備信息的接口來獲取該新的類串口設(shè)備的設(shè)備標(biāo)識和設(shè)備協(xié)議,然后通過統(tǒng)一控制接口中的創(chuàng)建接口調(diào)用驅(qū)動組件接口函數(shù),添加并實現(xiàn)該新的類串口設(shè)備對應(yīng)的驅(qū)動組件。在控制翻譯層2添加該新的類串口設(shè)備對應(yīng)的驅(qū)動組件后,編譯生成該新的類串口設(shè)備對應(yīng)的獨立的動態(tài)庫,將該獨立的動態(tài)庫配置到應(yīng)用程序的驅(qū)動目錄下,如此應(yīng)用程序不用作任何處理,即可實現(xiàn)通過驅(qū)動模型來控制和管理該新的類串口設(shè)備,實現(xiàn)過程非常簡單,且便于系統(tǒng)的擴展和維護。
當(dāng)在終端中加載了本發(fā)明實施例提供的驅(qū)動模型后,終端上的應(yīng)用程序都可以通過該驅(qū)動模型與類串口設(shè)備進行通信。
當(dāng)應(yīng)用程序向類串口設(shè)備發(fā)送設(shè)備控制信息時,控制翻譯層2接收應(yīng)用程序發(fā)送的設(shè)備控制信息,確定設(shè)備控制信息包括的設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件,通過確定的驅(qū)動組件將設(shè)備控制信息的格式轉(zhuǎn)換為設(shè)備標(biāo)識對應(yīng)的特定格式,通過設(shè)備驅(qū)動層1傳輸特定格式的設(shè)備控制信息給設(shè)備標(biāo)識對應(yīng)的類串口設(shè)備。
當(dāng)類串口設(shè)備向應(yīng)用程序發(fā)送設(shè)備輸入信息時,設(shè)備驅(qū)動層1接收類串口設(shè)備發(fā)送的設(shè)備輸入信息,傳輸設(shè)備輸入信息給控制翻譯層2;控制翻譯層2確定設(shè)備輸入信息包括的設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件,通過確定的驅(qū)動組件將設(shè)備輸入信息的格式轉(zhuǎn)換為標(biāo)準(zhǔn)格式,傳輸標(biāo)準(zhǔn)格式的設(shè)備輸入信息給應(yīng)用程序。
如圖2所示,本發(fā)明實施例中,控制翻譯層2包括設(shè)備控制層21、隔離層22和設(shè)備訪問層23;
隔離層22為應(yīng)用程序提供統(tǒng)一控制接口;設(shè)備訪問層23包括一個或多個類串口設(shè)備對應(yīng)的驅(qū)動組件;
設(shè)備控制層21分別與應(yīng)用程序、隔離層22和設(shè)備驅(qū)動層1連接,隔離層22與設(shè)備訪問層23連接。
其中,設(shè)備控制層21負(fù)責(zé)將來自應(yīng)用程序的設(shè)備控制信息通過隔離層22傳輸給設(shè)備訪問層23中特定的驅(qū)動組件,或者將來自類串口設(shè)備的信息分發(fā)到一個或多個應(yīng)用程序,另外還解釋處理相應(yīng)的協(xié)議。
如圖2所示,隔離層22為應(yīng)用程序提供統(tǒng)一控制接口,統(tǒng)一控制接口包括用于創(chuàng)建設(shè)備的創(chuàng)建接口、用于刪除設(shè)備的刪除接口、設(shè)備控制接口、用于向設(shè)備寫信息的接口、用于從設(shè)備讀取信息的接口以及用于獲取設(shè)備信息的接口,隔離層22主要負(fù)責(zé)類串口設(shè)備的創(chuàng)建、刪除、信息的分發(fā)和獲取,以及為上層提供統(tǒng)一的編程接口,方便設(shè)備控制層21的統(tǒng)一使用。
當(dāng)接入一個新的類串口設(shè)備時,通過設(shè)備驅(qū)動層1中新的類串口設(shè)備需使用的設(shè)備驅(qū)動API連接新的類串口設(shè)備;設(shè)備控制層21通過設(shè)備驅(qū)動層1獲取新的類串口設(shè)備的設(shè)備標(biāo)識和設(shè)備協(xié)議;根據(jù)設(shè)備標(biāo)識和設(shè)備協(xié)議,通過驅(qū)動組件接口函數(shù)在設(shè)備訪問層23中添加設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件。
當(dāng)在終端中加載驅(qū)動模型后,終端上的應(yīng)用程序都可以通過該驅(qū)動模型與類串口設(shè)備進行通信。如圖3所示的類串口設(shè)備的控制流程,圖3中箭頭上的數(shù)字表示信息的傳輸順序。當(dāng)應(yīng)用程序向類串口設(shè)備發(fā)送設(shè)備控制信息時,設(shè)備控制層21接收應(yīng)用程序發(fā)送的設(shè)備控制信息,根據(jù)設(shè)備控制信息包括的設(shè)備標(biāo)識,通過統(tǒng)一控制接口,將設(shè)備控制信息傳輸給設(shè)備訪問層23中設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件;設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件將設(shè)備控制信息的格式轉(zhuǎn)換為設(shè)備標(biāo)識對應(yīng)的特定格式,將特定格式的設(shè)備控制信息通過統(tǒng)一控制接口傳輸給設(shè)備控制層21;設(shè)備控制層21通過設(shè)備驅(qū)動層1將特定格式的設(shè)備控制信息傳輸給設(shè)備標(biāo)識對應(yīng)的類串口設(shè)備。
如圖4所示的類串口設(shè)備的控制流程,圖4中箭頭上的數(shù)字表示信息的傳輸順序。當(dāng)類串口設(shè)備向應(yīng)用程序發(fā)送設(shè)備輸入信息時,設(shè)備驅(qū)動層1接收類串口設(shè)備發(fā)送的設(shè)備輸入信息,通過設(shè)備控制層21傳輸設(shè)備輸入信息給隔離層22;隔離層22根據(jù)設(shè)備輸入信息包括的設(shè)備標(biāo)識,通過統(tǒng)一控制接口,將設(shè)備輸入信息傳輸給設(shè)備訪問層23中設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件;設(shè)備標(biāo)識對應(yīng)的驅(qū)動組件將設(shè)備輸入信息的格式轉(zhuǎn)換為標(biāo)準(zhǔn)格式,將標(biāo)準(zhǔn)格式的設(shè)備輸入信息通過隔離層22及設(shè)備控制層21傳輸給應(yīng)用程序。
本發(fā)明實施例提供的驅(qū)動模型,對類串口設(shè)備管理時使用基于組件的軟件分層結(jié)構(gòu),便于系統(tǒng)的功能擴展。利用統(tǒng)一控制接口隔離不同類串口設(shè)備的特殊性,便于上層應(yīng)用程序?qū)Σ煌惔谠O(shè)備的控制和管理。且不僅支持實體的類串口設(shè)備,也能夠?qū)崿F(xiàn)應(yīng)用程序?qū)ξ募x寫及遠(yuǎn)端文件操作等虛擬設(shè)備的控制和管理。該驅(qū)動模型適用于不同的系統(tǒng)平臺,如Windows系統(tǒng)和Linux系統(tǒng),系統(tǒng)兼容性好。采用基于組件的分層結(jié)構(gòu),增強了上層應(yīng)用程序的代碼擴展性,在新的驅(qū)動組件接入時,不需要修改上層應(yīng)用程序。
在本發(fā)明實施例中,驅(qū)動模型包括設(shè)備驅(qū)動層和控制翻譯層;控制翻譯層為應(yīng)用程序提供統(tǒng)一控制接口,且包括一個或多個類串口設(shè)備對應(yīng)的驅(qū)動組件;設(shè)備驅(qū)動層分別與一個或多個類串口設(shè)備及控制翻譯層連接,控制翻譯層與應(yīng)用程序連接。本發(fā)明提供的驅(qū)動模型通過統(tǒng)一控制接口來隔離不同類串口設(shè)備的特殊性,使得應(yīng)用程序能夠通過統(tǒng)一控制接口實現(xiàn)對不同類串口設(shè)備的控制管理。驅(qū)動模型中包括類串口設(shè)備對應(yīng)的驅(qū)動組件,通過基于組件的軟件分層結(jié)構(gòu),不需要對應(yīng)用程序進行任何修改,即可實現(xiàn)應(yīng)用程序與不同類串口設(shè)備之間的通信,不會增加應(yīng)用程序的維護難度,提高了應(yīng)用程序的兼容性和擴展性。
實施例2
參見圖5,本發(fā)明實施例提供了一種類串口設(shè)備的驅(qū)動系統(tǒng),該驅(qū)動系統(tǒng)包括:應(yīng)用層201、設(shè)備層202及上述實施例1所提供的驅(qū)動模型203;
應(yīng)用層包括一個或多個應(yīng)用程序,設(shè)備層包括一個或多個類串口設(shè)備;
應(yīng)用層中的應(yīng)用程序通過驅(qū)動模型與設(shè)備層中的類串口設(shè)備進行通信。
上述驅(qū)動模型的具體結(jié)構(gòu)與實施例1中所提及的驅(qū)動模型的結(jié)構(gòu)相同,本發(fā)明實施例中驅(qū)動模型的各組成部分及各組成部分的功能均可參考實施例1。
在本發(fā)明實施例中,該驅(qū)動模型包括設(shè)備驅(qū)動層和控制翻譯層;控制翻譯層為應(yīng)用程序提供統(tǒng)一控制接口,且包括一個或多個類串口設(shè)備對應(yīng)的驅(qū)動組件;設(shè)備驅(qū)動層分別與一個或多個類串口設(shè)備及控制翻譯層連接,控制翻譯層與應(yīng)用程序連接。本發(fā)明提供的驅(qū)動模型通過統(tǒng)一控制接口來隔離不同類串口設(shè)備的特殊性,使得應(yīng)用程序能夠通過統(tǒng)一控制接口實現(xiàn)對不同類串口設(shè)備的控制管理。驅(qū)動模型中包括類串口設(shè)備對應(yīng)的驅(qū)動組件,通過基于組件的軟件分層結(jié)構(gòu),不需要對應(yīng)用程序進行任何修改,即可實現(xiàn)應(yīng)用程序與不同類串口設(shè)備之間的通信,不會增加應(yīng)用程序的維護難度,提高了應(yīng)用程序的兼容性和擴展性。
本發(fā)明實施例所提供的驅(qū)動模型可以為設(shè)備上的特定硬件或者安裝于設(shè)備上的軟件或固件等。本發(fā)明實施例所提供的驅(qū)動系統(tǒng)中包括的驅(qū)動模型,其實現(xiàn)原理及產(chǎn)生的技術(shù)效果和前述驅(qū)動模型的實施例相同,為簡要描述,驅(qū)動系統(tǒng)的實施例部分未提及之處,可參考前述驅(qū)動模型的實施例中的相應(yīng)內(nèi)容。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,前述描述的驅(qū)動系統(tǒng)中應(yīng)用程序通過驅(qū)動模型與類串口設(shè)備之間的通信的具體過程,均可以參考上述驅(qū)動模型的實施例中的對應(yīng)過程,在此不再贅述。
在本發(fā)明所提供的實施例中,應(yīng)該理解到,所揭露驅(qū)動模型和驅(qū)動系統(tǒng),可以通過其它的方式實現(xiàn)。以上所描述的驅(qū)動模型和驅(qū)動系統(tǒng)的實施例僅僅是示意性的,例如,驅(qū)動模型中層級的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,又例如,多個層可以結(jié)合或者可以集成到另一個層中,或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的連接可以是通過一些通信接口,裝置或單元的間接通信連接,可以是電性,機械或其它的形式。
另外,在本發(fā)明提供的實施例中的各層可以集成在一個層中,也可以是各個層單獨物理存在,也可以兩個或兩個以上層集成在一個層中。
所述功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
應(yīng)注意到:相似的標(biāo)號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋,此外,術(shù)語“第一”、“第二”、“第三”等僅用于區(qū)分描述,而不能理解為指示或暗示相對重要性。
最后應(yīng)說明的是:以上所述實施例,僅為本發(fā)明的具體實施方式,用以說明本發(fā)明的技術(shù)方案,而非對其限制,本發(fā)明的保護范圍并不局限于此,盡管參照前述實施例對本發(fā)明進行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),其依然可以對前述實施例所記載的技術(shù)方案進行修改或可輕易想到變化,或者對其中部分技術(shù)特征進行等同替換;而這些修改、變化或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實施例技術(shù)方案的精神和范圍。都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準(zhǔn)。