本發(fā)明涉及設(shè)備間的通訊交互,尤其涉及一種自動加載設(shè)備驅(qū)動的方法和系統(tǒng)。
背景技術(shù):
1、設(shè)備間通常具有多種類型通訊方式,例如包括網(wǎng)口、uart、iic、spi等多種類型的數(shù)字i/o接口,造成開發(fā)時對多種類型的對外接口難以適應(yīng)的問題,往往帶來開發(fā)過程的重復(fù)操作數(shù)量,同時也不便于后期的維護開發(fā),以及在線升級設(shè)備驅(qū)動固件等。
2、因此,為了便于適應(yīng)多種類型的對外接口,減少開發(fā)過程的重復(fù)操作,需要設(shè)計出一種能夠綜合集成各驅(qū)動方式/通訊方式的應(yīng)用層協(xié)議,以便能夠支持對各接口類型和設(shè)備對象的自動管理和動態(tài)鏈接功能。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于克服現(xiàn)有技術(shù)存在的上述缺陷,提供一種自動加載設(shè)備驅(qū)動的方法和系統(tǒng)。
2、為實現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下:
3、本發(fā)明提供一種自動加載設(shè)備驅(qū)動的方法,包括:
4、參照驅(qū)動接口注冊表以及檢測相關(guān)的驅(qū)動約束,完成驅(qū)動代理池的注冊;
5、啟動協(xié)議層,包括啟動總驅(qū)動代理以及子代理;
6、對每個子代理生成相應(yīng)的驅(qū)動對象,完成緩存隊列的注冊,并支持用戶選擇設(shè)備類型和協(xié)議類型;
7、輪詢監(jiān)測驅(qū)動對象的各項行為請求,檢測請求的合法性,執(zhí)行相應(yīng)的驅(qū)動行為。
8、進一步地,所述協(xié)議層按照實現(xiàn)邏輯分為應(yīng)用層邏輯、設(shè)備層邏輯和通訊層邏輯,僅開放應(yīng)用層邏輯給用戶,通訊層邏輯用來實現(xiàn)設(shè)備間具體的通訊機制;將所述通訊層封裝為鏈接庫形式,注冊驅(qū)動信息,以實現(xiàn)模塊化操作;所述協(xié)議層運行時基于類反射機制,使用字符串信息遍歷操作系統(tǒng)的外設(shè)信息和包含具體通訊機制的鏈接庫。
9、進一步地,所述完成驅(qū)動代理池的注冊,具體包括:
10、基于驅(qū)動文件的類反射機制,獲取驅(qū)動信息,驅(qū)動信息包括驅(qū)動類型和設(shè)備類型;
11、綁定驅(qū)動信息和驅(qū)動對象;
12、生成驅(qū)動行為的接口文件,接口文件包含驅(qū)動對象的任務(wù)流管理和驅(qū)動行為功能;
13、生成代理池管理文件,完成驅(qū)動的注冊。
14、進一步地,所述啟動協(xié)議層,具體包括:
15、根據(jù)代理池管理文件,獲取驅(qū)動對象支持的設(shè)備類型和協(xié)議類型,并將信息傳輸至用戶處;
16、通過用戶從外部發(fā)起請求,并選擇設(shè)備類型、驅(qū)動類型和設(shè)備數(shù)量;
17、啟動總驅(qū)動代理,用于管理當(dāng)前工作場景下的各驅(qū)動對象。
18、進一步地,所述生成相應(yīng)的驅(qū)動對象,具體包括:
19、獲取當(dāng)前子代理對應(yīng)的驅(qū)動信息;
20、通過操作系統(tǒng),檢測物理上是否接入該設(shè)備,若未處于接入狀態(tài),則退出該流程,返回生成日志,等待下一個子代理的操作;
21、檢測是否存在驅(qū)動行為的接口文件,若未搜索到,則退出該流程,返回生成日志,等待下一個子代理的操作;
22、生成唯一的鏈接編碼,用于區(qū)分各驅(qū)動對象;
23、創(chuàng)建驅(qū)動對象,并鏈接子代理和驅(qū)動對象,驅(qū)動對象的任務(wù)請求,由子代理轉(zhuǎn)發(fā);
24、注冊驅(qū)動對象數(shù)據(jù)交互所需的緩存隊列。
25、進一步地,所述輪詢監(jiān)測驅(qū)動對象的各項行為請求,檢測請求的合法性,執(zhí)行相應(yīng)的驅(qū)動行為,具體包括:
26、輪詢監(jiān)測各子代理對應(yīng)驅(qū)動對象的物理連接狀態(tài)和鏈接信號,完成驅(qū)動對象的注銷和異常反饋;
27、鏈接當(dāng)前驅(qū)動對象的緩存隊列;
28、解析轉(zhuǎn)發(fā)的任務(wù)請求;
29、執(zhí)行驅(qū)動行為;
30、上傳執(zhí)行結(jié)果。
31、進一步地,還包括:監(jiān)測協(xié)議層控制退出信號,釋放緩存隊列、已加載驅(qū)動對象的子代理以及控制所有驅(qū)動對象的總驅(qū)動代理。
32、本發(fā)明還提供一種自動加載設(shè)備驅(qū)動的系統(tǒng),包括:
33、代理池注冊驅(qū)動模塊,用于參照驅(qū)動接口注冊表以及檢測相關(guān)的驅(qū)動約束,完成驅(qū)動代理池的注冊;
34、協(xié)議層啟動模塊,用于啟動協(xié)議層,包括啟動總驅(qū)動代理以及子代理;
35、驅(qū)動對象生成模塊,用于對每個子代理生成相應(yīng)的驅(qū)動對象,完成緩存隊列的注冊,并支持用戶選擇設(shè)備類型和協(xié)議類型;
36、監(jiān)測和執(zhí)行模塊,用于輪詢監(jiān)測驅(qū)動對象的各項行為請求,檢測請求的合法性,執(zhí)行相應(yīng)的驅(qū)動行為。
37、進一步地,所述代理池注冊驅(qū)動模塊進一步用于:
38、基于驅(qū)動文件的類反射機制,獲取驅(qū)動信息,驅(qū)動信息包括驅(qū)動類型和設(shè)備類型;
39、綁定驅(qū)動信息和驅(qū)動對象;
40、生成驅(qū)動行為的接口文件,接口文件包含驅(qū)動對象的任務(wù)流管理和驅(qū)動行為功能;
41、生成代理池管理文件,完成驅(qū)動的注冊;
42、所述協(xié)議層啟動模塊進一步用于:
43、根據(jù)代理池管理文件,獲取驅(qū)動對象支持的設(shè)備類型和協(xié)議類型,并將信息傳輸至用戶處;
44、通過用戶從外部發(fā)起請求,并選擇設(shè)備類型、驅(qū)動類型和設(shè)備數(shù)量;
45、啟動總驅(qū)動代理,用于管理當(dāng)前工作場景下的各驅(qū)動對象;
46、所述驅(qū)動對象生成模塊進一步用于:
47、獲取當(dāng)前子代理對應(yīng)的驅(qū)動信息;
48、通過操作系統(tǒng),檢測物理上是否接入該設(shè)備,若未處于接入狀態(tài),則退出該流程,返回生成日志,等待下一個子代理的操作;
49、檢測是否存在驅(qū)動行為的接口文件,若未搜索到,則退出該流程,返回生成日志,等待下一個子代理的操作;
50、生成唯一的鏈接編碼,用于區(qū)分各驅(qū)動對象;
51、創(chuàng)建驅(qū)動對象,并鏈接子代理和驅(qū)動對象,驅(qū)動對象的任務(wù)請求,由子代理轉(zhuǎn)發(fā);
52、注冊驅(qū)動對象數(shù)據(jù)交互所需的緩存隊列;
53、所述監(jiān)測和執(zhí)行模塊進一步用于:
54、輪詢監(jiān)測各子代理對應(yīng)驅(qū)動對象的物理連接狀態(tài)和鏈接信號,完成驅(qū)動對象的注銷和異常反饋;
55、鏈接當(dāng)前驅(qū)動對象的緩存隊列;
56、解析轉(zhuǎn)發(fā)的任務(wù)請求;
57、執(zhí)行驅(qū)動行為;
58、上傳執(zhí)行結(jié)果。
59、進一步地,還包括:監(jiān)測退出模塊,用于監(jiān)測協(xié)議層控制退出信號,釋放緩存隊列、已加載驅(qū)動對象的子代理以及控制所有驅(qū)動對象的總驅(qū)動代理。
60、由上述技術(shù)方案可以看出,本發(fā)明通過將協(xié)議層按照實現(xiàn)邏輯分為應(yīng)用層邏輯、設(shè)備層邏輯和通訊層邏輯,僅開放應(yīng)用層邏輯給用戶,通訊層邏輯用來實現(xiàn)設(shè)備間具體的通訊機制;為了實現(xiàn)類似“接插件”的模塊化操作,將通訊層封裝為鏈接庫形式,注冊驅(qū)動信息;協(xié)議層運行時基于類反射機制,使用字符串信息遍歷操作系統(tǒng)的外設(shè)信息和包含具體通訊機制的鏈接庫;同時,為了支持對各接口類型和設(shè)備對象的自動管理,以及在線固件升級功能,內(nèi)置了一套解析和管理的邏輯,基于代理的概念以及相關(guān)觸發(fā)信號,能夠?qū)崿F(xiàn)對驅(qū)動對象進行自解析、重映射以及生命周期的動態(tài)管理。本發(fā)明基于以下操作過程的邏輯:參照驅(qū)動接口注冊表以及檢測相關(guān)的驅(qū)動約束,完成驅(qū)動代理池的注冊;啟動協(xié)議層,包括啟動總驅(qū)動代理以及子代理;對每個子代理生成相應(yīng)的驅(qū)動對象,完成緩存隊列的注冊,并支持用戶選擇設(shè)備類型和協(xié)議類型;輪詢監(jiān)測驅(qū)動對象的各項行為請求,檢測請求的合法性,執(zhí)行相應(yīng)的驅(qū)動行為。因此,本發(fā)明能夠支持對各接口類型和設(shè)備對象的自動管理(對于同樣的驅(qū)動和設(shè)備類型亦能兼容)、動態(tài)鏈接功能,大大方便了后期維護開發(fā)和在線升級設(shè)備驅(qū)動固件。