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