趙大偉
摘要:短波電臺適用于對帶寬要求不高的語音通信,一般不會用于進行數(shù)據(jù)量較大的文件傳輸。本文提出了一種基于短波電臺的可靠的文件傳輸方式,可以通過短波電臺進行較大文件的傳輸,擴展了短波電臺的應(yīng)用范圍。
關(guān)鍵詞:短波電臺 短波通信 文件傳輸
1.短波電臺通信簡述
短波電臺包括發(fā)信機,天線調(diào)諧器和電源,以單工方式通信,同時只能發(fā)送或者只能接收,且由于帶寬的限制,發(fā)送時有明顯的時延。為避免發(fā)信機過熱,需要設(shè)置最大持續(xù)發(fā)送時長。短波電臺默認情況下只能接收數(shù)據(jù),如果要發(fā)送數(shù)據(jù),需要通過串口向電臺發(fā)激活發(fā)送的指令,成功后才能發(fā)送數(shù)據(jù)。
PC上的短波控制模塊(Shortwave Control Module, SCM)通過串口來與電臺交互,它控制電臺操作,讓電臺發(fā)送數(shù)據(jù),接收來自電臺的數(shù)據(jù)。SCM設(shè)計了軟件機制,以允許通過電臺來發(fā)送較大量的文件數(shù)據(jù)。
2.短波控制模塊工作機制
2.1分片規(guī)則
SCM發(fā)送大文件時,根據(jù)帶寬進行分片,形成發(fā)送隊列,其中分片的大小要求電臺能夠一次發(fā)送完成。每個分片中內(nèi)容為{發(fā)送方ID,接收方ID, 當前分片號,總的分片數(shù),響應(yīng)指示,分片數(shù)據(jù),CRC校驗值}。
其中ID用于標識身份;分片號用于接收方實現(xiàn)組包還原功能。
響應(yīng)指示為1,說明需要接收方的響應(yīng),此時接收方應(yīng)向發(fā)送方發(fā)送響應(yīng)消息,其中攜帶了它對應(yīng)的分片號,以前接收分片失敗的失敗列表;發(fā)送方收到響應(yīng)后,如果檢測到其中包含失敗列表,則應(yīng)重發(fā)其中的分片。最后一個分片一定是攜帶響應(yīng)指示的。
分片的數(shù)據(jù)是業(yè)務(wù)數(shù)據(jù)。CRC支持糾錯機制,接收方檢測CRC錯誤就認為接收失敗。
2.2 SCM操作描述
需要配置的工作參數(shù):帶寬、最大持續(xù)發(fā)送分片數(shù)MaxNum、串口波特率。
當電臺收到了數(shù)據(jù)后,直接發(fā)送到SCM,后者進行協(xié)議處理。
當PC的應(yīng)用層需要發(fā)送文件時,首先通過內(nèi)部接口將文件內(nèi)容發(fā)送到SCM。SCM對文件分片得到分片隊列,并使能電臺的發(fā)送功能,成功后將一個分片發(fā)送到短波電臺,并設(shè)置定時器(TmrSnd)等待發(fā)送完成。TmrSnd超時后繼續(xù)發(fā)送下個分片并重設(shè)TmrSnd。若干次后,如果連續(xù)發(fā)送分片數(shù)達到了MaxNum,讓電臺進入接收狀態(tài),可以接收數(shù)據(jù)了。
2.3 狀態(tài)機描述
默認開始狀態(tài)是電臺可接收狀態(tài)。
2.4 發(fā)送流程
下圖描述了一個完整的發(fā)送方的流程。
1.上層應(yīng)用向SCM發(fā)送文件數(shù)據(jù)。
2.SCM根據(jù)配置參數(shù),對數(shù)據(jù)分片形成發(fā)送隊列。
3.SCM向短波電臺發(fā)送使能發(fā)送命令。
4.SCM通過定時器TmrEnb不斷檢測電臺。某個時刻檢測到電臺發(fā)送狀態(tài)就緒。
5.SCM向上層應(yīng)用發(fā)送消息,告知開始發(fā)送。
6.SCM從發(fā)送隊列中讀取分片1,發(fā)送到電臺。設(shè)置定時器TmrSnd 等待發(fā)送完成。
7.SCM將發(fā)送進度告知應(yīng)用。
8.TmrSnd超時,SCM從發(fā)送隊列中取出下個分片2進行發(fā)送。
9.SCM將發(fā)送進度告知上層應(yīng)用。
10.重復上述步驟,某個時刻應(yīng)發(fā)送分片號為N,若當前電臺的持續(xù)發(fā)送分片數(shù)達到了閾值,應(yīng)需要響應(yīng)。設(shè)置該分片的響應(yīng)標志,發(fā)送分片。設(shè)置TmrSnd等待發(fā)送完成。
11.TmrSnd超時后,認為第N個分片發(fā)送完成了,應(yīng)等待響應(yīng)。此時給電臺發(fā)送關(guān)閉發(fā)送命令,讓電臺進入到接收狀態(tài)。
12.電臺進入到接收狀態(tài)后,接收到了響應(yīng)報文,發(fā)送到SCM。
13.SCM檢測接收方ID,如果是自己,根據(jù)該響應(yīng)更新發(fā)送隊列內(nèi)容;否則拋棄。
14.控制模塊檢測到發(fā)送隊列非空,需要繼續(xù)發(fā)送。
下面步驟15同步驟3,步驟16同步驟4,步驟17同6, 步驟18同7.
19.當發(fā)送最后一個分片時,必須設(shè)置響應(yīng)標志。將它交付到電臺進行發(fā)送。設(shè)置TmrSnd,等待發(fā)送完成。
20.TmrSnd超時,SCM發(fā)送關(guān)閉命令給電臺,要求進入接收狀態(tài)。
21.電臺進入接收狀態(tài)后,從空口接收到了接收方的響應(yīng)報文,發(fā)送到SCM。
22.SCM檢測報文。如果是正確的響應(yīng)報文,則更新發(fā)送隊列內(nèi)容。如果發(fā)送隊列為空,認為數(shù)據(jù)全部發(fā)送完成,通知上層應(yīng)用發(fā)送完成。
3數(shù)據(jù)接收方的流程
短波電臺從空口接收報文,并經(jīng)串口發(fā)送到SCM。SCM判斷數(shù)據(jù)的有效性,無效將直接丟棄。
步驟1:SCM從電臺接收到分片后,此時檢測多個分片的接收情況。如果檢測到接收到了所有的分片,則將分片組織為一個完整的數(shù)據(jù)包,發(fā)送到上層應(yīng)用。
步驟2:檢測分片中的響應(yīng)指示,如果為0,則暫時存儲,流程結(jié)束。如果為1,表示需要響應(yīng),此時SCM要求電臺進入發(fā)送狀態(tài)。并設(shè)置定時器TmrEnb,周期檢測電臺是否發(fā)送就緒。
步驟3:當檢測到短波電臺發(fā)送就緒后,SCM構(gòu)造響應(yīng)報文,如果發(fā)現(xiàn)有分片的CRC校驗失敗或者序號丟失,則構(gòu)建響應(yīng)報文中的失敗列表以包含該分片序號,然后將該響應(yīng)報文經(jīng)電臺發(fā)送。設(shè)置TmrSnd等待發(fā)送結(jié)束。TmrSnd超時后,SCM控制短波電臺進入接收狀態(tài)。
4 總結(jié)
短波電臺的特點是不利于較大文件數(shù)據(jù)傳輸?shù)?,本文介紹了一種技術(shù)方案,可以通過短波電臺發(fā)送較大的文件數(shù)據(jù),在一定程度上拓展了其應(yīng)用范圍。
參考文獻
[1]《關(guān)于短波通信技術(shù)發(fā)展》,楊恒煜,《防護工程》2018年第16期。
[2]《淺談短波在通信領(lǐng)域的發(fā)展以及應(yīng)用》,岳慧平等,《科技創(chuàng)新導報》2012年第10期。