專利名稱:配置外部通信協(xié)議的系統(tǒng)及其方法
技術領域:
本發(fā)明涉及通訊協(xié)議領域,尤其是一種配置外部通信協(xié)議的系統(tǒng)及其方法。
背景技術:
在許多大型企業(yè)中,有若干臺分布于各種層次的管理和控制計算機。它們之間需 要通過數據傳輸進行通信。由于設備品種的多樣化、制造年代的差異以及各個供應商在實 現(xiàn)互連方式上的不同,造成了原系統(tǒng)內各計算機通信平臺與周邊基于TCP/IP的SOCKET通 信接口規(guī)約多樣。此外,原先的多數通信中間件軟件系統(tǒng)需要為每種通信規(guī)約的使用定制開發(fā)一套 協(xié)議的流程實現(xiàn)程序。由于不同用戶所需數據內容、數據格式和數據質量千差萬別,使編程 人員在開發(fā)相關的通信規(guī)約程序時花費大量時間和精力,也給將來的軟件維護人員帶來了 許多不便。本方案將通信中間件軟件系統(tǒng)通過插件式軟件模塊實現(xiàn)了基于TCP/IP SOCKET技 術的各種通信數據傳送管理協(xié)議,并且通過提供統(tǒng)一的配置方法和界面實現(xiàn)對各種通信協(xié) 議的配置。對用戶來說,即使不具備網絡和TCP/IP通信規(guī)約的專業(yè)知識,只要掌握簡單的規(guī) 約機制和配置方法,就可以實現(xiàn)對應的通信協(xié)議,為不同計算機之間提供數據通信了。有鑒于此,本領域發(fā)明人針對上述問題,提供了一種應用于基于TCP/IP SOCKET技 術、點對點分布式結構配置外部通信協(xié)議的系統(tǒng)及其方法。
發(fā)明內容
本發(fā)明的目的在于,提供一種配置外部通信協(xié)議的系統(tǒng)及其方法,應用于基于 TCP/IPS0CKET技術、點對點分布式結構,以達到通過提供統(tǒng)一的配置方法和界面實現(xiàn)對各 種通信協(xié)議的配置的目的。本發(fā)明采用如下技術方案本發(fā)明的一種配置外部通信協(xié)議的系統(tǒng),分別連接數據庫和外部計算機,包括平 臺核心模塊以及至少一配置通信協(xié)議的插件式模塊;所述平臺核心模塊包括核心通信模塊、數據庫交互模塊以及通信管理模塊;所述核心通信模塊分別連接所述插件式模塊和所述通信管理模塊,發(fā)送用戶請求 到所述通信管理模塊,并接收所述通信管理模塊發(fā)出的響應請求;所述數據庫交互模塊分別連接所述核心通信模塊、插件式模塊以及數據庫,雙向 交互數據,所述核心通信模塊處理與數據庫交互相關的任務;所述插件式模塊連接所述外部計算機,解析通信規(guī)約并傳輸數據,所述插件式模 塊包括通信規(guī)約配置模塊、配置通信規(guī)約的插件實現(xiàn)模塊、網頁界面配置管理模塊;所述通信規(guī)約配置模塊通過多項協(xié)議參數描述了每種通信規(guī)約的實現(xiàn)細節(jié)、并實 現(xiàn)通信業(yè)務流程的配置;
5
所述插件實現(xiàn)模塊為成功連接的對端節(jié)點生成一個對象,當對象激活時,所述插 件實現(xiàn)模塊接受并處理該通信連接上的所有數據收發(fā)處理、并且從通信規(guī)約配置模塊中 讀取對應規(guī)約所有的通信參數并實現(xiàn)該種通信規(guī)約的數據解析、最后決定是否關閉通信連 接;所述網頁界面配置管理模塊提供網頁界面對通信規(guī)約配置模塊進行規(guī)約參數、通 信業(yè)務流程進行配置并保存,并對各項內容值的輸入條件進行限定。優(yōu)選地,所述平臺核心模塊還包括日志管理模塊,所述日志管理模塊連接所述核 心通信模塊,發(fā)送日志管理信息到所述核心通信模塊。優(yōu)選地,所述通信規(guī)約配置模塊中每條電文均由電文頭部、電文數據、結束符組 成。優(yōu)選地,所述通信規(guī)約配置模塊中電文的頭部都是由如下字段組合而成電文長 度、電文號、時間、發(fā)送端主機代號、接收端主機代號、序列號、功能碼、保留字段。優(yōu)選地,所述字段是ASCII編碼或二進制編碼方式。優(yōu)選地,所述通信規(guī)約配置模塊中至少包括數據電文,還包括心跳電文和通信應 答電文。優(yōu)選地,所述通信規(guī)約配置模塊中電文的截取方式是通過電文長度截取或通過指 定結束符截取。優(yōu)選地,所述通信規(guī)約配置模塊中通信規(guī)約、靜態(tài)規(guī)約或動態(tài)規(guī)約中的一種。優(yōu)選地,所述通信規(guī)約配置模塊中通信連接是客戶端模式、服務器模式或客戶端/ 服務器模式中的一種。優(yōu)選地,所述插件實現(xiàn)模塊包括客戶端和服務器端模塊;所述客戶端模塊連接所述外部計算機的服務器端,并將數據按通信規(guī)約要求封裝 電文的頭部和結束符,再發(fā)送數據電文;所述服務器端模塊連接所述外部計算機的客戶端,并將接收到的原始數據按通信 規(guī)約要求,發(fā)送相應的確認電文、再去除數據電文的頭部和結束符,最后將數據插入數據庫。還提供一種配置外部通信協(xié)議的方法,包括配置通信規(guī)約插件服務器端運行方法 和配置通信規(guī)約插件客戶端運行方法;所述配置通信規(guī)約插件服務器端運行方法包括以下步驟步驟1A)啟動配置通信規(guī)約插件服務器端;步驟 1B)設置 Conn_Status = connect ;步驟1C)調函數get_pr0t0C0lC0nf ig,獲得規(guī)約對應的所有的配置參數;步驟1D)調函數init_% s (頭部字段名稱)函數,對規(guī)約頭部每個字段種類,生成 對應的格式標識符;步驟1E)當該通信連接的fd句柄設置心跳超時,設置AliveTimeOut (),執(zhí)行步驟 1G),結束;當該通信連接的fd句柄設置心跳為超時,執(zhí)行步驟1F);步驟1F)為該通信連接的fd句柄設置讀信號事件;步驟1G)結束;
所述配置通信規(guī)約插件客戶端運行方法包括以下步驟步驟2A)啟動配置通信規(guī)約插件服務器端;步驟 2B)設置 Conn_Status = connect ;步驟2C)為該通信連接的fd句柄設置客戶端定時連接事件;步驟2D)判斷連接是否成功,若是,執(zhí)行步驟2E);步驟 2E)設置 Conn_Status = connect ;步驟2F)調函數get_pr0t0C0lC0nf ig,獲得規(guī)約對應的所有的配置參數;步驟2G)調函數init_% s (頭部字段名稱)函數,對規(guī)約頭部每個字段種類,生成 對應的格式標識符;步驟2H)為該通信連接的fd句柄設置定時發(fā)送心跳電文事件,設置sendAliveO, 組織心跳電文,對應電文頭部不同的字段種類,調用對應的pack_% s(字段名稱)函數,按 不同編碼方式生成對應的數據,發(fā)送心跳電文,執(zhí)行步驟步驟2K);步驟21)為該通信連接成功的fd句柄設置讀信號事件,設置Raw_ dataCal Iback ();步驟2J)判斷該回線是否有待發(fā)數據,如無,執(zhí)行步驟2K),如有,設置 sendDataMessage 0,組織數據電文,對應電文頭部不同的字段種類,調用對應的pack_% s(字段名稱)函數,按不同編碼方式生成對應的數據,發(fā)送數據電文,執(zhí)行步驟2K);步驟2K)結束。優(yōu)選地,所述配置通信規(guī)約插件服務器端運行方法中的所述步驟1F)包括以下步 驟步驟1F1)設置 Raw_dataCal IbackO ;步驟1F2)判斷數據是否到達,若是,執(zhí)行步驟1F3),若否,執(zhí)行步驟1F10);步驟1F3)收全數據;步驟1F4)對電文不同的字段種類,調用對應的impaCk_% s (字段名稱)函數,按 不同編碼方式解析對應的字段;步驟1F5)判斷是否是數據電文,若是,執(zhí)行步驟1F6),若否,執(zhí)行步驟1F11);步驟1F6)寫入數據庫;步驟1F7)判斷寫入是否成功,若是,執(zhí)行步驟1F8),若否,執(zhí)行步驟1F14);步驟1F8)判斷協(xié)議是否有應答機制,若有執(zhí)行步驟1F9),若否,執(zhí)行步驟1G);步驟1F9)當數據入庫應答超時時,執(zhí)行步驟1F15),否則,執(zhí)行步驟1G);步驟1F10)關閉該連接,執(zhí)行步驟1G);步驟1F11)判斷是否是心跳電文,若是,執(zhí)行步驟1F12),若否,執(zhí)行步驟1F13);步驟1F12)取消前次設置的心跳事件,設置下次心跳超時事件,執(zhí)行步驟1G);步驟1F13)丟棄電文;步驟1F14)判斷協(xié)議是否有應答,若有,執(zhí)行步驟1F17),若無,執(zhí)行步驟1G);步驟IFl5)設置 DBAckTimeOut ();步驟1F16)對應電文頭部不同的字段種類,調用對應的pack_% s (字段名稱)函 數,按不同編碼方式生成對應的數據,組織負應答電文;步驟1F17)發(fā)送負應答電文,執(zhí)行步驟1G)。
7
優(yōu)選地,所述配置通信規(guī)約插件客戶端運行方法中的所述步驟21)包括以下步 驟步驟211)判斷是否有數據到達,若無,則關閉連接,若有,執(zhí)行步驟212);步驟212)判斷協(xié)議是否有應答,若無,則關閉連接,若有,執(zhí)行步驟213);步驟213)對電文不同的字段種類,調用對應的unpaCk_% s(字段名稱)函數,按 不同編碼方式解析對應的數據;步驟214)判斷是否有應答電文,若無,則關閉連接,若有,取消應答超時事件,設 置Status = receivecLack,發(fā)送更新電文請求,收到更新電文完畢通知,發(fā)送請求下條待 發(fā)電文通知,設置Status = gettingmsg,執(zhí)行步驟2K)。由于采用了上述技術,本發(fā)明能夠很好實現(xiàn)軟件模塊的分工開發(fā),能夠大量復用 代碼;插件技術的使用使得通信平臺核心軟件的功能擴展和升級都變得方便簡單;減少大 量的通信規(guī)約軟件重新編寫、編譯與發(fā)布麻煩與時間;提供簡單、快捷、統(tǒng)一的網頁配置方 法和界面。以下結合附圖及實施例進一步說明本發(fā)明。
圖1為本發(fā)明的配置外部通信協(xié)議的系統(tǒng)的模塊連接示意圖;圖2為本發(fā)明中插件實現(xiàn)模塊的模塊連接示意圖;圖3為實施例中配置通信規(guī)約插件服務器端運行流程圖;圖4為實施例中配配置通信規(guī)約插件客戶端運行流程圖。
具體實施例方式下面通過圖1至4來介紹本發(fā)明的一種具體實施例。如圖1所示,本發(fā)明的配置外部通信協(xié)議的系統(tǒng),分別連接數據庫和外部計算機, 包括平臺核心模塊以及至少一配置通信協(xié)議的插件式模塊;所述平臺核心模塊包括核心通信模塊、數據庫交互模塊以及通信管理模塊;所述核心通信模塊分別連接所述插件式模塊和所述通信管理模塊,發(fā)送用戶請求 到所述通信管理模塊,并接收所述通信管理模塊發(fā)出的響應請求;所述數據庫交互模塊分別連接所述核心通信模塊、插件式模塊以及數據庫,雙向 交互數據,所述核心通信模塊處理與數據庫交互相關的任務;所述插件式模塊連接所述外部計算機,解析通信規(guī)約并傳輸數據,所述插件式模 塊包括通信規(guī)約配置模塊、配置通信規(guī)約的插件實現(xiàn)模塊、網頁界面配置管理模塊;所述通信規(guī)約配置模塊通過多項協(xié)議參數描述了每種通信規(guī)約的實現(xiàn)細節(jié)、并實 現(xiàn)通信業(yè)務流程的配置;所述插件實現(xiàn)模塊為成功連接的對端節(jié)點生成一個對象,當對象激活時,所述插 件實現(xiàn)模塊接受并處理該通信連接上的所有數據收發(fā)處理、并且從通信規(guī)約配置模塊中 讀取對應規(guī)約所有的通信參數并實現(xiàn)該種通信規(guī)約的數據解析、最后決定是否關閉通信連 接;所述網頁界面配置管理模塊提供網頁界面對通信規(guī)約配置模塊進行規(guī)約參數、通
8信業(yè)務流程進行配置并保存,并對各項內容值的輸入條件進行限定。所述平臺核心模塊還包括日志管理模塊,所述日志管理模塊連接所述核心通信模 塊,發(fā)送日志管理信息到所述核心通信模塊。如圖2所示,所述插件實現(xiàn)模塊包括客戶端和服務器端模塊;所述客戶端模塊連 接所述外部計算機的服務器端,并將數據按通信規(guī)約要求封裝電文的頭部和結束符,再發(fā) 送數據電文;所述服務器端模塊連接所述外部計算機的客戶端,并將接收到的原始數據按 通信規(guī)約要求,發(fā)送相應的確認電文、再去除數據電文的頭部和結束符,最后將數據插入數 據庫。通過對大量信息系統(tǒng)集成工程項目中使用的各種基于TCP/IP SOCKET通信規(guī)約的 分析和總結,所述通信規(guī)約配置模塊中,對絕大部分通信協(xié)議的規(guī)約特征總結規(guī)則如下
每條電文均由電文頭部、電文數據、結束符構成。電文的頭部都是由如下字段組合而成電文長度、電文號、時間、發(fā)送端主機代號、 接收端主機代號、序列號、功能碼、保留字段。這些字段可能是ASCII編碼,也可能是二進制編碼方式。除了數據電文外,有心跳電文和通信應答電文。電文的截取方式或者是通過電文長度截取,或者是通過指定結束符截取。通信規(guī)約或是靜態(tài)規(guī)約、或是動態(tài)規(guī)約。通信連接或是客戶端模式、服務器模式或客戶端/服務器模式中的一種?;谝陨弦?guī)約特性的抽象,該功能模塊采用以下多項協(xié)議參數完整的描述每種通 信規(guī)約的實現(xiàn)細節(jié)。Isbyheadlength 1表示用頭部長度截取電文,0表示用結束符截取電文;Byetx 表示通過結束符截取電文時用的字符;Headsectionsum 表示電文頭部由幾個字段構成;Headsize 表示電文頭部有幾個字節(jié);head_section 表示電文頭部的構成內容,包括每個字段的編碼方式及長度;Connectiontype 表示規(guī)約的連接類型是C/S/CS結構;Hasalive 表示規(guī)約有無心跳;Alivemessage 表示心6 兆電文的格式;Alive_body 表示心跳電文的內容;Etx 表示電文的結束符;Hasack 表示規(guī)約有無應答機制;ack_messageid 表示應答電文的電文號;ack_body 正應答電文的內容;Nack_body 負應答電文的內容;Isdynamic 表示連接是動態(tài)或靜態(tài)。如圖3和4所示,本發(fā)明的配置外部通信協(xié)議的方法包括配置通信規(guī)約插件服務 器端運行方法和配置通信規(guī)約插件客戶端運行方法;如圖3所示,配置通信規(guī)約插件服務器端運行主流程步驟1A)啟動配置通信規(guī)約插件服務器端;
9
步驟 1B)設置 Conn_Status = connect ;步驟1C)調函數get_pr0t0C0lC0nfig,獲得規(guī)約對應的所有的配置參數;步驟1D)調函數init_% s (頭部字段名稱)函數,對規(guī)約頭部每個字段種類,生成 對應的格式標識符;步驟1E)當該通信連接的fd句柄設置心跳超時,設置AliveTimeOut (),執(zhí)行步驟 1G),結束;當該通信連接的fd旬柄設置心跳為超時,執(zhí)行步驟1F);步驟1F)為該通信連接的fd句柄設置讀信號事件;步驟1F1)設置 Raw_dataCal IbackO ;步驟1F2)判斷數據是否到達,若是,執(zhí)行步驟1F3),若否,執(zhí)行步驟1F10);步驟1F3)收全數據;步驟1F4)對電文不同的字段種類,調用對應的impaCk_% s(字段名稱)函數,按 不同編碼方式解析對應的字段;步驟1F5)判斷是否是數據電文,若是,執(zhí)行步驟1F6),若否,執(zhí)行步驟1F11);步驟1F6)寫入數據庫;步驟1F7)判斷寫入是否成功,若是,執(zhí)行步驟1F8),若否,執(zhí)行步驟1F14);步驟1F8)判斷協(xié)議是否有應答機制,若有執(zhí)行步驟1F9),若否,執(zhí)行步驟1G);步驟1F9)當數據入庫應答超時時,執(zhí)行步驟1F15),否則,執(zhí)行步驟1G);步驟1F10)關閉該連接,執(zhí)行步驟1G);步驟1F11)判斷是否是心跳電文,若是,執(zhí)行步驟1F12),若否,執(zhí)行步驟1F13);步驟1F12)取消前次設置的心跳事件,設置下次心跳超時事件,執(zhí)行步驟1G);步驟1F13)丟棄電文;步驟1F14)判斷協(xié)議是否有應答,若有,執(zhí)行步驟1F17),若無,執(zhí)行步驟1G);步驟IFl5)設置 DBAckTimeOut ();步驟1F16)對應電文頭部不同的字段種類,調用對應的pack_% s(字段名稱)函 數,按不同編碼方式生成對應的數據,組織負應答電文;步驟1F17)發(fā)送負應答電文,執(zhí)行步驟1G);步驟1G)結束。如圖4所示,配置通信規(guī)約插件客戶端運行方法的流程如下步驟2A)啟動配置通信規(guī)約插件服務器端;步驟 2B)設置 Conn_Status = connect ;步驟2C)為該通信連接的fd句柄設置客戶端定時連接事件;步驟2D)判斷連接是否成功,若是,執(zhí)行步驟2E);步驟 2E)設置 Conn_Status = connect ;步驟2F)調函數get_pr0t0C0lC0nfig,獲得規(guī)約對應的所有的配置參數;步驟2G)調函數init_% s (頭部字段名稱)函數,對規(guī)約頭部每個字段種類,生成 對應的格式標識符;步驟2H)為該通信連接的fd句柄設置定時發(fā)送心跳電文事件,設置sendAliveO, 組織心跳電文,對應電文頭部不同的字段種類,調用對應的pack_% s(字段名稱)函數,按 不同編碼方式生成對應的數據,發(fā)送心跳電文,執(zhí)行步驟2K);
步驟21)為該通信連接成功的fd句柄設置讀信號事件,設置Raw_ dataCallbackO,執(zhí)行步驟 211);步驟211)判斷是否有數據到達,若無,則關閉連接,若有,執(zhí)行步驟212);步驟212)判斷協(xié)議是否有應答,若無,則關閉連接,若有,執(zhí)行步驟213);步驟213)對電文不同的字段種類,調用對應的impaCk_% s(字段名稱)函數,按 不同編碼方式解析對應的數據;步驟214)判斷是否有應答電文,若無,則關閉連接,若有,取消應答超時事件,設 置Status = receivecLack,發(fā)送更新電文請求,收到更新電文完畢通知,發(fā)送請求下條待 發(fā)電文通知,設置Status = gettingmsg,執(zhí)行步驟2K);步驟2J)判斷該回線是否有待發(fā)數據,如無,執(zhí)行步驟2K),如有,設置 sendDataMessage O,組織數據電文,對應電文頭部不同的字段種類,調用對應的pack_% s(字段名稱)函數,按不同編碼方式生成對應的數據,發(fā)送數據電文,執(zhí)行步驟2K);步驟2K)結束。本發(fā)明中的網頁界面配置管理模塊負責以人性化、交互化方式提供網頁界面對通 信規(guī)約配置模塊進行規(guī)約參數、通信業(yè)務流程進行配置并保存,同時對各項內容值的輸入 條件進行限定。本配置化外部通信協(xié)議插件模塊在使用中對規(guī)約配置簡單靈活。以下配置實例是對二級機常見PLC通信規(guī)約的配置的試驗數據[pic][connection]connectiontype = cisdynamic = 0isbyheadlength = 1byetx =[][head_format]head_size = 4head_section_number = 2head_section_l = lengthhead_section_2 = messageidhead_section_3 =[]head_section_4 =[]head_section_5 =[]head_section_6 =[]head_section_7 =[]length = BIN1_2/*BIN 表示二進制編碼,ASC 表示 ascii 編碼 * /messageid = BIN3-4time =[]localdc =[]remotedc =[]
110180]func =[]
0181]reserved =[]
0182][alive]
0183]hasalive = 0
0184]alive_messageid = []#□表示應用電文號
0185]alive_body =[]
0186]alive_func =[]
0187][ack]
0188]hasack = 0
0189]ack_messageid =[]
0190]ack_body =[]
0191]Nack_body =[]
0192]ack_func =[]
0193]nack_func =[]
0194][etx_format]
0195]etx_length =[]
0196]etx_format =[]
0197]etx =[]
0198]以下配置實例是對三級機標準通信規(guī)約的配置
0199][static]
0200][connection]
0201]connectiontype = cs#c/s/cs
0202]isdynamic = 0#staric or dynamic
0203]isbyheadlength = 1 #1表示通過長度截取,0表示通過結束符
0204]byetx = []#□表示截取的字符
0205][head_format]
0206]head_size = 29#電文頭部長度字節(jié)數目
0207]head_section_number = 6 # 電文頭部字段數目
0208]head_section_l = length # 每個字段的種類
0209]head_section_2 = messageid
0210]head_section_3 = time
0211]head_section_4 = localdc
0212]head_section_5 = remotedc
0213]head_section_6 = func
0214]head_section_7 =[]
0215]length = ASC1-4#長度字段占1-4字節(jié),是ASCII編碼
0216]messageid = ASC5-10 #電文號字段占5-10字節(jié),是ASCII編碼
0217]time = ASCl 1-24 YYYYMMDDHHMMSS # 時間字段占 11-24 字節(jié)
0218]localdc = ASC25_26:XX #本機主機代號,占25-26字節(jié),ASCII編碼,缺省
12
值 XXremotedc = ASC27_28:TT # 對方主機代號,占 27-28 字節(jié),ASCII 編碼,缺 省值TTfunc = ASC29-29:D #功能碼字段,占29字節(jié),ASCII編碼,缺省值Dreserved = []# □表示電文頭部沒有保留字段[alive]hasalive = 1#1表示有心跳電文機制,0表示沒有心跳電文機制alive_messageid = 999999 #□表示應用電文號alive_body = [] #□表示心跳電文內容為空alive_func = C #表示心跳功能碼,[]表示沒有功能碼[ack]hasack = 1#1表示有應答電文機制,0表示沒有應答電文機制ack_messageid = 999998 #若配為[]表示應答電文號是原應用電文號ack_body[]#若配為[]表示正應答電文內容為空Nack—body = * ]#若配為[]表示負應答電文內容為空ack_func = A #表示正應答電文的功能碼值nack_func = B #表示負應答電文的功能碼值[etx_format]etx_length = 1 #表示電文結束符長度etx_format = ASC #表示電文結束符編碼類型etx = 10#表示電文結束符值通過充分的測試,該配置外部通信協(xié)議的系統(tǒng)在規(guī)約配置的靈活性、多樣性、數據 傳輸的可靠性等各項指標均達到性能要求,完全實現(xiàn)了設計目標,方案取得了成功。綜上可知,由于采用了上述技術,本發(fā)明能夠很好實現(xiàn)軟件模塊的分工開發(fā),能夠 大量復用代碼;插件技術的使用使得通信平臺核心軟件的功能擴展和升級都變得方便簡 單;減少大量的通信規(guī)約軟件重新編寫、編譯與發(fā)布麻煩與時間;提供簡單、快捷、統(tǒng)一的 網頁配置方法和界面。以上所述的實施例僅用于說明本發(fā)明的技術思想及特點,其目的在于使本領域內 的技術人員能夠了解本發(fā)明的內容并據以實施,不能僅以本實施例來限定本發(fā)明的專利范 圍,即凡依本發(fā)明所揭示的精神所作的同等變化或修飾,仍落在本發(fā)明的專利范圍內。
1權利要求
一種配置外部通信協(xié)議的系統(tǒng),分別連接數據庫和外部計算機,其特征在于包括平臺核心模塊以及至少一配置通信協(xié)議的插件式模塊;所述平臺核心模塊包括核心通信模塊、數據庫交互模塊以及通信管理模塊;所述核心通信模塊分別連接所述插件式模塊和所述通信管理模塊,發(fā)送用戶請求到所述通信管理模塊,并接收所述通信管理模塊發(fā)出的響應請求;所述數據庫交互模塊分別連接所述核心通信模塊、插件式模塊以及數據庫,雙向交互數據,所述核心通信模塊處理與數據庫交互相關的任務;所述插件式模塊連接所述外部計算機,解析通信規(guī)約并傳輸數據,所述插件式模塊包括通信規(guī)約配置模塊、配置通信規(guī)約的插件實現(xiàn)模塊、網頁界面配置管理模塊;所述通信規(guī)約配置模塊通過多項協(xié)議參數描述了每種通信規(guī)約的實現(xiàn)細節(jié)、并實現(xiàn)通信業(yè)務流程的配置;所述插件實現(xiàn)模塊為成功連接的對端節(jié)點生成一個對象,當對象激活時,所述插件實現(xiàn)模塊接受并處理該通信連接上的所有數據收發(fā)處理、并且從通信規(guī)約配置模塊中讀取對應規(guī)約所有的通信參數并實現(xiàn)該種通信規(guī)約的數據解析、最后決定是否關閉通信連接;所述網頁界面配置管理模塊提供網頁界面對通信規(guī)約配置模塊進行規(guī)約參數、通信業(yè)務流程進行配置并保存,并對各項內容值的輸入條件進行限定。
2.如權利要求1所述的配置外部通信協(xié)議的系統(tǒng),其特征在于所述平臺核心模塊還 包括日志管理模塊,所述日志管理模塊連接所述核心通信模塊,發(fā)送日志管理信息到所述 核心通信模塊。
3.如權利要求1所述的配置外部通信協(xié)議的系統(tǒng),其特征在于所述通信規(guī)約配置模 塊中每條電文均由電文頭部、電文數據、結束符組成。
4.如權利要求1所述的配置外部通信協(xié)議的系統(tǒng),其特征在于所述通信規(guī)約配置模 塊中電文的頭部都是由如下字段組合而成電文長度、電文號、時間、發(fā)送端主機代號、接收 端主機代號、序列號、功能碼、保留字段。
5.如權利要求4所述的配置外部通信協(xié)議的系統(tǒng),其特征在于所述字段是ASCII編 碼或二進制編碼方式。
6.如權利要求1所述的配置外部通信協(xié)議的系統(tǒng),其特征在于所述通信規(guī)約配置模 塊中至少包括數據電文,還包括心跳電文和通信應答電文。
7.如權利要求1所述的配置外部通信協(xié)議的系統(tǒng),其特征在于所述通信規(guī)約配置模 塊中電文的截取方式是通過電文長度截取或通過指定結束符截取。
8.如權利要求1所述的配置外部通信協(xié)議的系統(tǒng),其特征在于所述通信規(guī)約配置模 塊中通信規(guī)約、靜態(tài)規(guī)約或動態(tài)規(guī)約中的一種。
9.如權利要求1所述的配置外部通信協(xié)議的系統(tǒng),其特征在于所述通信規(guī)約配置模 塊中通信連接是客戶端模式、服務器模式或客戶端/服務器模式中的一種。
10.如權利要求1所述的配置外部通信協(xié)議的系統(tǒng),其特征在于所述插件實現(xiàn)模塊包 括客戶端和服務器端模塊;所述客戶端模塊連接所述外部計算機的服務器端,并將數據按通信規(guī)約要求封裝電文 的頭部和結束符,再發(fā)送數據電文;所述服務器端模塊連接所述外部計算機的客戶端,并將接收到的原始數據按通信規(guī)約要求,發(fā)送相應的確認電文、再去除數據電文的頭部和結束符,最后將數據插入數據庫。
11.一種配置外部通信協(xié)議的方法,其特征在于包括配置通信規(guī)約插件服務器端運 行方法和配置通信規(guī)約插件客戶端運行方法;所述配置通信規(guī)約插件服務器端運行方法包括以下步驟 步驟1A)啟動配置通信規(guī)約插件服務器端; 步驟 1B)設置 Conn_Status = connect ;步驟1C)調函數geLprotocolconfig,獲得規(guī)約對應的所有的配置參數; 步驟1D)調函數init_% s (頭部字段名稱)函數,對規(guī)約頭部每個字段種類,生成對應 的格式標識符;步驟1E)當該通信連接的fd句柄設置心跳超時,設置AliveTimeOut (),執(zhí)行步驟1G), 結束;當該通信連接的fd句柄設置心跳為超時,執(zhí)行步驟1F); 步驟1F)為該通信連接的fd句柄設置讀信號事件; 步驟1G)結束;所述配置通信規(guī)約插件客戶端運行方法包括以下步驟步驟2A)啟動配置通信規(guī)約插件服務器端;步驟 2B)設置 Conn_Status = connect ;步驟2C)為該通信連接的fd句柄設置客戶端定時連接事件;步驟2D)判斷連接是否成功,若是,執(zhí)行步驟2E);步驟 2E)設置 Conn_Status = connect ;步驟2F)調函數geLprotocolconfig,獲得規(guī)約對應的所有的配置參數; 步驟2G)調函數init_%s (頭部字段名稱)函數,對規(guī)約頭部每個字段種類,生成對應 的格式標識符;步驟2H)為該通信連接的fd句柄設置定時發(fā)送心跳電文事件,設置sendAlive (),組織 心跳電文,對應電文頭部不同的字段種類,調用對應的pack_% s(字段名稱)函數,按不同 編碼方式生成對應的數據,發(fā)送心跳電文,執(zhí)行步驟步驟2K);步驟21)為該通信連接成功的fd句柄設置讀信號事件,設置Raw_dataCallback(); 步驟2J)判斷該回線是否有待發(fā)數據,如無,執(zhí)行步驟2K),如有,設置 sendDataMessage 0,組織數據電文,對應電文頭部不同的字段種類,調用對應的pack_% s(字段名稱)函數,按不同編碼方式生成對應的數據,發(fā)送數據電文,執(zhí)行步驟2K); 步驟2K)結束。
12.根據權利要求11所述的配置外部通信協(xié)議的方法,其特征在于所述配置通信規(guī) 約插件服務器端運行方法中的所述步驟1F)包括以下步驟步驟 1F1)設置 Raw_dataCal IbackO ;步驟1F2)判斷數據是否到達,若是,執(zhí)行步驟1F3),若否,執(zhí)行步驟1F10); 步驟1F3)收全數據;步驟1F4)對電文不同的字段種類,調用對應的impaCk_% s(字段名稱)函數,按不同 編碼方式解析對應的字段;步驟1F5)判斷是否是數據電文,若是,執(zhí)行步驟1F6),若否,執(zhí)行步驟1F11);步驟1F6)寫入數據庫;步驟1F7)判斷寫入是否成功,若是,執(zhí)行步驟1F8),若否,執(zhí)行步驟1F14); 步驟1F8)判斷協(xié)議是否有應答機制,若有執(zhí)行步驟1F9),若否,執(zhí)行步驟1G); 步驟1F9)當數據入庫應答超時時,執(zhí)行步驟1F15),否則,執(zhí)行步驟1G); 步驟1F10)關閉該連接,執(zhí)行步驟1G);步驟1F11)判斷是否是心跳電文,若是,執(zhí)行步驟1F12),若否,執(zhí)行步驟1F13); 步驟1F12)取消前次設置的心跳事件,設置下次心跳超時事件,執(zhí)行步驟1G); 步驟1F13)丟棄電文;步驟1F14)判斷協(xié)議是否有應答,若有,執(zhí)行步驟1F17),若無,執(zhí)行步驟1G); 步驟 1F15)設置 DBAckTimeOut ();步驟1F16)對應電文頭部不同的字段種類,調用對應的pack_% s (字段名稱)函數,按 不同編碼方式生成對應的數據,組織負應答電文; 步驟1F17)發(fā)送負應答電文,執(zhí)行步驟1G)。
13.根據權利要求11所述的配置外部通信協(xié)議的方法,其特征在于所述配置通信規(guī) 約插件客戶端運行方法中的所述步驟21)包括以下步驟步驟211)判斷是否有數據到達,若無,則關閉連接,若有,執(zhí)行步驟212); 步驟212)判斷協(xié)議是否有應答,若無,則關閉連接,若有,執(zhí)行步驟213); 步驟213)對電文不同的字段種類,調用對應的unpaCk_% s (字段名稱)函數,按不同 編碼方式解析對應的數據;步驟214)判斷是否有應答電文,若無,則關閉連接,若有,取消應答超時事件,設置 Status = receivecLack,發(fā)送更新電文請求,收到更新電文完畢通知,發(fā)送請求下條待發(fā) 電文通知,設置Status = gettingmsg,執(zhí)行步驟2K)。全文摘要
本發(fā)明揭示了一種配置外部通信協(xié)議的系統(tǒng)及其方法,系統(tǒng)包括平臺核心模塊以及至少一配置通信協(xié)議的插件式模塊;所述平臺核心模塊包括核心通信模塊、數據庫交互模塊以及通信管理模塊;所述核心通信模塊分別連接所述插件式模塊和所述通信管理模塊,發(fā)送用戶請求到所述通信管理模塊,并接收所述通信管理模塊發(fā)出的響應請求;配置外部通信協(xié)議的方法包括配置通信規(guī)約插件服務器端運行方法和配置通信規(guī)約插件客戶端運行方法,本發(fā)明能夠很好實現(xiàn)軟件模塊的分工開發(fā),能夠復用代碼;插件技術的使用使得通信平臺核心軟件的功能擴展和升級都變得方便簡單;減少通信規(guī)約軟件重新編寫、編譯與發(fā)布麻煩與時間;提供簡單、快捷、統(tǒng)一的網頁配置方法和界面。
文檔編號H04L29/06GK101902457SQ20101011235
公開日2010年12月1日 申請日期2010年2月23日 優(yōu)先權日2010年2月23日
發(fā)明者陳曉武, 韋偉, 顧宇棟, 龔敬群 申請人:上海寶信軟件股份有限公司