專利名稱:一種虛擬串口系統及其通信方法
技術領域:
本發明涉及通信技術領域,尤其涉及一種虛擬串口系統及其通信方法。
背景技術:
在工業控制領域,存在很多通信終端設備,這些設備通過物理串口和主站設備進行通信,隨著終端設備數量的不斷增加,主站設備上對應的物理串口數量也不斷增加。現有技術中,一般通過增加新的串口卡來支持物理串口數量的不斷增加,但這樣不但增加了硬件成本,而且維護難度也在加大。因此,現有技術中提出了虛擬串口技術,以解決此問題。即主站設備上并不配置物理串口,而是通過軟件進行模擬,對運行在主站上的串口應用程序而言,操作的對象看起來仍然是串口,這樣就可以保護原有的軟件投資,實現平滑的切換。虛擬串口技術目前已經得到廣泛應用,不同廠家的實現千差萬別,存在的主要問題是沒有對跨操作系統(OS)平臺給出統一解決方案,比如對Windows和Linux操作系統, 采用的方案完全不同。從用戶角度看,同類功能產品對用戶的體驗差異很大,比如,Windows 平臺提供用戶操作配置界面,而Linux平臺提供命令行操作配置。從程序開發角度看,大量的重復工作導致開發效率的降低,不利于快速推出產品。
發明內容
本發明實施例提供了一種虛擬串口系統及其通信方法,用以實現跨OS平臺的虛擬串口系統,避免虛擬串口系統無法在不同OS平臺上通信。本發明實施例提供的一種虛擬串口系統包括位于客戶端的串口客戶端組件模塊,用于向用戶提供與串口服務器端組件模塊交互的界面,并根據用戶操作,生成虛擬串口消息,并發送給位于服務器端的串口服務器端組件模塊;位于服務器端的串口服務器端組件模塊,用于對所述串口客戶端組件模塊發送的虛擬串口消息進行解析,根據解析結果確定該消息對應的操作系統平臺。本發明實施例提供的一種虛擬串口系統的通信方法包括通過在客戶端設置的串口客戶端組件模塊,向用戶提供與串口服務器端組件模塊交互的界面,并根據用戶操作,生成虛擬串口消息,并發送給位于服務器端的串口服務器端組件模塊;通過在服務器端設置的串口服務器端組件模塊,對所述串口客戶端組件模塊發送的虛擬串口消息進行解析,根據解析結果確定該消息對應的操作系統平臺。本發明實施例,位于客戶端的串口客戶端組件模塊,用于向用戶提供與串口服務器端組件模塊交互的界面,并根據用戶操作,生成虛擬串口消息,并發送給位于服務器端的串口服務器端組件模塊;位于服務器端的串口服務器端組件模塊,用于對所述串口客戶端組件模塊發送的虛擬串口消息進行解析,根據解析結果確定該消息對應的操作系統平臺,從而實現了虛擬串口系統的跨OS平臺通信,使得虛擬串口技術的跨平臺應用能夠方便、快速地實現,從而提升客戶體驗。
圖1為本發明實施例提供的一種虛擬串口系統的結構示意圖;圖2為本發明實施例提供的一種虛擬串口軟件分布式組件架構示意圖;圖3為本發明實施例提供的一種串口服務器端組件模塊的結構示意圖;圖4為本發明實施例提供的一種虛擬串口系統的通信方法的流程示意圖。
具體實施例方式本發明實施例提供了一種虛擬串口系統及其通信方法,用以實現跨OS平臺的虛擬串口系統,避免虛擬串口系統無法在不同OS平臺上通信。本發明實施例提供的一種跨平臺的虛擬串口系統,采用分布式組件架構,即采用客戶端/服務器端(C/幻架構設計,使得服務器(Server)端組件可以支持跨平臺操作。下面結合附圖對本發明實施例提供的技術方案進行說明。參見圖1,本發明實施例提供的一種虛擬串口系統,包括位于客戶端的串口客戶端組件模塊101,用于向用戶提供與串口服務器端組件模塊交互的界面,并根據用戶操作,生成虛擬串口消息,并發送給位于服務器端的串口服務器端組件模塊102 ;位于服務器端的串口服務器端組件模塊102,用于對所述串口客戶端組件模塊 101發送的虛擬串口消息進行解析,根據解析結果確定該消息對應的操作系統平臺。較佳地,所述串口服務器端組件模塊102,包括串口管理單元201,用于對串口客戶端組件模塊101發送的虛擬串口消息進行解析,確定虛擬串口消息中包含虛擬串口的配置類命令,或虛擬串口的數據;以及,將適配單元202返回的結果發給串口客戶端組件模塊101 ;適配單元202,用于根據串口管理單元201的解析結果,確定虛擬串口消息對應的操作系統平臺,以及將操作系統平臺返回的結果發給串口管理單元201。較佳地,所述適配單元202包括Win2L適配單元301,用于當虛擬串口消息中包含虛擬串口的配置類命令時,確定需要將該命令發往的操作系統平臺,并將操作系統平臺返回的命令執行結果發給串口管理單元201 ;驅動適配單元302,用于當虛擬串口消息中包含虛擬串口的數據時,確定需要將該命令發往的操作系統平臺的黑盒驅動解碼組件模塊,以及將黑盒驅動解碼組件模塊的執行結果發給串口管理單元201。較佳地,所述Win2L適配單元301,通過在Linux平臺上模擬Windows平臺的API 接口,接收虛擬串口的配置類命令。較佳地,所述操作系統平臺,為Linux平臺或Windows平臺。下面給出詳細的解釋說明。本發明實施例提供的虛擬串口軟件架構,如圖2所示,軟件架構上采用低耦合、高內聚的結構化設計,整個虛擬串口軟件是一個分布式的軟件,包括串口 client組件、串口 Server組件、黑盒驅動解碼組件。位于客戶端的串口客戶端組件模塊101,簡稱串口 client組件,可以基于Windows 平臺開發,提供用戶操作界面,和位于服務器端的串口服務器端組件模塊102(簡稱串口 krver組件)之間,通過網絡進行通信。由于Windows操作系統開發⑶I程序比較簡單,因此,串口 client組件可以選擇在Windows平臺上開發,以提供用戶操作圖形界面。串口 client組件,還負責下發虛擬串口的配置類命令和診斷調試命令,以及接收串口 krver組件返回的命令執行結果。其中,所述配置類命令,例如增加或刪除虛擬串口、虛擬串口關聯等。所述的診斷調試命令,包括串口收發數據、數據的統計、上報及顯示寸。并且,串口 client組件還負責接收串口 krver組件上報的狀態信息,所述狀態信息例如虛擬串口收發統計、虛擬串口數據流跟蹤。串口 client組件不需要保存配置過程數據,所有的數據在串口 krver組件端保存,故簡化了串口 client組件的設計,串口 client組件可以不考慮跨平臺移植,即對于虛擬串口軟件運行在不同的OS平臺的應用場景,可以使用同樣的串口 client組件,因為串口 client組件運行在獨立的pc機上。也就是說,本發明實施例中所述串口 client組件,主要是實現圖形用戶界面 (GUI,Graphical User Interface,又稱圖形用戶接口),用戶可以通過client界面實現和 Server的交互,具體包括命令下發和結果顯示。命令包括配置類命令和診斷調試命令。本發明實施例中的串口 krver組件,設計了 Win2L適配單元301(簡稱Win2L適配層)和驅動適配單元302 (簡稱驅動適配層)。參見圖3,串口 krver組件,支持多OS平臺,可以采用標準C語言實現,為了屏蔽底層OS的API接口實現差異,設計了 Win2L適配層,在Linux平臺上模擬實現Windows平臺的API接口,從而可以快速實現Windows到Linux的切換,而不影響原有的Windows相關實現。串口管理軟件,無論是信令處理,還是媒體處理,都認為是運行在Windows平臺, 使用Windows提供的API編程接口,但在Linux平臺上,這些接口實際是不存在的,Win2L 適配層就是模擬實現了這些Windows的API接口,使得原來在Windows平臺上開發的串口 Server組件可以快速地移植到Linux平臺上。另外,由于串口 krver組件和操作系統平臺的黑盒驅動解碼組件模塊(簡稱黑盒驅動解碼組件)是運行在同一臺pc上的,故通過驅動適配層,屏蔽了底層驅動程序的差異, 對上層應用提供統一的接口。所述的黑盒驅動解碼組件,邏輯上獨立,不同的OS平臺驅動開發模式有很大的不同,對于跨平臺,提供不同的黑盒驅動解碼組件,對于Windows平臺,以sys文件提供黑盒驅動解碼組件功能,對于Linux平臺,以ko文件提供黑盒驅動解碼組件功能。串口 krver組件工作在用戶態,黑盒驅動解碼組件工作在內核態,整個串口數據流向大致如下串口 krver組件從網口接收到串口 client組件發送的數據,然后寫到對應的串口設備,這樣串口應用程序就可以讀出來;反方向,串口應用程序寫數據到串口設備,串口 Server組件從串口設備將數據讀出來,從網口發送給串口 client組件。
本發明實施例中,串口 krver組件和黑盒驅動解碼組件交互完成串口數據的收發,對于Windows平臺,通過device_ioctl機制實現串口 krver組件對內核態串口設備的讀/寫操作,對于Linux平臺,通過proc機制實現串口 krver組件對內核態串口設備的讀
/寫操作。參見圖4,本發明實施例提供的一種虛擬串口系統的通信方法包括步驟S101、通過在客戶端設置的串口客戶端組件模塊,向用戶提供與串口服務器端組件模塊交互的界面,并根據用戶操作,生成虛擬串口消息,并發送給位于服務器端的串口服務器端組件模塊;S102、通過在服務器端設置的串口服務器端組件模塊,對所述串口客戶端組件模塊發送的虛擬串口消息進行解析,根據解析結果確定該消息對應的操作系統平臺。較佳地,所述通過在服務器端設置的串口服務器端組件模塊,對所述串口客戶端組件模塊發送的虛擬串口消息進行解析,根據解析結果確定該消息對應的操作系統平臺, 包括通過串口服務器端組件模塊中的串口管理單元,對串口客戶端組件模塊發送的虛擬串口消息進行解析,確定虛擬串口消息中包含虛擬串口的配置類命令,或虛擬串口的數據;通過串口服務器端組件模塊中的適配單元,根據串口管理單元的解析結果,確定虛擬串口消息對應的操作系統平臺,以及將操作系統平臺返回的結果發給串口管理單元;串口管理單元,將適配單元返回的結果發給串口客戶端組件模塊。較佳地,所述適配單元,根據串口管理單元的解析結果,確定虛擬串口消息對應的操作系統平臺,以及將操作系統平臺返回的結果發給串口管理單元,包括當虛擬串口消息中包含虛擬串口的配置類命令時,確定需要將該命令發往的操作系統平臺,并將操作系統平臺返回的命令執行結果發給串口管理單元;當虛擬串口消息中包含虛擬串口的數據時,確定需要將該命令發往的操作系統平臺的黑盒驅動解碼組件模塊,以及將黑盒驅動解碼組件模塊的執行結果發給串口管理單兀。較佳地,所述適配單元,通過在Linux平臺上模擬Windows平臺的API接口,接收串口管理單元發送的虛擬串口的配置類命令。較佳地,所述操作系統平臺,為Linux平臺或Windows平臺。綜上所述,本發明實施例,位于客戶端的串口客戶端組件模塊,用于向用戶提供與串口服務器端組件模塊交互的界面,并根據用戶操作,生成虛擬串口消息,并發送給位于服務器端的串口服務器端組件模塊;位于服務器端的串口服務器端組件模塊,用于對所述串口客戶端組件模塊發送的虛擬串口消息進行解析,根據解析結果確定該消息對應的操作系統平臺,從而實現了虛擬串口系統的跨OS平臺通信,使得虛擬串口技術的跨平臺應用能夠方便、快速地實現,從而提升客戶體驗。本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或計算機程序產品。因此,本發明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產品的形式。本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的系統。這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令系統的制造品,該指令系統實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。
權利要求
1.一種虛擬串口系統,其特征在于,該系統包括位于客戶端的串口客戶端組件模塊,用于向用戶提供與串口服務器端組件模塊交互的界面,并根據用戶操作,生成虛擬串口消息,并發送給位于服務器端的串口服務器端組件模塊;位于服務器端的串口服務器端組件模塊,用于對所述串口客戶端組件模塊發送的虛擬串口消息進行解析,根據解析結果確定該消息對應的操作系統平臺。
2.根據權利要求1所述的系統,其特征在于,所述串口服務器端組件模塊,包括串口管理單元,用于對串口客戶端組件模塊發送的虛擬串口消息進行解析,確定虛擬串口消息中包含虛擬串口的配置類命令,或虛擬串口的數據;以及,將適配單元返回的結果發給串口客戶端組件模塊;適配單元,用于根據串口管理單元的解析結果,確定虛擬串口消息對應的操作系統平臺,以及將操作系統平臺返回的結果發給串口管理單元。
3.根據權利要求2所述的系統,其特征在于,所述適配單元包括Win2L適配單元,用于當虛擬串口消息中包含虛擬串口的配置類命令時,確定需要將該命令發往的操作系統平臺,并將操作系統平臺返回的命令執行結果發給串口管理單元;驅動適配單元,用于當虛擬串口消息中包含虛擬串口的數據時,確定需要將該命令發往的操作系統平臺的黑盒驅動解碼組件模塊,以及將黑盒驅動解碼組件模塊的執行結果發給串口管理單元。
4.根據權利要求3所述的系統,其特征在于,所述Win2L適配單元,通過在Linux平臺上模擬Windows平臺的API接口,接收虛擬串口的配置類命令。
5.根據權利要求3或4所述的系統,其特征在于,所述操作系統平臺,為Linux平臺或 Windows 平臺。
6.一種虛擬串口系統的通信方法,其特征在于,該方法包括通過在客戶端設置的串口客戶端組件模塊,向用戶提供與串口服務器端組件模塊交互的界面,并根據用戶操作,生成虛擬串口消息,并發送給位于服務器端的串口服務器端組件模塊;通過在服務器端設置的串口服務器端組件模塊,對所述串口客戶端組件模塊發送的虛擬串口消息進行解析,根據解析結果確定該消息對應的操作系統平臺。
7.根據權利要求6所述的方法,其特征在于,所述通過在服務器端設置的串口服務器端組件模塊,對所述串口客戶端組件模塊發送的虛擬串口消息進行解析,根據解析結果確定該消息對應的操作系統平臺,包括通過串口服務器端組件模塊中的串口管理單元,對串口客戶端組件模塊發送的虛擬串口消息進行解析,確定虛擬串口消息中包含虛擬串口的配置類命令,或虛擬串口的數據;通過串口服務器端組件模塊中的適配單元,根據串口管理單元的解析結果,確定虛擬串口消息對應的操作系統平臺,以及將操作系統平臺返回的結果發給串口管理單元;串口管理單元,將適配單元返回的結果發給串口客戶端組件模塊。
8.根據權利要求7所述的方法,其特征在于,所述適配單元,根據串口管理單元的解析結果,確定虛擬串口消息對應的操作系統平臺,以及將操作系統平臺返回的結果發給串口管理單元,包括當虛擬串口消息中包含虛擬串口的配置類命令時,確定需要將該命令發往的操作系統平臺,并將操作系統平臺返回的命令執行結果發給串口管理單元;當虛擬串口消息中包含虛擬串口的數據時,確定需要將該命令發往的操作系統平臺的黑盒驅動解碼組件模塊,以及將黑盒驅動解碼組件模塊的執行結果發給串口管理單元。
9.根據權利要求8所述的方法,其特征在于,所述適配單元,通過在Linux平臺上模擬 Windows平臺的API接口,接收串口管理單元發送的虛擬串口的配置類命令。
10.根據權利要求9所述的方法,其特征在于,所述操作系統平臺,為Linux平臺或 Windows 平臺。
全文摘要
本發明公開了一種虛擬串口系統及其通信方法,用以實現跨OS平臺的虛擬串口系統,避免虛擬串口系統無法在不同OS平臺上通信。本發明提供的一種虛擬串口系統包括位于客戶端的串口客戶端組件模塊,用于向用戶提供與串口服務器端組件模塊交互的界面,并根據用戶操作,生成虛擬串口消息,并發送給串口服務器端組件模塊;位于服務器端的串口服務器端組件模塊,用于對所述串口客戶端組件模塊發送的虛擬串口消息進行解析,根據解析結果確定該消息對應的操作系統平臺。
文檔編號G06F9/455GK102567071SQ201010590930
公開日2012年7月11日 申請日期2010年12月15日 優先權日2010年12月15日
發明者劉俊峰, 李純靜, 谷超 申請人:中興通訊股份有限公司