專利名稱:一種實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的方法、設(shè)備及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的方法、設(shè)備及系統(tǒng)。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的廣泛發(fā)展,利用以太網(wǎng)(Internet)進(jìn)行數(shù)據(jù)傳輸可以實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)慕M網(wǎng)應(yīng)用。同時(shí),隨著第三代(3G)無線路由器的出現(xiàn),可以實(shí)現(xiàn)無線方式接入Internet,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)慕M網(wǎng)應(yīng)用并保證業(yè)務(wù)傳送的安全性。目前,在環(huán)保、電力、工業(yè)控制、安防等多個(gè)行業(yè),大量使用計(jì)算機(jī)系統(tǒng),并且廣泛地部署了以太網(wǎng)實(shí)現(xiàn)計(jì)算機(jī)聯(lián)網(wǎng),因此以太網(wǎng)接口成為現(xiàn)有環(huán)境中一種常見的接口方式。但是,由于串行通信發(fā)展較早、成熟可靠,具有極強(qiáng)的適用性和廣泛的應(yīng)用范圍,大量的電子設(shè)備和儀表都設(shè)計(jì)為通過串口進(jìn)行通信。為了跟上互聯(lián)網(wǎng)和網(wǎng)絡(luò)自動化的發(fā)展潮流,需要建立高品質(zhì)的數(shù)據(jù)采集、生成監(jiān)控、即時(shí)成本管理的聯(lián)網(wǎng)系統(tǒng),這就需要對串口設(shè)備進(jìn)行遠(yuǎn)程監(jiān)控和管理,如何實(shí)現(xiàn)以太網(wǎng)和串口設(shè)備之間的數(shù)據(jù)交互成為急需解決的問題。
發(fā)明內(nèi)容
本發(fā)明提供一種實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的方法、設(shè)備及系統(tǒng),用以實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)的交互。本發(fā)明實(shí)施例提供的具體技術(shù)方案如下:一種實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的方法,包括串行連接事務(wù)處理模塊分別向串行端口和網(wǎng)絡(luò)端口發(fā)送開啟消息,并在所述串行端口和所述網(wǎng)絡(luò)端口開啟后,定時(shí)檢測串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)并通知下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊;下行串口事務(wù)處理模塊根據(jù)所述串行連接事務(wù)處理模塊的通知確定所述串行端口和所述網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測串行端口的數(shù)據(jù)接收,在串行端口有串行數(shù)據(jù)流到來時(shí),獲取該串行數(shù)據(jù)流并保存至緩存;以及在所述緩存中有從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀時(shí),從所述緩存中獲取所述從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流通過串行端口發(fā)送;上行網(wǎng)絡(luò)端事務(wù)處理模塊根據(jù)所述串行連接事務(wù)處理模塊的通知確定所述串行端口和所述網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測網(wǎng)絡(luò)端口的數(shù)據(jù)接收,在網(wǎng)絡(luò)端口有數(shù)據(jù)幀到來時(shí),獲取該數(shù)據(jù)幀并保存至緩存;以及在所述緩存中有從串行接口接收的串行數(shù)據(jù)流時(shí),從所述緩存中獲取所述從串行接口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀通過網(wǎng)絡(luò)端口發(fā)送。一種實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的設(shè)備,包括:串行連接事務(wù)處理模塊,用于分別向串行端口和網(wǎng)絡(luò)端口發(fā)送開啟消息,并在所述串行端口和所述網(wǎng)絡(luò)端口開啟后,定時(shí)檢測串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)并通知下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊;下行串口事務(wù)處理模塊,用于根據(jù)所述串行連接事務(wù)處理模塊的通知確定所述串行端口和所述網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測串行端口的數(shù)據(jù)接收,在串行端口有串行數(shù)據(jù)流到來時(shí),獲取該串行數(shù)據(jù)流并保存至緩存;以及用于在所述緩存中有從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀時(shí),從所述緩存中獲取所述從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流通過串行端口發(fā)送;上行網(wǎng)絡(luò)端事務(wù)處理模塊,用于根據(jù)所述串行連接事務(wù)處理模塊的通知確定所述串行端口和所述網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測網(wǎng)絡(luò)端口的數(shù)據(jù)接收,在網(wǎng)絡(luò)端口有數(shù)據(jù)幀到來時(shí),獲取該數(shù)據(jù)幀并保存至緩存;以及在所述緩存中有從串行接口接收的串行數(shù)據(jù)流時(shí),從所述緩存中獲取所述從串行接口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀通過網(wǎng)絡(luò)端口發(fā)送。一種網(wǎng)絡(luò)與串口數(shù)據(jù)交互的系統(tǒng),包括:設(shè)有網(wǎng)絡(luò)端口的第一設(shè)備、實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的第二設(shè)備和設(shè)有串行端口的第三設(shè)備,所述第一設(shè)備通過網(wǎng)絡(luò)端口與第二設(shè)備連接,所述第二設(shè)備通過串行端口與所述第三設(shè)備連接;所述第一設(shè)備,用于將待發(fā)送的串行數(shù)據(jù)流通過虛擬串口轉(zhuǎn)換為數(shù)據(jù)幀,并將轉(zhuǎn)換獲得數(shù)據(jù)幀通過網(wǎng)絡(luò)端口傳輸至所述第二設(shè)備;以及通過網(wǎng)絡(luò)端口接收第二設(shè)備發(fā)送的數(shù)據(jù)幀,并通過虛擬串口將所述數(shù)據(jù)幀轉(zhuǎn)換為串行數(shù)據(jù)流;所述第二設(shè)備,用于通過網(wǎng)絡(luò)端口接收所述第一設(shè)備發(fā)送的數(shù)據(jù)幀,并將接收的數(shù)據(jù)幀轉(zhuǎn)換為串行數(shù)據(jù)流后通過串行端口發(fā)送至所述第三設(shè)備;以及通過串行端口接收所述第三設(shè)備發(fā)送的串行數(shù)據(jù)流,并將接收的串行數(shù)據(jù)流轉(zhuǎn)換為數(shù)據(jù)幀后發(fā)送給所述第一設(shè)備;所述第三設(shè)備,用于通過串行端口接收所述第二設(shè)備發(fā)送的串行數(shù)據(jù)流?;谏鲜黾夹g(shù)方案,本發(fā)明實(shí)施例中,通過串行連接事務(wù)處理模塊向串行端口和網(wǎng)絡(luò)端口發(fā)送開啟消息,并將串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)通知下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊,由下行串口事務(wù)處理模塊監(jiān)測串行端口的數(shù)據(jù)接收,在串行端口有串行數(shù)據(jù)流到來時(shí),獲取該串行數(shù)據(jù)流并保存至緩存,以及在緩存中有從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀時(shí),從該緩存中獲取從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流通過串行端口發(fā)送;以及由上行網(wǎng)絡(luò)端事務(wù)處理模塊監(jiān)測網(wǎng)絡(luò)端口的數(shù)據(jù)接收,在網(wǎng)絡(luò)端口有數(shù)據(jù)幀到來時(shí),獲取該數(shù)據(jù)幀并保存至緩存,以及在緩存中有從串行接口接收的串行數(shù)據(jù)流時(shí),從該緩存中獲取從串行接口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀通過網(wǎng)絡(luò)端口發(fā)送,從而實(shí)現(xiàn)了網(wǎng)絡(luò)與串口數(shù)據(jù)的交互。通過該方案,可以實(shí)現(xiàn)穩(wěn)定可靠的數(shù)據(jù)流傳輸,將傳統(tǒng)的串行數(shù)據(jù)送上IP以及無線通道,通過網(wǎng)絡(luò)在任何地方控制終端設(shè)備以及接收終端設(shè)備的采集數(shù)據(jù),提高了現(xiàn)有設(shè)備的利用率。
圖1為本發(fā)明實(shí)施例中網(wǎng)絡(luò)與串口數(shù)據(jù)交互的系統(tǒng)架構(gòu)示意圖;圖2為本發(fā)明實(shí)施例中實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的設(shè)備結(jié)構(gòu)示意圖;圖3為3G路由器的硬件系統(tǒng)結(jié)構(gòu)示意圖4為本發(fā)明實(shí)施例中3G路由器與即客戶端組成的系統(tǒng)的軟件應(yīng)用模型示意圖;圖5為本發(fā)明實(shí)施例中實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的方法流程圖;圖6為本發(fā)明實(shí)施例中系統(tǒng)應(yīng)用層軟件流程設(shè)計(jì)框架示意圖;圖7為本發(fā)明實(shí)施例中串行連接事務(wù)處理模塊、下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理1旲塊之間的聯(lián)動關(guān)系不意圖;圖8為本發(fā)明實(shí)施例中串行連接事務(wù)處理模塊的狀態(tài)機(jī)變化示意圖;圖9為本發(fā)明實(shí)施例中下行串口事務(wù)處理模塊的狀態(tài)機(jī)變化示意圖;圖10為本發(fā)明實(shí)施例中上行網(wǎng)絡(luò)端事務(wù)處理模塊的狀態(tài)機(jī)變化示意圖;圖11為本發(fā)明實(shí)施例中串行端口與網(wǎng)絡(luò)端口數(shù)據(jù)交互功能的實(shí)現(xiàn)框架圖;圖12為本發(fā)明實(shí)施例中Real-port模式下PC與3G路由器的數(shù)據(jù)交互過程示意圖;圖13為本發(fā)明實(shí)施例中Real-port模式下網(wǎng)絡(luò)端口傳輸?shù)膱?bào)文頭結(jié)構(gòu)示意圖;圖14為本發(fā)明實(shí)施例中Reverse-telnet模式下網(wǎng)絡(luò)端口傳輸?shù)膱?bào)文結(jié)構(gòu)示意圖;圖15為本發(fā)明實(shí)施例中RFC2217模式下網(wǎng)絡(luò)端口傳輸?shù)目刂茍?bào)文字符串的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)的交互,以便于對串口設(shè)備進(jìn)行監(jiān)控和管理,本發(fā)明實(shí)施例中提供了一種實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的方法、設(shè)備及系統(tǒng)。下面結(jié)合附圖對本發(fā)明優(yōu)選的實(shí)施方式進(jìn)行詳細(xì)說明。如附圖1所示,本發(fā)明實(shí)施例中提供了一種網(wǎng)絡(luò)與串口數(shù)據(jù)交互的系統(tǒng),該系統(tǒng)主要包括設(shè)有網(wǎng)絡(luò)端口的第一設(shè)備101、實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的第二設(shè)備102和設(shè)有串行端口的第三設(shè)備103,第一設(shè)備101通過網(wǎng)絡(luò)端口與第二設(shè)備102連接,第二設(shè)備102通過串行端口與第三設(shè)備103連接,其中,第一設(shè)備101,用于將待發(fā)送的串行數(shù)據(jù)流通過虛擬串口轉(zhuǎn)換為數(shù)據(jù)幀,并將轉(zhuǎn)換獲得數(shù)據(jù)幀通過網(wǎng)絡(luò)端口傳輸至第二設(shè)備102 ;以及通過網(wǎng)絡(luò)端口接收第二設(shè)備102發(fā)送的數(shù)據(jù)幀,并通過虛擬串口將數(shù)據(jù)幀轉(zhuǎn)換為串行數(shù)據(jù)流;第二設(shè)備102,用于通過網(wǎng)絡(luò)端口接收第一設(shè)備101發(fā)送的數(shù)據(jù)幀,并將接收的數(shù)據(jù)幀轉(zhuǎn)換為串行數(shù)據(jù)流后通過串行端口發(fā)送至第三設(shè)備103 ;以及通過串行端口接收第三設(shè)備103發(fā)送的串行數(shù)據(jù)流,并將接收的串行數(shù)據(jù)流轉(zhuǎn)換為數(shù)據(jù)幀后發(fā)送給第一設(shè)備101 ;第三設(shè)備103,用于通過串行端口接收第二設(shè)備102發(fā)送的串行數(shù)據(jù)流。其中,第一設(shè)備101與第二設(shè)備通過網(wǎng)絡(luò)端口建立連接的方式包括但不限于:傳輸控制協(xié)議-客戶端(TCP-Client)模式、傳輸控制協(xié)議-服務(wù)器(TCP-Server)模式、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)模式、虛擬串口(Real-port)模式、反向-遠(yuǎn)程登錄(Reverse-telnet)模式以及請求注解(RFC) 2217模式。本發(fā)明實(shí)施例中,如附圖2所示,實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的第二設(shè)備102主要包括以下模塊:
串行連接事務(wù)處理模塊201,用于分別向串行端口和網(wǎng)絡(luò)端口發(fā)送開啟消息,并在串行端口和網(wǎng)絡(luò)端口開啟后,定時(shí)檢測串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)并通知下行串口事務(wù)處理模塊202以及上行網(wǎng)絡(luò)端事務(wù)處理模塊203 ;下行串口事務(wù)處理模塊202,用于根據(jù)串行連接事務(wù)處理模塊201的通知確定串行端口和網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測串行端口的數(shù)據(jù)接收,在串行端口有串行數(shù)據(jù)流到來時(shí),獲取該串行數(shù)據(jù)流并保存至緩存;以及用于在緩存中有從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀時(shí),從緩存中獲取從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流通過串行端口發(fā)送;上行網(wǎng)絡(luò)端事務(wù)處理模塊203,用于根據(jù)串行連接事務(wù)處理模塊201的通知確定串行端口和網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測網(wǎng)絡(luò)端口的數(shù)據(jù)接收,在網(wǎng)絡(luò)端口有數(shù)據(jù)幀到來時(shí),獲取該數(shù)據(jù)幀并保存至緩存;以及在緩存中有從串行接口接收的串行數(shù)據(jù)流時(shí),從緩存中獲取從串行接口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀通過網(wǎng)絡(luò)端口發(fā)送。優(yōu)選地,該第二設(shè)備為第三代移動通信(3G)路由器。通過在3G路由器上實(shí)現(xiàn)串口與網(wǎng)絡(luò)數(shù)據(jù)交互功能,可以在3G網(wǎng)絡(luò)以及以太網(wǎng)(或局域網(wǎng))和串行設(shè)備之間數(shù)據(jù)傳輸,能夠以無線方式實(shí)現(xiàn)網(wǎng)絡(luò)與串口設(shè)備之間的數(shù)據(jù)交互,通過3G網(wǎng)絡(luò)以及以太網(wǎng)可以在任何地方控制串行設(shè)備以及接收串行設(shè)備采集的數(shù)據(jù),使得串口設(shè)備能夠即時(shí)連接網(wǎng)絡(luò),達(dá)到對串口設(shè)備的遠(yuǎn)程監(jiān)控以及管理。并且,通過3G無線網(wǎng)絡(luò)與以太網(wǎng)之間的數(shù)據(jù)交換,實(shí)現(xiàn)無線網(wǎng)絡(luò)與串口設(shè)備之間的信息交互。在一個(gè)具體的實(shí)施例中,3G路由器的硬件系統(tǒng)結(jié)構(gòu)如附圖3所示,其中iMX283為主控中央處理器(CPU),該CPU采用454兆赫茲(MHz)的ARM926EJ-S為內(nèi)核,內(nèi)含16K字節(jié)大小的程序和32K字節(jié)大小的數(shù)據(jù)存儲器。該CPU集成了片內(nèi)的電源管理單元(PMU)及多路對直流參數(shù)進(jìn)行變換的電流(DC-DC),支持多種內(nèi)存(如雙倍速率同步動態(tài)隨機(jī)存儲器(DDR2)、NAND閃存(NAND FLASH)、串行外設(shè)接口閃存(SPI FLASH),其中DDR2的最大時(shí)鐘頻率為205MHz,支持20比特(bit)的用于校正多個(gè)隨機(jī)錯(cuò)誤模式的多級循環(huán)、錯(cuò)誤校正的變成數(shù)字編碼(BCH碼)硬件糾錯(cuò),集成有主設(shè)備、從設(shè)備通用串行總線(HOST、SLAVE USB)總線控制器以及多種外圍常用接口,4路4線通用異步收發(fā)(UART)、4路可編程串行外設(shè)接口(SPI)、兩線式串行(I2C)總線以及其他接口。其中,3G模塊提供外置3G無線上網(wǎng)卡進(jìn)行無線通信,KS8995進(jìn)行以太網(wǎng)通信,MAX13487、SP3234進(jìn)行串口通信。該3G路由器與具備網(wǎng)絡(luò)端口的第一設(shè)備(即客戶端)組成的系統(tǒng)的軟件應(yīng)用模型如附圖4所示,虛線所示為數(shù)據(jù)流的傳輸,該數(shù)據(jù)流可以是來自以太網(wǎng)或3G網(wǎng)絡(luò)的數(shù)據(jù),也可以是來自應(yīng)用層的數(shù)據(jù)傳輸至以太網(wǎng)或串口。基于同一發(fā)明構(gòu)思,如附圖5所示,本發(fā)明實(shí)施例中實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的詳細(xì)方法流程如下:步驟501:串行連接事務(wù)處理模塊分別向串行端口和網(wǎng)絡(luò)端口發(fā)送開啟消息,并在串行端口和網(wǎng)絡(luò)端口開啟后,定時(shí)檢測串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)并通知下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊。步驟502:下行串口事務(wù)處理模塊根據(jù)串行連接事務(wù)處理模塊的通知確定串行端口和網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測串行端口的數(shù)據(jù)接收,在串行端口有串行數(shù)據(jù)流到來時(shí),獲取該串行數(shù)據(jù)流并保存至緩存;以及在緩存中有從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀時(shí),從緩存中獲取從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流通過串行端口發(fā)送。步驟503:上行網(wǎng)絡(luò)端事務(wù)處理模塊根據(jù)串行連接事務(wù)處理模塊的通知確定串行端口和網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測網(wǎng)絡(luò)端口的數(shù)據(jù)接收,在網(wǎng)絡(luò)端口有數(shù)據(jù)幀到來時(shí),獲取該數(shù)據(jù)幀并保存至緩存;以及在緩存中有從串行接口接收的串行數(shù)據(jù)流時(shí),從緩存中獲取從串行接口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀通過網(wǎng)絡(luò)端口發(fā)送。以下具體實(shí)施例中以在3G路由器中實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互為例,對其具體的實(shí)現(xiàn)過程進(jìn)行說明,實(shí)際應(yīng)用中并不進(jìn)行限于在3G路由器上實(shí)現(xiàn)該功能,對于其它具有網(wǎng)絡(luò)傳輸能力以及串口連接功能的設(shè)備同樣適用。網(wǎng)絡(luò)與串口數(shù)據(jù)交互的功能實(shí)現(xiàn)在3G路由器的應(yīng)用層中軟件實(shí)現(xiàn),主要設(shè)計(jì)思想為:將串行連接的各運(yùn)行階段抽象為狀態(tài),將串行連接進(jìn)行不同階段的處理用狀態(tài)機(jī)動作描述,以及將串行連接的不同階段的遷移條件抽象為消息描述。通過運(yùn)行狀態(tài)機(jī)完成相應(yīng)的處理流程,如附圖6所示為系統(tǒng)應(yīng)用層軟件流程設(shè)計(jì)框架,下行串口事務(wù)處理模塊處理串行端口側(cè)數(shù)據(jù)的收發(fā)事件以及異常事件,上行網(wǎng)絡(luò)端事務(wù)處理模塊處理網(wǎng)絡(luò)側(cè)數(shù)據(jù)的收發(fā)事件以及異常事件、串行連接事務(wù)處理模塊通過處理器事件控制串行端口和網(wǎng)絡(luò)端口的開啟以及對下行串口事務(wù)處理模塊和上行網(wǎng)絡(luò)端事務(wù)處理模塊進(jìn)行統(tǒng)一管理。串行連接事務(wù)處理模塊、下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊之間的聯(lián)動關(guān)系如附圖7所示,系統(tǒng)軟件通過消息隊(duì)列的發(fā)送和接收完成狀態(tài)機(jī)運(yùn)轉(zhuǎn)的管理流程。串行連接事務(wù)處理模塊根據(jù)用戶開啟和關(guān)閉協(xié)議轉(zhuǎn)換功能的消息,先后分別向下行串口事務(wù)處理模塊和上行網(wǎng)絡(luò)端事務(wù)處理模塊發(fā)送開啟消息,當(dāng)串行端口打開成功,串行連接事務(wù)處理模塊處于半連接狀態(tài),在網(wǎng)絡(luò)端口打開成功后,串行連接事務(wù)處理模塊處于全連接狀態(tài),此時(shí)會定時(shí)向串行端口和網(wǎng)絡(luò)端口發(fā)送定時(shí)器消息以檢測串行端口和網(wǎng)絡(luò)的會話是否正常,起到維護(hù)會話連接的作用。下行串口事務(wù)處理模塊根據(jù)串行連接事務(wù)處理模塊狀態(tài)機(jī)變化時(shí)通知的消息動態(tài)更新自己的狀態(tài)機(jī),在各狀態(tài)下處理串行端口的收發(fā)事件和異常事件,同時(shí)通知串行連接事務(wù)處理模塊和上行網(wǎng)絡(luò)端事務(wù)處理模塊,以使相關(guān)狀態(tài)信息達(dá)到同步。上行網(wǎng)絡(luò)端事務(wù)處理模塊根據(jù)串行連接事務(wù)處理模塊狀態(tài)機(jī)變化時(shí)通知的事件動態(tài)更新自己的狀態(tài)機(jī),在各狀態(tài)下處理各工作模式下會話的連接、關(guān)閉、網(wǎng)絡(luò)報(bào)文的收發(fā)及異常事件。具體地,下行串口事務(wù)處理模塊及上行網(wǎng)絡(luò)端事務(wù)處理模塊分別監(jiān)測串行端口和網(wǎng)絡(luò)端口的數(shù)據(jù)收發(fā),在串行端口有待讀取的數(shù)據(jù)時(shí),讀取串行端口的數(shù)據(jù)并放入緩存,將緩存中存放的從串行端口獲取的數(shù)據(jù)轉(zhuǎn)換為網(wǎng)絡(luò)端口數(shù)據(jù)傳輸格式后寫入網(wǎng)絡(luò)端口。或者,在網(wǎng)絡(luò)端口有待讀取的數(shù)據(jù)時(shí),讀取網(wǎng)絡(luò)端口的數(shù)據(jù)并放入緩存,將緩存中存放的從網(wǎng)絡(luò)端口獲取的數(shù)據(jù)轉(zhuǎn)換為串行端口數(shù)據(jù)傳輸格式后寫入串行端口。在數(shù)據(jù)收發(fā)完成后,繼續(xù)監(jiān)控網(wǎng)絡(luò)端口和串行端口是否有待讀取的數(shù)據(jù)。基于該狀態(tài)機(jī)設(shè)計(jì)的思想,串行連接事務(wù)處理模塊的狀態(tài)機(jī)變化如附圖8所示,狀態(tài)機(jī)具體變化過程如下:串行連接事務(wù)處理模塊在接收到串行端口和網(wǎng)絡(luò)端口數(shù)據(jù)轉(zhuǎn)換功能開啟的消息后,從關(guān)閉狀態(tài)轉(zhuǎn)為初始狀態(tài);串行連接事務(wù)處理模塊在初始狀態(tài)下向串行端口發(fā)送開啟消息,在串行端口開啟后,從初始狀態(tài)轉(zhuǎn)換為半啟動狀態(tài);串行連接事務(wù)處理模塊在半啟動狀態(tài)下向網(wǎng)絡(luò)端口發(fā)送開啟消息,在網(wǎng)絡(luò)端口開啟后,從半啟動狀態(tài)轉(zhuǎn)換為啟動狀態(tài);以及在半啟動狀態(tài)定時(shí)檢測確定串行端口的會話連接異常時(shí),從半啟動狀態(tài)轉(zhuǎn)換為初始狀態(tài);串行連接事務(wù)處理模塊在啟動狀態(tài)下定時(shí)向串行端口和網(wǎng)絡(luò)端口發(fā)送用于檢測會話連接狀態(tài)的消息,并在接收到串行端口和/或網(wǎng)絡(luò)端口返回的攜帶會話連接狀態(tài)的反饋消息后轉(zhuǎn)為數(shù)據(jù)處理狀態(tài),在數(shù)據(jù)處理狀態(tài)下處理該反饋消息,將串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)通知下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊后返回啟動狀態(tài);以及在啟動狀態(tài)下接收到串行端口和/或網(wǎng)絡(luò)端口異常的消息后轉(zhuǎn)為異常處理狀態(tài),在異常處理狀態(tài)下強(qiáng)行轉(zhuǎn)為初始狀態(tài);串行連接事務(wù)處理模塊在數(shù)據(jù)處理狀態(tài)或異常處理狀態(tài)下接收到串行端口和網(wǎng)絡(luò)端口數(shù)據(jù)轉(zhuǎn)換功能關(guān)閉的消息時(shí),轉(zhuǎn)為關(guān)閉狀態(tài)。下行串口事務(wù)處理模塊的狀態(tài)機(jī)變化如附圖9所示,狀態(tài)機(jī)具體變化過程如下:下行串口事務(wù)處理模塊在關(guān)閉狀態(tài)下接收到串行端口和網(wǎng)絡(luò)端口數(shù)據(jù)轉(zhuǎn)換功能開啟的消息后,轉(zhuǎn)為初始狀態(tài);下行串口事務(wù)處理模塊在初始狀態(tài)下接收串行連接事務(wù)處理模塊發(fā)送的攜帶串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)的通知,根據(jù)該通知確定串行端口開啟后轉(zhuǎn)為啟動狀態(tài);下行串口事務(wù)處理模塊在啟動狀態(tài)下接收串行連接事務(wù)處理模塊發(fā)送的攜帶串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)的通知,根據(jù)該通知確定串行端口未開啟后轉(zhuǎn)為初始狀態(tài);以及在啟動狀態(tài)下監(jiān)測串行端口為讀事件時(shí)轉(zhuǎn)為讀狀態(tài),讀取串行端口的數(shù)據(jù)并保存至緩存,并在讀取完畢后轉(zhuǎn)為啟動狀態(tài);以及在啟動狀態(tài)下監(jiān)測串行端口為寫事件時(shí)轉(zhuǎn)為寫狀態(tài),在緩存中有從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀時(shí),從緩存中獲取從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流寫入串行端口發(fā)送,并在寫入完畢后轉(zhuǎn)換為啟動狀態(tài);下行串口事務(wù)處理模塊在讀狀態(tài)下讀取串行端口的數(shù)據(jù)失敗時(shí),轉(zhuǎn)為錯(cuò)誤狀態(tài);以及在寫狀態(tài)下向串行端口寫入數(shù)據(jù)失敗時(shí),轉(zhuǎn)換為錯(cuò)誤狀態(tài);下行串口事務(wù)處理模塊在錯(cuò)誤狀態(tài)下檢測串行端口無錯(cuò)誤時(shí),轉(zhuǎn)為啟動狀態(tài)。上行網(wǎng)絡(luò)端事務(wù)處理模塊的狀態(tài)機(jī)變化如附圖10所示,狀態(tài)機(jī)具體變化過程如下:上行網(wǎng)絡(luò)端事務(wù)處理模塊在關(guān)閉狀態(tài)下接收到串行端口和網(wǎng)絡(luò)端口數(shù)據(jù)轉(zhuǎn)換功能開啟的消息后,轉(zhuǎn)為初始狀態(tài);上行網(wǎng)絡(luò)端事務(wù)處理模塊在初始狀態(tài)下接收串行連接事務(wù)處理模塊發(fā)送的攜帶串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)的通知,根據(jù)該通知確定串行端口及網(wǎng)絡(luò)端口開啟后轉(zhuǎn)為第一啟動狀態(tài);上行網(wǎng)絡(luò)端事務(wù)處理模塊在第一啟動狀態(tài)下接收到串行端口和網(wǎng)絡(luò)端口數(shù)據(jù)轉(zhuǎn)換功能關(guān)閉的消息后轉(zhuǎn)為關(guān)閉狀態(tài);以及在第一啟動狀態(tài)下檢測會話連接的數(shù)目,若會話連接數(shù)目增加,則轉(zhuǎn)為會話連接增加狀態(tài);上行網(wǎng)絡(luò)端事務(wù)處理模塊在會話連接增加狀態(tài)下確定會話連接的數(shù)目大于零時(shí),轉(zhuǎn)為第二啟動狀態(tài),并在第二啟動狀態(tài)下檢測會話連接數(shù)目增加時(shí),轉(zhuǎn)為會話連接增加狀態(tài);以及在第二啟動狀態(tài)下檢測會話連接數(shù)目減少時(shí),轉(zhuǎn)為會話連接減少狀態(tài);上行網(wǎng)絡(luò)端事務(wù)處理模塊在會話連接減少狀態(tài)下若檢測到會話連接數(shù)目大于零時(shí)轉(zhuǎn)為第二啟動狀態(tài),若檢測到會話連接數(shù)目減少到零轉(zhuǎn)為第一啟動狀態(tài);上行網(wǎng)絡(luò)端事務(wù)處理模塊在第二啟動狀態(tài)下監(jiān)測網(wǎng)絡(luò)端口有待讀取的數(shù)據(jù)幀時(shí)轉(zhuǎn)為讀狀態(tài),在讀狀態(tài)下讀取網(wǎng)絡(luò)端口的的數(shù)據(jù)幀并保存至緩存,并在讀取完畢后轉(zhuǎn)為第二啟動狀態(tài);以及在第二啟動狀態(tài)下監(jiān)測緩存中有從串行端口接收的串行數(shù)據(jù)流時(shí)轉(zhuǎn)為寫狀態(tài),在寫狀態(tài)下從緩存中獲取從串行端口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀寫入網(wǎng)絡(luò)端口發(fā)送,并在寫入完畢后轉(zhuǎn)換為第二啟動狀態(tài);以及在第二啟動狀態(tài)下檢測到網(wǎng)絡(luò)端口連接異常時(shí)轉(zhuǎn)入錯(cuò)誤狀態(tài);上行網(wǎng)絡(luò)端事務(wù)處理模塊在錯(cuò)誤狀態(tài)下檢測網(wǎng)絡(luò)端口連接恢復(fù)正常時(shí)轉(zhuǎn)入第二啟動狀態(tài);以及在錯(cuò)誤狀態(tài)下檢測網(wǎng)絡(luò)端口連接恢復(fù)失敗時(shí)轉(zhuǎn)入會話連接減少狀態(tài)。該具體實(shí)施例中,3G路由器驅(qū)動層在進(jìn)行軟件設(shè)計(jì)時(shí),分為串行端口的數(shù)據(jù)接收流程和數(shù)據(jù)發(fā)送流程,數(shù)據(jù)接收流程具體描述為:硬件相關(guān)驅(qū)動程序根據(jù)中斷、輪詢、直接內(nèi)存存取(DMA)等方式將硬件先入先出隊(duì)列(FIFO)中的數(shù)據(jù)讀取到讀緩存隊(duì)列(read_buf_.head)中,然后通過工作隊(duì)列調(diào)度對讀取的數(shù)據(jù)進(jìn)行處理后存入讀緩存(reacLbuf)中,然后喚醒讀等待隊(duì)列通知上層應(yīng)用程序?qū)?shù)據(jù)從讀緩存中讀取到應(yīng)用層的緩存中。數(shù)據(jù)發(fā)送流程具體描述為:應(yīng)用層通過寫函數(shù)調(diào)用待寫入串行端口的數(shù)據(jù),喚醒寫等待隊(duì)列的同時(shí)將數(shù)據(jù)寫入應(yīng)用層的寫緩存(write_buf)中,然后將應(yīng)用層寫緩存中的數(shù)據(jù)讀取到硬件相關(guān)層的寫緩存(inf0.xmit.buf)中,硬件相關(guān)驅(qū)動程序中的寫函數(shù)依據(jù)中斷、輪詢、DMA等方式將寫緩存中的數(shù)據(jù)寫入串行端口芯片的FIFO中。串行端口與網(wǎng)絡(luò)端口的數(shù)據(jù)交互,并不是簡單物理層和數(shù)據(jù)鏈路層的轉(zhuǎn)化,由于串口協(xié)議本身不具有網(wǎng)絡(luò)層和傳輸層,因此實(shí)際是將串口的數(shù)據(jù)采用傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議(TCP/IP)協(xié)議對應(yīng)的格式進(jìn)行封裝并傳輸,例如通過socket函數(shù)接收和發(fā)送的數(shù)據(jù)實(shí)際為應(yīng)用層的數(shù)據(jù)。該具體實(shí)施例中,系統(tǒng)中串行端口與網(wǎng)絡(luò)端口數(shù)據(jù)交互功能的實(shí)現(xiàn)框架如附圖11所示,上行網(wǎng)絡(luò)端事務(wù)處理模塊、下行串口事務(wù)處理模塊分別建立進(jìn)程進(jìn)行處理,上行網(wǎng)絡(luò)端事務(wù)處理模塊主要是接收網(wǎng)絡(luò)側(cè)的數(shù)據(jù)并通知下行串口事務(wù)處理模塊發(fā)送接收到的網(wǎng)絡(luò)側(cè)的數(shù)據(jù);串行端口從下掛設(shè)備中讀取數(shù)據(jù)后經(jīng)由下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊發(fā)送給網(wǎng)絡(luò)端。該具體實(shí)施例中,將上行網(wǎng)絡(luò)端事務(wù)處理模塊簡稱為上行口,將下行串口事務(wù)處理模塊簡稱為下行口。設(shè)備的串行端口數(shù)決定了串行連接的數(shù)目,在系統(tǒng)啟動后啟動一個(gè)串行連接,其初始狀態(tài)為未連接狀態(tài),每個(gè)串行連接包含一個(gè)上行口和一個(gè)下行口,其中,上行口是面向IP網(wǎng)絡(luò)的邏輯接口,根據(jù)配置的模式可以包含多個(gè)會話;下行口是面向串口設(shè)備的邏輯接口,與設(shè)備的一個(gè)串行端口綁定,會話可視為socket連接,當(dāng)下行口綁定的串行端口正常工作時(shí),該下行口處于開啟狀態(tài),其所屬的串行連接處于半連接狀態(tài),當(dāng)上行口包含不小于I條會話時(shí),該上行口處于開啟狀態(tài),其所屬的串行連接處于全連接狀態(tài),就可以正常處理數(shù)據(jù)了。網(wǎng)絡(luò)端口工作模式的鉤子函數(shù)掛載在上行口線程,通過工作模式的鉤子函數(shù)實(shí)現(xiàn)與系統(tǒng)內(nèi)核的通信,為不同應(yīng)用場景下的網(wǎng)絡(luò)端口提供相應(yīng)的數(shù)據(jù)處理方式。該具體實(shí)施例中,針對不同的應(yīng)用場景下的網(wǎng)絡(luò)端口設(shè)置不同的工作模式,該工作模式包括=TCP-Client模式、TCP-Server模式、UDP模式、Real-port模式、Reverse-telnet模式以及RFC2217模式。不同的工作模式之間可以互相切換。通過不同的工作模式實(shí)現(xiàn)串口設(shè)備與網(wǎng)絡(luò)(以太網(wǎng)和3G網(wǎng)絡(luò))之間數(shù)據(jù)的透明傳輸。一般在IP網(wǎng)絡(luò)的數(shù)據(jù)傳輸采用TCP協(xié)議和UDP協(xié)議兩種,其中UDP是不面向連接的、不可靠的、無序的、面向數(shù)據(jù)包的傳輸協(xié)議,TCP是面向連接的、可靠的、有序的、面向字節(jié)流的傳輸協(xié)議。其中,TCP-Client工作模式下是將網(wǎng)絡(luò)端口作為采用TCP協(xié)議的客戶端JCP-Server工作模式是將網(wǎng)絡(luò)端口作為采用TCP協(xié)議的服務(wù)端;UDP工作模式是將網(wǎng)絡(luò)端口作為采用UDP協(xié)議的客戶端或服務(wù)端。TCP-Client、TCP-SerVer、UDP工作模式是將網(wǎng)絡(luò)端口作為相應(yīng)工作模式下的通信角色,對外提供socket接口,實(shí)現(xiàn)數(shù)據(jù)交互。在Real-port模式下,為了解決部分具備網(wǎng)絡(luò)端口的設(shè)備(如個(gè)人電腦PC)沒有硬件串口無法連接調(diào)試設(shè)備的難題,將串口設(shè)備的串行端口映射成PC上的虛擬串口,使用創(chuàng)建的虛擬串口可以直接應(yīng)用原有串口設(shè)備上的軟件或通信模塊。數(shù)據(jù)交互過程如附圖12所示,作為客戶端的PC與路由器建立連接后,將需要發(fā)送的串口命令以及數(shù)據(jù)封裝在網(wǎng)絡(luò)數(shù)據(jù)包中,通過網(wǎng)絡(luò)發(fā)送給路由器,由路由器通過其內(nèi)部協(xié)議進(jìn)行解析后,將解析后的串口命令以及數(shù)據(jù)重新封裝為串行數(shù)據(jù)流發(fā)送給串口設(shè)備,實(shí)現(xiàn)虛擬串口數(shù)據(jù)轉(zhuǎn)換服務(wù)。虛擬串口是在TCP協(xié)議之前增加私有的報(bào)文頭,虛擬串口與PC間傳輸?shù)臄?shù)據(jù)包括報(bào)文頭和數(shù)據(jù)體,其中報(bào)文頭部分占4字節(jié),具體結(jié)構(gòu)如附圖13所示,報(bào)文頭由起始碼、協(xié)議版本號、功能碼、當(dāng)前數(shù)據(jù)包長度以及保留比特位組成。具體地,起始碼占4比特、協(xié)議版本號占4比特、功能碼占4比特、當(dāng)前數(shù)據(jù)包長度占6比特、保留比特位為4比特。其中,功能碼可以用于數(shù)據(jù)、心跳、串口參數(shù)同步、流控通知、設(shè)備流控狀態(tài)等功能,尤其是可以針對異常中斷處理、流控作出響應(yīng)。網(wǎng)絡(luò)端口在Reverse-telnet模式下作為標(biāo)準(zhǔn)的telnet服務(wù)器使用,并且可以處理協(xié)議規(guī)定的特殊字符,一般用于連接路由器或者交換機(jī)的網(wǎng)絡(luò)端口,與虛擬串口類似,通過在TCP報(bào)文中添加telnet協(xié)議字段部分,實(shí)現(xiàn)通過telnet管理串口設(shè)備。數(shù)據(jù)交互過程為:作為客戶端的PC將需要發(fā)送的遠(yuǎn)程登錄(telnet)數(shù)據(jù)通過網(wǎng)絡(luò)發(fā)送給路由器,由路由器通過其內(nèi)部的協(xié)議軟件進(jìn)行解析后,再將解析后的telnet數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)流發(fā)送給串口設(shè)備,從而實(shí)現(xiàn)telnet數(shù)據(jù)轉(zhuǎn)換服務(wù)。Reverse-telnet模式下網(wǎng)絡(luò)端口傳輸?shù)膱?bào)文的報(bào)文頭由3個(gè)字節(jié)組成,如附圖14所示,報(bào)文頭3個(gè)字節(jié)的組合有以下幾種:telnte命令起始位IAC (取值為255)+發(fā)送端指示接收端激活選項(xiàng)TNDO (取值為253)+回顯功能TN_ECH0 (取值為l),telnte命令起始位IAC (取值為255)+發(fā)送端指示接收端激活選項(xiàng)TNDO (取值為253)+窗口控制選項(xiàng)TN_NAWS(取值為31),telnte命令起始位IAC (取值為255) +發(fā)送端指示接收端禁止選項(xiàng)TNDONT(取值為254)+串口流控選項(xiàng)TN_LFL0W (取值為33),telnte命令起始位IAC (取值為255)+發(fā)送端自身激活選項(xiàng)TNWILL (取值為251)+回顯功能TN_ECH0 (取值為1),telnte命令起始位IAC (取值為255)+發(fā)送端自身激活選項(xiàng)TNWILL (取值為251)+發(fā)送端激活字符發(fā)送選項(xiàng)TN_SGA (取值為3)。通過該方案,系統(tǒng)管理員可以通過在客戶端與遠(yuǎn)程設(shè)備之間建立會話,遠(yuǎn)程登錄到?jīng)]有直接連在Ethernet網(wǎng)絡(luò)上的計(jì)算機(jī)或設(shè)備,用戶體驗(yàn)類似于標(biāo)準(zhǔn)telnet方式,對計(jì)算機(jī)或設(shè)備進(jìn)行遠(yuǎn)程配置與檢測。RFC2217模式則是基于telnet協(xié)議增加了通用串口控制選項(xiàng),按照通用請求注解(RFC)標(biāo)準(zhǔn)協(xié)議實(shí)現(xiàn)。該模式下的控制報(bào)文字符串可以用于設(shè)置波特率、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位、流控,具體的控制報(bào)文字符串如附圖15所示,由起始標(biāo)志、串口控制選項(xiàng)配置命令(com-port-option)、串口配置選項(xiàng)(Signature)、串口配置選項(xiàng)設(shè)置值(〈text〉)以及結(jié)束標(biāo)志組成,其中起始標(biāo)志由telnet命令起始位IAC以及字符起始標(biāo)志位Sb組成,結(jié)束標(biāo)志由telnet命令起始位IAC以及結(jié)束標(biāo)志位Se組成。其中,Signature部分在設(shè)置波特率(set-baud)時(shí)為4字節(jié),在設(shè)置數(shù)據(jù)位(set-datasize)時(shí)為I字節(jié),在設(shè)置奇偶校驗(yàn)位(set-parity)時(shí)為I字節(jié),在設(shè)置停止位(set-stopsize)時(shí)為4字節(jié),在設(shè)置流控(set-control)時(shí)為I字節(jié)。通過該方案,在反向telnet的基礎(chǔ)上增加針對串口參數(shù)配置的功能,可以實(shí)現(xiàn)在對計(jì)算機(jī)或設(shè)備進(jìn)行遠(yuǎn)程管理的基礎(chǔ)上,還可以對設(shè)備串口參數(shù)進(jìn)行相應(yīng)的配置與管理。
基于上述技術(shù)方案,本發(fā)明實(shí)施例中,通過串行連接事務(wù)處理模塊向串行端口和網(wǎng)絡(luò)端口發(fā)送開啟消息,并將串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)通知下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊,由下行串口事務(wù)處理模塊監(jiān)測串行端口的數(shù)據(jù)接收,在串行端口有串行數(shù)據(jù)流到來時(shí),獲取該串行數(shù)據(jù)流并保存至緩存,以及在緩存中有從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀時(shí),從該緩存中獲取從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流通過串行端口發(fā)送;以及由上行網(wǎng)絡(luò)端事務(wù)處理模塊監(jiān)測網(wǎng)絡(luò)端口的數(shù)據(jù)接收,在網(wǎng)絡(luò)端口有數(shù)據(jù)幀到來時(shí),獲取該數(shù)據(jù)幀并保存至緩存,以及在緩存中有從串行接口接收的串行數(shù)據(jù)流時(shí),從該緩存中獲取從串行接口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀通過網(wǎng)絡(luò)端口發(fā)送,從而實(shí)現(xiàn)了網(wǎng)絡(luò)與串口數(shù)據(jù)的交互。并且,通過采用狀態(tài)機(jī)的設(shè)計(jì)方式將串行連接的運(yùn)行階段抽象為不同的狀態(tài),將串行連接進(jìn)入不同階段的處理用狀態(tài)機(jī)動作描述,將串行連接的不同階段的遷移條件抽象為消息描述,通過更新狀態(tài)機(jī)的方式實(shí)現(xiàn)數(shù)據(jù)處理過程,可以有效降低系統(tǒng)設(shè)備實(shí)現(xiàn)的難度,提聞系統(tǒng)的穩(wěn)定性。同時(shí),通過將串口與網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)換的功能集成在3G路由器中,實(shí)現(xiàn)了 3G無線網(wǎng)絡(luò)以及以太網(wǎng)與串口設(shè)備之間的信息交互。另外,通過設(shè)置多種工作模式,使得串口與網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)換可以應(yīng)用于不同的場景,拓展了設(shè)備的使用范圍。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的方法,其特征在于,包括: 串行連接事務(wù)處理模塊分別向串行端口和網(wǎng)絡(luò)端口發(fā)送開啟消息,并在所述串行端口和所述網(wǎng)絡(luò)端口開啟后,定時(shí)檢測串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)并通知下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊; 下行串口事務(wù)處理模塊根據(jù)所述串行連接事務(wù)處理模塊的通知確定所述串行端口和所述網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測串行端口的數(shù)據(jù)接收,在串行端口有串行數(shù)據(jù)流到來時(shí),獲取該串行數(shù)據(jù)流并保存至緩存;以及在所述緩存中有從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀時(shí),從所述緩存中獲取所述從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流通過串行端口發(fā)送; 上行網(wǎng)絡(luò)端事務(wù)處理模塊根據(jù)所述串行連接事務(wù)處理模塊的通知確定所述串行端口和所述網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測網(wǎng)絡(luò)端口的數(shù)據(jù)接收,在網(wǎng)絡(luò)端口有數(shù)據(jù)幀到來時(shí),獲取該數(shù)據(jù)幀并保存至緩存;以及在所述緩存中有從串行接口接收的串行數(shù)據(jù)流時(shí),從所述緩存中獲取所述從串行接口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀通過網(wǎng)絡(luò)端口發(fā)送。
2.按權(quán)利要求1所述的方法,其特征在于,串行連接事務(wù)處理模塊分別向串行端口和網(wǎng)絡(luò)端口發(fā)送開啟消息,并在所述串行端口和所述網(wǎng)絡(luò)端口開啟后,定時(shí)檢測串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)并通知下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊,具體包括: 串行連接事務(wù)處理模塊在接收到串行端口和網(wǎng)絡(luò)端口數(shù)據(jù)轉(zhuǎn)換功能開啟的消息后,從關(guān)閉狀態(tài)轉(zhuǎn)為初始狀態(tài); 串行連接事務(wù)處理 模塊在初始狀態(tài)下向串行端口發(fā)送開啟消息,在所述串行端口開啟后,從初始狀態(tài)轉(zhuǎn)換為半啟動狀態(tài); 串行連接事務(wù)處理模塊在半啟動狀態(tài)下向網(wǎng)絡(luò)端口發(fā)送開啟消息,在所述網(wǎng)絡(luò)端口開啟后,從半啟動狀態(tài)轉(zhuǎn)換為啟動狀態(tài);以及在半啟動狀態(tài)定時(shí)檢測確定所述串彳丁端口的會話連接異常時(shí),從半啟動狀態(tài)轉(zhuǎn)換為初始狀態(tài); 串行連接事務(wù)處理模塊在啟動狀態(tài)下定時(shí)向串行端口和網(wǎng)絡(luò)端口發(fā)送用戶檢測會話連接狀態(tài)的消息,并在接收到串行端口和/或網(wǎng)絡(luò)端口返回的攜帶會話連接狀態(tài)的反饋消息后轉(zhuǎn)為數(shù)據(jù)處理狀態(tài),在數(shù)據(jù)處理狀態(tài)下處理所述反饋消息,將串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)通知下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊后返回啟動狀態(tài);以及在啟動狀態(tài)下接收到串行端口和/或網(wǎng)絡(luò)端口異常的消息后轉(zhuǎn)為異常處理狀態(tài),在異常處理狀態(tài)下強(qiáng)行轉(zhuǎn)為初始狀態(tài); 串行連接事務(wù)處理模塊在數(shù)據(jù)處理狀態(tài)或異常處理狀態(tài)下接收到串行端口和網(wǎng)絡(luò)端口數(shù)據(jù)轉(zhuǎn)換功能關(guān)閉的消息時(shí),轉(zhuǎn)為關(guān)閉狀態(tài)。
3.按權(quán)利要求1所述的方法,其特征在于,下行串口事務(wù)處理模塊根據(jù)所述串行連接事務(wù)處理模塊的通知確定所述串行端口和所述網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測串行端口的數(shù)據(jù)接收,在串行端口有串行數(shù)據(jù)流到來時(shí),獲取該串行數(shù)據(jù)流并保存至緩存;以及在所述緩存中有從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀時(shí),從所述緩存中獲取所述從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流通過串行端口發(fā)送,具體包括: 下行串口事務(wù)處理模塊在關(guān)閉狀態(tài)下接收到串行端口和網(wǎng)絡(luò)端口數(shù)據(jù)轉(zhuǎn)換功能開啟的消息后,轉(zhuǎn)為初始狀態(tài); 下行串口事務(wù)處理模塊在初始狀態(tài)下接收串行連接事務(wù)處理模塊發(fā)送的攜帶串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)的通知,根據(jù)所述通知確定所述串行端口開啟后轉(zhuǎn)為啟動狀態(tài); 下行串口事務(wù)處 理模塊在啟動狀態(tài)下接收串行連接事務(wù)處理模塊發(fā)送的攜帶串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)的通知,根據(jù)所述通知確定所述串行端口未開啟后轉(zhuǎn)為初始狀態(tài);以及在啟動狀態(tài)下監(jiān)測串行端口為讀事件時(shí)轉(zhuǎn)為讀狀態(tài),讀取串行端口的數(shù)據(jù)并保存至緩存,并在讀取完畢后轉(zhuǎn)為啟動狀態(tài);以及在啟動狀態(tài)下監(jiān)測串行端口為寫事件時(shí)轉(zhuǎn)為寫狀態(tài),在緩存中有從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀時(shí),從緩存中獲取從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流寫入串行端口發(fā)送,并在寫入完畢后轉(zhuǎn)換為啟動狀態(tài); 下行串口事務(wù)處理模塊在讀狀態(tài)下讀取串行端口的數(shù)據(jù)失敗時(shí),轉(zhuǎn)為錯(cuò)誤狀態(tài);以及在寫狀態(tài)下向串行端口寫入數(shù)據(jù)失敗時(shí),轉(zhuǎn)換為錯(cuò)誤狀態(tài); 下行串口事務(wù)處理模塊在錯(cuò)誤狀態(tài)下檢測串行端口無錯(cuò)誤時(shí),轉(zhuǎn)為啟動狀態(tài)。
4.按權(quán)利要求1所述的方法,其特征在于,上行網(wǎng)絡(luò)端事務(wù)處理模塊根據(jù)所述串行連接事務(wù)處理模塊的通知確定所述串行端口和所述網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測網(wǎng)絡(luò)端口的數(shù)據(jù)接收,在網(wǎng)絡(luò)端口有數(shù)據(jù)幀到來時(shí),獲取該數(shù)據(jù)幀并保存至緩存;以及在所述緩存中有從串行接口接收的串行數(shù)據(jù)流時(shí),從所述緩存中獲取所述從串行接口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀通過網(wǎng)絡(luò)端口發(fā)送,具體包括: 上行網(wǎng)絡(luò)端事務(wù)處理模塊在關(guān)閉狀態(tài)下接收到串行端口和網(wǎng)絡(luò)端口數(shù)據(jù)轉(zhuǎn)換功能開啟的消息后,轉(zhuǎn)為初始狀態(tài); 上行網(wǎng)絡(luò)端事務(wù)處理模塊在初始狀態(tài)下接收串行連接事務(wù)處理模塊發(fā)送的攜帶串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)的通知,根據(jù)所述通知確定所述串行端口及所述網(wǎng)絡(luò)端口開啟后轉(zhuǎn)為第一啟動狀態(tài); 上行網(wǎng)絡(luò)端事務(wù)處理模塊在第一啟動狀態(tài)下接收到串行端口和網(wǎng)絡(luò)端口數(shù)據(jù)轉(zhuǎn)換功能關(guān)閉的消息后轉(zhuǎn)為關(guān)閉狀態(tài);以及在第一啟動狀態(tài)下檢測會話連接的數(shù)目,若會話連接數(shù)目增加,則轉(zhuǎn)為會話連接增加狀態(tài); 上行網(wǎng)絡(luò)端事務(wù)處理模塊在會話連接增加狀態(tài)下確定會話連接的數(shù)據(jù)大于零時(shí),轉(zhuǎn)為第二啟動狀態(tài),并在第二啟動狀態(tài)下檢測會話連接數(shù)目增加時(shí),轉(zhuǎn)為會話連接增加狀態(tài);以及在第二啟動狀態(tài)下檢測會話連接數(shù)目減少時(shí),轉(zhuǎn)為會話連接減少狀態(tài); 上行網(wǎng)絡(luò)端事務(wù)處理模塊在會話連接減少狀態(tài)下若檢測到會話連接數(shù)目大于零時(shí)轉(zhuǎn)為第二啟動狀態(tài),若檢測到會話連接數(shù)目減少到零轉(zhuǎn)為第一啟動狀態(tài); 上行網(wǎng)絡(luò)端事務(wù)處理模塊在第二啟動狀態(tài)下監(jiān)測網(wǎng)絡(luò)端口有待讀取的數(shù)據(jù)幀時(shí)轉(zhuǎn)為讀狀態(tài),在讀狀態(tài)下讀取網(wǎng)絡(luò)端口的的數(shù)據(jù)幀并保存至緩存,并在讀取完畢后轉(zhuǎn)為第二啟動狀態(tài);以及在第二啟動狀態(tài)下監(jiān)測緩存中有從串行端口接收的串行數(shù)據(jù)流時(shí)轉(zhuǎn)為寫狀態(tài),在寫狀態(tài)下從緩存中獲取從串行端口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀寫入網(wǎng)絡(luò)端口發(fā)送,并在寫入完畢后轉(zhuǎn)換為第二啟動狀態(tài);以及在第二啟動狀態(tài)下檢測到網(wǎng)絡(luò)端口連接異常時(shí)轉(zhuǎn)入錯(cuò)誤狀態(tài); 上行網(wǎng)絡(luò)端事務(wù)處理模塊在錯(cuò)誤狀態(tài)下檢測網(wǎng)絡(luò)端口連接恢復(fù)正常時(shí)轉(zhuǎn)入第二啟動狀態(tài);以及在錯(cuò)誤狀態(tài)下檢測網(wǎng)絡(luò)端口連接恢復(fù)失敗時(shí)轉(zhuǎn)入會話連接減少狀態(tài)。
5.按權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,還包括:所述網(wǎng)絡(luò)端口針對不同的應(yīng)用場景設(shè)置不同的工作模式,所述工作模式包括:傳輸控制協(xié)議-客戶端TCP-Client模式、傳輸控制協(xié)議-服務(wù)器TCP-Server模式、用戶數(shù)據(jù)報(bào)協(xié)議UDP模式、虛擬串口Real-port模式、反向_遠(yuǎn)程登錄Reverse-telnet模式以及請求注解RFC2217模式。
6.按權(quán)利要求5所述的方法,其特征在于,所述網(wǎng)絡(luò)端口工作于Real-port模式下時(shí),所述網(wǎng)絡(luò)端口傳輸?shù)膱?bào)文頭由起始碼、協(xié)議版本號、功能碼、當(dāng)前數(shù)據(jù)包長度以及保留比特位組成。
7.按權(quán)利要求5所述的方法,其特征在于,所述網(wǎng)絡(luò)端口工作于Reverse-telnet模式下時(shí),所述網(wǎng)絡(luò)端口傳輸?shù)膱?bào)文頭由3個(gè)字節(jié)組成。
8.按權(quán)利要求5所述的方法,其特征在于,所述網(wǎng)絡(luò)端口工作于RFC2217模式下時(shí),所述網(wǎng)絡(luò)端口傳輸?shù)目刂茍?bào)文字符串由起始標(biāo)志、串行端口控制選項(xiàng)配置命令、串行端口配置選項(xiàng)、串行端口配置選項(xiàng)設(shè)置值以及結(jié)束標(biāo)志組成。
9.一種實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的設(shè)備,其特征在于,包括: 串行連接事務(wù)處理模塊,用于分別向串行端口和網(wǎng)絡(luò)端口發(fā)送開啟消息,并在所述串行端口和所述網(wǎng)絡(luò)端口開啟后,定時(shí)檢測串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)并通知下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊; 下行串口事務(wù)處理模塊,用于根據(jù)所述串行連接事務(wù)處理模塊的通知確定所述串行端口和所述網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測串行端口的數(shù)據(jù)接收,在串行端口有串行數(shù)據(jù)流到來時(shí),獲取該串行數(shù)據(jù)流并保存至緩存;以及用于在所述緩存中有從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀時(shí),從所述緩 存中獲取所述從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流通過串行端口發(fā)送; 上行網(wǎng)絡(luò)端事務(wù)處理模塊,用于根據(jù)所述串行連接事務(wù)處理模塊的通知確定所述串行端口和所述網(wǎng)絡(luò)端口的會話連接正常時(shí),監(jiān)測網(wǎng)絡(luò)端口的數(shù)據(jù)接收,在網(wǎng)絡(luò)端口有數(shù)據(jù)幀到來時(shí),獲取該數(shù)據(jù)幀并保存至緩存;以及在所述緩存中有從串行接口接收的串行數(shù)據(jù)流時(shí),從所述緩存中獲取所述從串行接口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀通過網(wǎng)絡(luò)端口發(fā)送。
10.按權(quán)利要求9所述的設(shè)備,其特征在于,所述設(shè)備為第三代移動通信路由器。
11.一種實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的系統(tǒng),其特征在于,包括:設(shè)有網(wǎng)絡(luò)端口的第一設(shè)備、實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的第二設(shè)備和設(shè)有串行端口的第三設(shè)備,所述第一設(shè)備通過網(wǎng)絡(luò)端口與第二設(shè)備連接,所述第二設(shè)備通過串行端口與所述第三設(shè)備連接; 所述第一設(shè)備,用于將待發(fā)送的串行數(shù)據(jù)流通過虛擬串口轉(zhuǎn)換為數(shù)據(jù)幀,并將轉(zhuǎn)換獲得數(shù)據(jù)幀通過網(wǎng)絡(luò)端口傳輸至所述第二設(shè)備;以及通過網(wǎng)絡(luò)端口接收第二設(shè)備發(fā)送的數(shù)據(jù)幀,并通過虛擬串口將所述數(shù)據(jù)幀轉(zhuǎn)換為串行數(shù)據(jù)流; 所述第二設(shè)備,用于通過網(wǎng)絡(luò)端口接收所述第一設(shè)備發(fā)送的數(shù)據(jù)幀,并將接收的數(shù)據(jù)幀轉(zhuǎn)換為串行數(shù)據(jù)流后通過串行端口發(fā)送至所述第三設(shè)備;以及通過串行端口接收所述第三設(shè)備發(fā)送的串行數(shù)據(jù)流,并將接收的串行數(shù)據(jù)流轉(zhuǎn)換為數(shù)據(jù)幀后發(fā)送給所述第一設(shè)備; 所述第三設(shè)備,用于通過串行端口接收所述第二設(shè)備發(fā)送的串行數(shù)據(jù)流。
12.按權(quán)利要求11所述的系統(tǒng),其特征在于,所述第一設(shè)備與所述第二設(shè)備通過網(wǎng)絡(luò)端口建立連接的方式包括:TCP-Client模式、TCP-Sei'vei'模式、UDP模式、Real-port模式、Reverse-telnet 模式以及 RFC2217 模式。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)交互的方法、設(shè)備及系統(tǒng),實(shí)現(xiàn)網(wǎng)絡(luò)與串口數(shù)據(jù)的交互。具體為串行連接事務(wù)處理模塊定時(shí)檢測串行端口和網(wǎng)絡(luò)端口的會話連接狀態(tài)并通知下行串口事務(wù)處理模塊以及上行網(wǎng)絡(luò)端事務(wù)處理模塊;下行串口事務(wù)處理模塊監(jiān)測串行端口的數(shù)據(jù)接收,在串行端口有串行數(shù)據(jù)流到來時(shí),獲取該串行數(shù)據(jù)流并保存至緩存;以及從緩存中獲取從網(wǎng)絡(luò)端口接收的數(shù)據(jù)幀并轉(zhuǎn)換為串行數(shù)據(jù)流,將轉(zhuǎn)換獲得的串行數(shù)據(jù)流通過串行端口發(fā)送;上行網(wǎng)絡(luò)端事務(wù)處理模塊監(jiān)測網(wǎng)絡(luò)端口的數(shù)據(jù)接收,在網(wǎng)絡(luò)端口有數(shù)據(jù)幀到來時(shí),獲取該數(shù)據(jù)幀并保存至緩存;以及從緩存中獲取從串行接口接收的串行數(shù)據(jù)流并轉(zhuǎn)換為數(shù)據(jù)幀,將轉(zhuǎn)換獲得的數(shù)據(jù)幀通過網(wǎng)絡(luò)端口發(fā)送。
文檔編號H04L29/10GK103095703SQ20131001204
公開日2013年5月8日 申請日期2013年1月11日 優(yōu)先權(quán)日2013年1月11日
發(fā)明者劉銳 申請人:瑞斯康達(dá)科技發(fā)展股份有限公司