專利名稱:基于串行通信的信號深海長距離傳輸方法
技術領域:
本發(fā)明屬于深海長距離傳輸領域,涉及一種基于串行通信的信號在深海中長距離 傳輸的方法。
背景技術:
從上世紀20年代興起的海洋圈地運動開始,全球興起了一股開發(fā)海洋資源的熱 潮。我國的深海資源調查起步較晚,在調查手段的多個技術領域缺乏有效的方法與經驗。 深海傳感器和水下執(zhí)行部件等大量深海設備均從國外引進,深海電子裝置與甲板控制設備 之間通過同軸纜或光纜進行長距離無中繼傳輸,深海電子裝置將采集到的傳感數據和狀態(tài) 信息發(fā)送給甲板控制設備,甲板控制設備實施對深海電子裝置的控制和顯示。隨著這些深 海電子設備類型的增加,保證數據在深海電子裝置與甲板控制設備之間安全可靠傳輸的方 法,已在許多項目中體現出其技術需求性。傳統(tǒng)的深海數據傳輸方法采用如下1.甲板控制設備發(fā)送固定長度的一段查詢數據,然后等待深海電子裝置的應答。2.深海電子裝置接收到查詢數據,進行簡單校驗,然后反饋回甲板控制設備。3.深海電子裝置根據甲板控制設備的反饋來判斷是否要重發(fā)還是發(fā)送結束。上面提到的方法屬于甲板控制設備向深海電子裝置發(fā)送命令/數據的情況,所述 方法主要存在如下不足之處1.甲板控制設備在發(fā)送數據前不知道深海電子裝置的當前狀態(tài),不知是否可以通 信和單次最多能接收的數據量多少。2.缺少事件管理機制,數據發(fā)送完成后需要做些什么事情,數據發(fā)送失敗時要做 些什么事情等都沒有明確。3.缺少傳輸狀態(tài)統(tǒng)計功能,無法統(tǒng)計已經傳輸多少數據,重發(fā)了多少次等。
發(fā)明內容
本發(fā)明的目的是針對現有方法的不足,提供一種基于串行通信的信號深海長距離 傳輸方法,該方法可以實現數據的可靠傳輸和簡便管理,同時可以進行通信監(jiān)控以滿足深 海作業(yè)過程中甲板控制設備與深海電子裝置的高效可靠通信。本發(fā)明的方法主要包含以下步驟步驟(1)甲板控制設備打開串口,使能串口接收,對串口數據流進行分析,從連續(xù) 的數據流中分離各個數據幀,并將各個數據幀保存;步驟(2)甲板控制設備與深海電子裝置建立通信連接(2. 1)甲板控制設備發(fā)送握手信號并啟動重發(fā)定時器。(2. 2)甲板控制設備等待深海電子裝置握手確認信號,如果在定時時間內收到深 海電子裝置的握手確認信號,則執(zhí)行(2. 3),如果在定時時間內未收到深海電子裝置的握手 確認信號,則重發(fā)握手信號。(2.3)甲板控制設備發(fā)送確 信號,同時關閉重發(fā)定時器。
(2.4)甲板控制設備開啟連接定時器。經過上面4個步驟后,通信雙方都可知道初始的通信參數,包括發(fā)送序列號,接收 序列號,接收緩沖區(qū)大小。步驟(3)數據幀發(fā)送(3. 1)向數據發(fā)送緩沖區(qū)填充好本次要發(fā)送的序列號、接收到的序列號、本次最多 可接收的數據量以及本次要發(fā)送的數據。開啟重發(fā)定時器。(3. 2)在重發(fā)定時器定時時間內等待對方應答。如果對方無應答,則重新發(fā)送上面 步驟準備好的數據幀,并記錄重發(fā)次數。如果對方有應答,則跳轉至(3.4);(3. 3)如果重發(fā)次數到達指定的次數時仍未收到對方應答,則通知應用程序“重發(fā) 超時事件”,由應用程序決定如何處理,同時斷開連接。否者繼續(xù)執(zhí)行下面的步驟。(3. 4)更新通信參數,關閉重發(fā)定時器。如果要發(fā)送的數據不能一次發(fā)完,則跳到 步驟(3. 1)繼續(xù)發(fā)送下一個數據幀。(3. 5)通知應用程序發(fā)生了 “數據發(fā)送完成”事件,讓應用程序處理。步驟(4)數據幀接收(4. 1)對接收到的數據幀進行校驗(CRC校驗),如果校驗失敗則丟棄數據幀,校驗 成功則繼續(xù)進行下一步操作。(4. 2)比較接收數據幀的發(fā)送序列號與本地接收序列號是否一致。如果不一致說 明這個數據幀是過去或者未來的數據幀,采取直接丟棄該數據幀的操作方式。如果一致,則 進入下一步。(4. 3)更新通信參數,重置連接定時器。(4. 4)通知應用程序發(fā)生“收到數據事件”,讓應用程序處理接收到的數據。步驟(5)超時處理(5. 1)周期性檢查是否有定時器超時。如果超時進入下一步。(5. 2)判斷超時類型,對不同的超時類型做相應處理如下重發(fā)超時判斷重發(fā)次數是否到達預設的次數,重發(fā)次數沒有到達預設的次數,則 根據當前通信參數重發(fā)數據幀并記錄重發(fā)次數,重發(fā)次數到達預設的次數,則通知應用程 序發(fā)生“重發(fā)超時事件”。連接超時說明通信雙方在預定時間內無數據傳輸,則關閉連接,通知應用程序發(fā) 生“連接超時事件”。本發(fā)明的有益效果通過本發(fā)明方法,甲板控制設備在發(fā)送數據前和在數據發(fā)送 后,能確切知道深海電子裝置的當前狀態(tài),能夠知道在數據發(fā)送成功和失敗后的處理過程, 還可以對已傳輸的數據量進行精確統(tǒng)計。
圖1為本發(fā)明中建立連接流程圖;圖2為本發(fā)明中數據幀發(fā)送連接流程圖;圖3為本發(fā)明中數據幀接收流程圖;圖4為本發(fā)明中超時處理流程圖。
具體實施例方式以下將結合附圖對本發(fā)明作進一步說明?;诖型ㄐ诺男盘柹詈iL距離傳輸方法,包括以下步驟如圖1所示,(1)甲板控制設備打開串口,使能串口接收,對串口數據流進行分析, 從連續(xù)的數據流中分離各個數據幀,并將各個數據幀保存;串口數據的分離采用了以特殊 字符作為幀頭標志和幀尾標志來區(qū)分的方法。(2)甲板控制設備與深海電子裝置建立通信連接(2. 1)甲板控制設備發(fā)送握手信號并啟動重發(fā)定時器。(2. 2)甲板控制設備等待深海電子裝置握手確認信號,如果在定時時間內收到深 海電子裝置的握手確認信號,則執(zhí)行(2. 3),如果在定時時間內未收到深海電子裝置的握手 確認信號,則重發(fā)握手信號。(2.3)甲板控制設備發(fā)送確認信號,同時關閉重發(fā)定時器。(2.4)甲板控制設備開啟連接定時器。經過上面4個步驟后,通信雙方都可知道初始的通信參數,包括發(fā)送序列號,接收 序列號,接收緩沖區(qū)大小。如圖2所示,(3)數據幀發(fā)送,具體方法為(3. 1)向數據發(fā)送緩沖區(qū)填充好本次要發(fā)送的序列號、接收到的序列號、本次最多 可接收的數據量以及本次要發(fā)送的數據。開啟重發(fā)定時器。(3. 2)在重發(fā)定時器定時時間內等待對方應答。如果對方無應答,則重新發(fā)送上面 步驟準備好的數據幀,并記錄重發(fā)次數,重發(fā)次數用以判斷通信鏈路是否保持連通。如果對 方有應答,則跳轉至(3.4);(3. 3)如果重發(fā)次數到達指定的次數時仍未收到對方應答,則通知應用程序“重發(fā) 超時事件”,由應用程序決定如何處理,同時斷開連接。否者繼續(xù)執(zhí)行下面的步驟。重發(fā)次 數一般設置為3 10次。(3.4)更新通信參數(發(fā)送序列號,接收序列號,接收緩沖區(qū)大小),關閉重發(fā)定時 器。如果要發(fā)送的數據不能一次發(fā)完,則跳到步驟(3. 1)繼續(xù)發(fā)送下一個數據幀。(3. 5)通知應用程序發(fā)生了 “數據發(fā)送完成”事件,讓應用程序處理。如圖3所示,(4)數據幀接收,具體方法為(4. 1)對接收到的數據幀進行校驗(CRC校驗),如果校驗失敗則丟棄數據幀,校驗 成功則繼續(xù)進行下一步操作。(4. 2)比較接收數據幀的發(fā)送序列號與本地接收序列號是否一致。如果不一致說 明這個數據幀是過去或者未來的數據幀,采取直接丟棄該數據幀的操作方式。如果一致,則 進入下一步。(4. 3)更新通信參數,重置連接定時器。(4. 4)通知應用程序發(fā)生“收到數據事件”,讓應用程序處理接收到的數據。如圖4所示,(5)超時處理,具體方法為(5. 1)周期性檢查是否有定時器超時。如果超時進入下一步。(5. 2)判斷超時類型,對不同的超時類型做相應處理如下重發(fā)超時判斷重發(fā)次數是否到達預設的次數,重發(fā)次數沒有到達預設的次數,則根據當前通信參數重發(fā)數據幀并記錄重發(fā)次數,重發(fā)次數到達預設的次數,則通知應用程 序發(fā)生“重發(fā)超時事件”。連接超時說明通信雙方在預定時間內無數據傳輸,則關閉連接,通知應用程序發(fā) 生“連接超時事件”。甲板控制設備與深海電子裝置可以互為接收方和發(fā)送方,分別有獨立的子線程程 序維護,甲板控制設備與深海電子裝置間的數據通信采用全雙工方式。接收方和發(fā)送方各 自維護四個狀態(tài)監(jiān)聽狀態(tài)、建立連接狀態(tài)、發(fā)送狀態(tài),接收狀態(tài),各個狀態(tài)間的切換和維護 利用握手信號和數據收發(fā)結果進行。接收到數據后進行CRC校驗,檢驗失敗說明發(fā)送過程中產生了數據異常,接收到 的數據應該丟棄,校驗成功說明接收到的數據是正常的。通知應用程序相應事件后,由用戶 決定后續(xù)操作過程。
權利要求
基于串行通信的信號深海長距離傳輸方法,其特征在于該方法包括如下步驟步驟(1)甲板控制設備打開串口,使能串口接收,對串口數據流進行分析,從連續(xù)的數據流中分離各個數據幀,并將各個數據幀保存;步驟(2)甲板控制設備與深海電子裝置建立通信連接,具體步驟為a.甲板控制設備發(fā)送握手信號并啟動重發(fā)定時器;b.甲板控制設備等待深海電子裝置握手確認信號,如果在定時時間內收到深海電子裝置的握手確認信號,則執(zhí)行步驟c,如果在定時時間內未收到深海電子裝置的握手確認信號,則重發(fā)握手信號;c.甲板控制設備發(fā)送確認信號,同時關閉重發(fā)定時器;d.甲板控制設備開啟連接定時器;步驟(3)數據幀發(fā)送,具體步驟為e.向數據發(fā)送緩沖區(qū)填充本次要發(fā)送的序列號、接收到的序列號、本次最多可接收的數據量以及本次要發(fā)送的數據并開啟重發(fā)定時器;f.在重發(fā)定時器定時時間內等待對方應答,如果對方無應答,則重新發(fā)送步驟e準備好的數據幀,并記錄重發(fā)次數;如果對方有應答,則跳轉至步驟h;g.如果重發(fā)次數到達指定的次數時仍未收到對方應答,則通知應用程序“重發(fā)超時事件”,由應用程序決定如何處理,同時斷開連接;否者繼續(xù)執(zhí)行下面的步驟;h.更新通信參數,關閉重發(fā)定時器;如果要發(fā)送的數據不能一次發(fā)完,則跳到步驟e繼續(xù)發(fā)送下一個數據幀;i.通知應用程序發(fā)生了“數據發(fā)送完成”事件,讓應用程序處理;步驟(4)數據幀接收,具體步驟為j.對接收到的數據幀進行校驗,如果校驗失敗則丟棄數據幀,校驗成功則繼續(xù)進行下一步操作;k.比較接收數據幀的發(fā)送序列號與本地接收序列號是否一致;如果發(fā)送序列號與本地接收序列號不一致,說明這個數據幀是過去或者未來的數據幀,采取直接丟棄該數據幀的操作方式;如果發(fā)送序列號與本地接收序列號一致,則進入下一步;l.更新通信參數,重置連接定時器;m.通知應用程序發(fā)生“收到數據事件”,讓應用程序處理接收到的數據;步驟(5)超時處理,具體步驟為n.周期性檢查是否有定時器超時,如果有定時器超時進入下一步;o.判斷超時類型,對不同的超時類型做相應處理如下重發(fā)超時判斷重發(fā)次數是否到達預設的次數,重發(fā)次數沒有到達預設的次數,則根據當前通信參數重發(fā)數據幀并記錄重發(fā)次數,重發(fā)次數到達預設的次數,則通知應用程序發(fā)生“重發(fā)超時事件”;連接超時說明通信雙方在預定時間內無數據傳輸,則關閉連接,通知應用程序發(fā)生“連接超時事件”。
全文摘要
本發(fā)明涉及一種基于串行通信的信號深海長距離傳輸方法?,F有的方法缺少事件管理機制和傳輸狀態(tài)統(tǒng)計功能。本發(fā)明方法首先初始化甲板控制設備串口;其次讓甲板控制設備與深海電子裝置建立通信連接;然后甲板控制設備與深海電子裝置進行數據的交換;數據的交換包括數據幀發(fā)送和數據幀接收;數據幀發(fā)送。在本發(fā)明方法中還引入了定時器超時處理,并對兩類超時作相應的處理。通過本發(fā)明方法甲板控制設備在發(fā)送數據前和在數據發(fā)送后,能確切知道深海電子裝置的當前狀態(tài),能夠知道在數據發(fā)送成功和失敗后的處理過程,還可以對已傳輸的數據量進行精確統(tǒng)計。
文檔編號H04L1/00GK101902394SQ20101019312
公開日2010年12月1日 申請日期2010年6月4日 優(yōu)先權日2010年6月4日
發(fā)明者劉圓圓, 劉敬彪, 孔慶鵬, 章雪挺, 蔡文郁, 邱良豐 申請人:杭州電子科技大學