本發(fā)明涉及虛擬現(xiàn)實技術(shù)領(lǐng)域,尤其涉及一種vr設(shè)備的識別方法及其系統(tǒng)。
背景技術(shù):
虛擬現(xiàn)實(virtualreality,簡稱vr)技術(shù)在近兩年發(fā)展迅速,在醫(yī)療、教育、娛樂、新聞、時尚、購物、旅游、房地產(chǎn)、軍事訓(xùn)練等領(lǐng)域有著廣泛的應(yīng)用前景,google、facebook、samsung、htc、3glasses、暴風(fēng)影音、北京螞視科技、小鳥看看等各大企業(yè)紛紛加入,出現(xiàn)cardboard、oculusrift、htcvive、gearvr、3glassess1、暴風(fēng)靡鏡、antvrkit、piconeo各種vr設(shè)備,但目前沒有形成統(tǒng)一的接口,硬件配置本參差不齊,以至于當(dāng)前業(yè)內(nèi)沒有一款能兼容多種vr設(shè)備的測試工具。
而要兼容多種vr設(shè)備,首先必須支持自動識別多種設(shè)備。當(dāng)前市面上并沒有相關(guān)技術(shù)應(yīng)用于pcvr設(shè)備自動識別。很多測試平臺也只針對測試vr資源,沒有涉及到設(shè)備,也就沒有pcvr設(shè)備自動識別技術(shù)。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是:提出一種vr設(shè)備的識別方法及其系統(tǒng),可進(jìn)行自動識別,且通用性強。
為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:一種vr設(shè)備的識別方法,包括:
遍歷與vr設(shè)備連接的計算機的顯示設(shè)備的設(shè)備編號;
根據(jù)所述設(shè)備編號,在注冊表中獲取對應(yīng)的顯示設(shè)備信息,所述顯示設(shè)備信息包括擴展顯示標(biāo)識數(shù)據(jù);
根據(jù)所述擴展顯示標(biāo)識數(shù)據(jù),解析得到所述顯示設(shè)備的設(shè)備名;
若所述設(shè)備名與預(yù)設(shè)的vr設(shè)備信息庫中的一vr設(shè)備的設(shè)備名匹配,則獲取并加載所述一vr設(shè)備的動態(tài)鏈接庫;
調(diào)用所述動態(tài)鏈接庫中的設(shè)備初始化接口運行所述顯示設(shè)備。
本發(fā)明還涉及一種vr設(shè)備的識別系統(tǒng),包括:
遍歷模塊,用于遍歷與vr設(shè)備連接的計算機的顯示設(shè)備的設(shè)備編號;
第一獲取模塊,用于根據(jù)所述設(shè)備編號,在注冊表中獲取對應(yīng)的顯示設(shè)備信息,所述顯示設(shè)備信息包括擴展顯示標(biāo)識數(shù)據(jù);
解析模塊,用于根據(jù)所述擴展顯示標(biāo)識數(shù)據(jù),解析得到所述顯示設(shè)備的設(shè)備名;
第二獲取模塊,用于若所述設(shè)備名與預(yù)設(shè)的vr設(shè)備信息庫中的一vr設(shè)備的設(shè)備名匹配,則獲取并加載所述一vr設(shè)備的動態(tài)鏈接庫;
調(diào)用模塊,用于調(diào)用所述動態(tài)鏈接庫中的設(shè)備初始化接口運行所述顯示設(shè)備。
本發(fā)明的有益效果在于:pcvr設(shè)備有兩種模式:擴展模式(extendedmode)和直連模式(directmode);當(dāng)vr設(shè)備處于擴展模式時,vr設(shè)備僅作為pc的通用顯示設(shè)備,和顯示器沒有區(qū)別。而由于計算機每插入一個新的顯示設(shè)備,顯示設(shè)備信息(包含edid)都會被記錄下來,并且當(dāng)顯示設(shè)備拔下來不會自動消失,所以注冊表目錄下包含了歷史的所有顯示設(shè)備信息。同時,edid(extendeddisplayidentificationdata,擴展顯示標(biāo)識數(shù)據(jù))中的第三個dtd(detailedtimingdescription,顯示器描述符)塊中記錄了顯示設(shè)備的設(shè)備名。因此,當(dāng)vr設(shè)備連接計算機時,可以從注冊表中獲取顯示設(shè)備信息,再從顯示設(shè)備信息中的edid中獲取設(shè)備名,然后根據(jù)設(shè)備名從vr設(shè)備信息庫中獲取與所述vr設(shè)備匹配的動態(tài)鏈接庫,通過調(diào)用動態(tài)鏈接庫中的設(shè)備初始化接口即可運行所述vr設(shè)備。本發(fā)明可對連接計算機的vr設(shè)備進(jìn)行自動識別,且對sdk沒有依賴,通用性強。
附圖說明
圖1為本發(fā)明一種vr設(shè)備的識別方法的流程圖;
圖2為本發(fā)明實施例一的方法流程圖;
圖3為本發(fā)明實施例二步驟s8的方法流程圖;
圖4為本發(fā)明一種vr設(shè)備的識別系統(tǒng)的結(jié)構(gòu)示意圖;
圖5為本發(fā)明實施例三的系統(tǒng)結(jié)構(gòu)示意圖。
標(biāo)號說明:
1、遍歷模塊;2、第一獲取模塊;3、解析模塊;4、第二獲取模塊;5、調(diào)用模塊;6、注冊模塊;
61、獲取單元;62、確定單元;63、導(dǎo)入單元;64、保存單元。
具體實施方式
為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、所實現(xiàn)目的及效果,以下結(jié)合實施方式并配合附圖詳予說明。
本發(fā)明最關(guān)鍵的構(gòu)思在于:從vr設(shè)備信息庫中匹配得到vr設(shè)備對應(yīng)的動態(tài)鏈接庫。
請參閱圖1,一種vr設(shè)備的識別方法,包括:
遍歷與vr設(shè)備連接的計算機的顯示設(shè)備的設(shè)備編號;
根據(jù)所述設(shè)備編號,在注冊表中獲取對應(yīng)的顯示設(shè)備信息,所述顯示設(shè)備信息包括擴展顯示標(biāo)識數(shù)據(jù);
根據(jù)所述擴展顯示標(biāo)識數(shù)據(jù),解析得到所述顯示設(shè)備的設(shè)備名;
若所述設(shè)備名與預(yù)設(shè)的vr設(shè)備信息庫中的一vr設(shè)備的設(shè)備名匹配,則獲取并加載所述一vr設(shè)備的動態(tài)鏈接庫;
調(diào)用所述動態(tài)鏈接庫中的設(shè)備初始化接口運行所述顯示設(shè)備。
從上述描述可知,本發(fā)明的有益效果在于:可對連接計算機的vr設(shè)備進(jìn)行自動識別。
進(jìn)一步地,所述“根據(jù)所述擴展顯示標(biāo)識數(shù)據(jù),解析得到所述顯示設(shè)備的設(shè)備名”之后,進(jìn)一步包括:
若所述設(shè)備名不與vr設(shè)備信息庫中的任一vr設(shè)備的設(shè)備名匹配,則注冊所述vr設(shè)備。
進(jìn)一步地,所述“注冊所述vr設(shè)備”具體為:
獲取當(dāng)前連接計算機的顯示設(shè)備;
根據(jù)所述顯示設(shè)備的設(shè)備名,確定vr設(shè)備;
導(dǎo)入所述vr設(shè)備的動態(tài)鏈接庫,并將所述動態(tài)鏈接庫保存至預(yù)設(shè)的目錄下;
將所述vr設(shè)備的設(shè)備名及其動態(tài)鏈接庫的庫名保存至vr設(shè)備信息庫中。
由上述描述可知,通過將新的vr設(shè)備注冊到vr設(shè)備信息庫中,豐富vr設(shè)備信息庫中的信息,不斷積累過后,后續(xù)可識別幾乎所有的vr設(shè)備。
進(jìn)一步地,所述“遍歷與vr設(shè)備連接的計算機的顯示設(shè)備的設(shè)備編號”具體為:
通過enumdisplaydevices系統(tǒng)接口遍歷與vr設(shè)備連接的計算機的顯示設(shè)備的設(shè)備編號。
請參照圖4,本實施例還提出一種vr設(shè)備的識別系統(tǒng),包括:
遍歷模塊,用于遍歷與vr設(shè)備連接的計算機的顯示設(shè)備的設(shè)備編號;
第一獲取模塊,用于根據(jù)所述設(shè)備編號,在注冊表中獲取對應(yīng)的顯示設(shè)備信息,所述顯示設(shè)備信息包括擴展顯示標(biāo)識數(shù)據(jù);
解析模塊,用于根據(jù)所述擴展顯示標(biāo)識數(shù)據(jù),解析得到所述顯示設(shè)備的設(shè)備名;
第二獲取模塊,用于若所述設(shè)備名與預(yù)設(shè)的vr設(shè)備信息庫中的一vr設(shè)備的設(shè)備名匹配,則獲取并加載所述一vr設(shè)備的動態(tài)鏈接庫;
調(diào)用模塊,用于調(diào)用所述動態(tài)鏈接庫中的設(shè)備初始化接口運行所述顯示設(shè)備。
進(jìn)一步地,還包括:
注冊模塊,用于若所述設(shè)備名不與vr設(shè)備信息庫中的任一vr設(shè)備的設(shè)備名匹配,則注冊所述vr設(shè)備。
進(jìn)一步地,所述注冊模塊包括:
獲取單元,用于獲取當(dāng)前連接計算機的顯示設(shè)備;
確定單元,用于根據(jù)所述顯示設(shè)備的設(shè)備名,確定vr設(shè)備;
導(dǎo)入單元,用于導(dǎo)入所述vr設(shè)備的動態(tài)鏈接庫,并將所述動態(tài)鏈接庫保存至預(yù)設(shè)的目錄下;
保存單元,用于將所述vr設(shè)備的設(shè)備名及其動態(tài)鏈接庫的庫名保存至vr設(shè)備信息庫中。
進(jìn)一步地,所述遍歷模塊具體用于通過enumdisplaydevices系統(tǒng)接口遍歷與vr設(shè)備連接的計算機的顯示設(shè)備的設(shè)備編號。
實施例一
請參照圖2,本發(fā)明的實施例一為:一種vr設(shè)備的識別方法,包括如下步驟:
s1:遍歷與vr設(shè)備連接的計算機的顯示設(shè)備的設(shè)備編號;進(jìn)一步地,可通過enumdisplaydevices系統(tǒng)接口遍歷得到所述設(shè)備編號。
s2:根據(jù)所述設(shè)備編號,在注冊表中獲取對應(yīng)的顯示設(shè)備信息,所述顯示設(shè)備信息包括擴展顯示標(biāo)識數(shù)據(jù)。
s3:根據(jù)所述擴展顯示標(biāo)識數(shù)據(jù),解析得到所述顯示設(shè)備的設(shè)備名;
s4:判斷所述設(shè)備名是否與預(yù)設(shè)的vr設(shè)備信息庫中的一vr設(shè)備的設(shè)備名匹配,若是,執(zhí)行步驟s5,若否,即所述設(shè)備名不與vr設(shè)備信息庫中的任一vr設(shè)備的設(shè)備名匹配,則執(zhí)行步驟s7。所述vr設(shè)備信息庫中保存了多個vr設(shè)備的設(shè)備名及其對應(yīng)的動態(tài)鏈接庫的庫名的關(guān)聯(lián)關(guān)系;這些關(guān)聯(lián)關(guān)系可以預(yù)先存儲在vr設(shè)備信息庫中,也可以每當(dāng)檢測到新的vr設(shè)備時即進(jìn)行注冊得到。
s5:獲取并加載所述一vr設(shè)備的動態(tài)鏈接庫;即根據(jù)關(guān)聯(lián)關(guān)系,獲取并對應(yīng)所述vr設(shè)備的動態(tài)鏈接庫,并加載所述動態(tài)鏈接庫。
s6:調(diào)用所述動態(tài)鏈接庫中的設(shè)備初始化接口運行所述顯示設(shè)備。
s7:判斷遍歷是否結(jié)束,若否,則執(zhí)行步驟s1,若是,則執(zhí)行步驟s8。
s8:注冊所述vr設(shè)備;即將所述vr設(shè)備注冊至vr設(shè)備信息庫中。
edid(extendeddisplayidentificationdata,擴展顯示標(biāo)識數(shù)據(jù))是一種vesa標(biāo)準(zhǔn)數(shù)據(jù)格式,其中包含有關(guān)顯示器信息及其性能的參數(shù),包括供應(yīng)商信息、顯示器名、最大圖像大小、顏色設(shè)置、廠商預(yù)設(shè)置、頻率范圍限制以及序列號的字符串。edid包含128bytes的基本edid和128bytes的擴展edid,其中,擴展部分不是必須有的。edid有四個dtd(detailedtimingdescription,詳細(xì)時序描述)塊,每塊的大小為18bytes,dtd#3(也叫顯示器描述符)用來描述顯示器的其他特性(顯示器名稱、最大頻率范圍、序列號等),目前強制用于描述顯示器名稱,dtd#3塊的各個字段定義如表1所示。表1為dtd#3塊字段定義表。
表1
當(dāng)前,頭戴式pcvr設(shè)備有兩種模式:擴展模式(extendedmode)和直連模式(directmode)。當(dāng)vr設(shè)備處于擴展模式時,vr設(shè)備僅作為pc的通用顯示設(shè)備,和顯示器沒有區(qū)別。直連模式不是作為pc的通用顯示設(shè)備,而是顯卡直接把畫面渲染數(shù)據(jù)傳輸?shù)絭r設(shè)備上,而沒有經(jīng)過系統(tǒng)monitorgui接口,效率更高。因此,本實施例適用于擴展模式下的vr設(shè)備,但其僅僅作為顯示設(shè)備被識別,并不是vr設(shè)備,所以還必須識別是哪一款vr設(shè)備。
由于每插入一個新的顯示設(shè)備,顯示設(shè)備信息(包含edid)都會被記錄下來,并且當(dāng)顯示設(shè)備拔下來不會自動消失,所以主機的注冊表display目錄下包含了歷史的所有顯示設(shè)備信息。因此,先通過enumdisplaydevices系統(tǒng)接口遍歷當(dāng)前主機的所有顯示設(shè)備id;然后通過當(dāng)前顯示設(shè)備id,找到在注冊表中對應(yīng)的顯示設(shè)備目錄,進(jìn)一步找到對應(yīng)edid;通過edid數(shù)據(jù)結(jié)構(gòu),解析出顯示設(shè)備名(若是vr設(shè)備,則是vr設(shè)備名);通過找到的設(shè)備名,與vr設(shè)備信息庫的設(shè)備名逐個匹配,若匹配成功,則在vr設(shè)備信息庫中找出對應(yīng)vr設(shè)備的dll(動態(tài)鏈接庫)名稱并加載dll;最后由vr設(shè)備dll中的設(shè)備初始化接口進(jìn)行初始化,完成vr設(shè)備識別。
本實施例可對連接計算機的vr設(shè)備進(jìn)行自動識別,且對sdk沒有依賴,通用性強。
實施例二
本實施例是實施例一中步驟s8的進(jìn)一步拓展。
如圖3所示,所述步驟s8具體包括:
s81:獲取當(dāng)前連接計算機的顯示設(shè)備;同樣的,可通過enumdisplaydevices系統(tǒng)接口列出當(dāng)前連接計算機的所有顯示設(shè)備。
s82:根據(jù)所述顯示設(shè)備的設(shè)備名,確定vr設(shè)備;enumdisplaydevices系統(tǒng)接口列出的顯示設(shè)備包括計算機的顯示器和vr設(shè)備,根據(jù)設(shè)備名選擇vr設(shè)備。
s83:導(dǎo)入所述vr設(shè)備的動態(tài)鏈接庫,并將所述動態(tài)鏈接庫保存至預(yù)設(shè)的目錄下。
s84:將所述vr設(shè)備的設(shè)備名及其動態(tài)鏈接庫的庫名保存至vr設(shè)備信息庫中。
本實施例通過將新的vr設(shè)備注冊到vr設(shè)備信息庫中,豐富vr設(shè)備信息庫中的信息,不斷積累過后,后續(xù)可識別幾乎所有的vr設(shè)備。
實施例三
請參照圖5,本實施例是對應(yīng)上述實施例的一種vr設(shè)備的識別系統(tǒng),包括:
遍歷模塊1,用于遍歷與vr設(shè)備連接的計算機的顯示設(shè)備的設(shè)備編號;
第一獲取模塊2,用于根據(jù)所述設(shè)備編號,在注冊表中獲取對應(yīng)的顯示設(shè)備信息,所述顯示設(shè)備信息包括擴展顯示標(biāo)識數(shù)據(jù);
解析模塊3,用于根據(jù)所述擴展顯示標(biāo)識數(shù)據(jù),解析得到所述顯示設(shè)備的設(shè)備名;
第二獲取模塊4,用于若所述設(shè)備名與預(yù)設(shè)的vr設(shè)備信息庫中的一vr設(shè)備的設(shè)備名匹配,則獲取并加載所述一vr設(shè)備的動態(tài)鏈接庫;
調(diào)用模塊5,用于調(diào)用所述動態(tài)鏈接庫中的設(shè)備初始化接口運行所述顯示設(shè)備。
進(jìn)一步地,還包括:
注冊模塊6,用于若所述設(shè)備名不與vr設(shè)備信息庫中的任一vr設(shè)備的設(shè)備名匹配,則注冊所述vr設(shè)備。
進(jìn)一步地,所述注冊模塊6包括:
獲取單元61,用于獲取當(dāng)前連接計算機的顯示設(shè)備;
確定單元62,用于根據(jù)所述顯示設(shè)備的設(shè)備名,確定vr設(shè)備;
導(dǎo)入單元63,用于導(dǎo)入所述vr設(shè)備的動態(tài)鏈接庫,并將所述動態(tài)鏈接庫保存至預(yù)設(shè)的目錄下;
保存單元64,用于將所述vr設(shè)備的設(shè)備名及其動態(tài)鏈接庫的庫名保存至vr設(shè)備信息庫中。
進(jìn)一步地,所述遍歷模塊1具體用于通過enumdisplaydevices系統(tǒng)接口遍歷與vr設(shè)備連接的計算機的顯示設(shè)備的設(shè)備編號。
綜上所述,本發(fā)明提供的一種vr設(shè)備的識別方法及其系統(tǒng),當(dāng)vr設(shè)備連接計算機時,可以從注冊表中獲取顯示設(shè)備信息,再從顯示設(shè)備信息中的edid中獲取設(shè)備名,然后根據(jù)設(shè)備名從vr設(shè)備信息庫中獲取與所述vr設(shè)備匹配的動態(tài)鏈接庫,通過調(diào)用動態(tài)鏈接庫中的設(shè)備初始化接口即可運行所述vr設(shè)備。本發(fā)明可對連接計算機的vr設(shè)備進(jìn)行自動識別,且對sdk沒有依賴,通用性強。
以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等同變換,或直接或間接運用在相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。