王 勇,洪 進,杜蘭蘭,王圣波
(空軍預警學院,武漢 430019)
標圖課程包括在標圖桌和標圖軟件中標示目標航跡,標圖軟件標示目標航跡也可以叫做計算機標圖,兩者的核心教學內容為找點、連線,最終掌握標示多批目標航跡的技能。標圖桌上是手寫標注位置和連接多個目標點,最終在標圖板上呈現(xiàn)完整的航跡。計算機標圖是通過鼠標點擊完成找點,由軟件自動連接目標點,最終在電腦屏幕上呈現(xiàn)完整的航跡,但無論是在標圖桌還是計算機上標示航跡,首先都需要找到目標點的位置,然后才能標注目標屬性、高度、發(fā)現(xiàn)時間等其它相關信息,進而連線形成航跡,這就意味著找點訓練是基礎。
在標圖桌上組織找點訓練比較容易,找到航跡點并進行標注,不連線即可。但是當前計算機標圖采用的軟件不具備單獨標示目標位置的找點訓練功能,所以教學進程安排通常是先進行標圖桌上的找點訓練,達到要求后推進到標圖桌上連續(xù)航跡的標示訓練,熟悉標圖桌連續(xù)航跡標示之后直接進入計算機標示連續(xù)航線的訓練。從標圖桌到計算機,手工標示到軟件標示是一個比較大的跨越,需要熟悉軟件各功能所在區(qū)域,掌握軟件操作技巧,靈活使用鼠標在屏幕中快速找到航跡點,補充其它相關信息。另外,跨到計算機標圖后只能從難度較大的標示航跡入手,缺少了找航跡點這一基礎訓練環(huán)節(jié),計算機標圖的兩大跨越對于很多基礎薄弱的學員來說門檻高、起步難、訓練受阻、倍受打擊,畏難情緒與日俱增,后續(xù)的提升訓練越發(fā)力不從心、惡性循環(huán),學員成績不理想,不能完成培養(yǎng)目標,教員壓力增加。所以,無論是教學考核要求還是個人技能提升,不管是從教員還是學員的角度,降低計算機標圖的門檻,縮小標圖桌標圖到計算機標圖的跨度,對學員掌握標圖技能至關重要。
本文旨在設計開發(fā)計算機標圖找點訓練軟件,為計算機標示目標航跡提供基礎訓練,在軟件找點訓練中熟悉計算機操作。此外,找點訓練簡單、易上手,學員學習的積極性得到提升,掌握之后再過渡到計算機標示目標航跡也不至于手足無措。
Java Swing技術主要是用于構建跨平臺桌面窗口程序,它是在AWT(abstract window tookit)基礎上采用Java語言編寫的一種圖形組件庫技術。Java Swing組件除了是輕量級的,即在運行時不需要產生相應的“對等(Peer)”組件,實際由自身外觀類支持,沒有本地代碼,不依賴操作系統(tǒng),而且它的外觀是可插拔的(pluggable look-and-feel)。Swing組件包括各種容器和基本組件,容器主要用來容納和布置基本組件,也可以包含相應的容器。常見的容器有JFrame、JDialog、JPanel等;常見的基本組件包括按鈕JButton、標簽JLabel、單選按鈕JRadio-Button。組件之間的關系如圖1所示。
圖1 組件關系圖
圖2所示為本軟件的系統(tǒng)架構圖,分為功能界面層、基礎組件層、數(shù)據(jù)存儲層,每一層的實現(xiàn)都依賴下一層提供的支持,用戶交互界面使用Swing提供的豐富基礎組件來構建,通過監(jiān)聽控件的鼠標事件來完成具體功能的業(yè)務處理。鑒于軟件沒有網絡請求的需求,可以做成單機版,因此持久化數(shù)據(jù)采用本地文件進行存儲,訪問本地文件系統(tǒng)避免了網絡傳輸?shù)暮臅r,運行速度更快。
圖2 找點軟件系統(tǒng)架構圖
以雷達位置為圓心,通過編程繪圖模擬雷達掃描區(qū)域,半徑是雷達最大探測距離,軟件語音播報表示目標坐標位置的方位距離數(shù)據(jù),根據(jù)掃描區(qū)域大小將方位距離的數(shù)值按比例轉換成坐標點,學員在模擬的掃描區(qū)域內找到該坐標點的大致位置,鼠標點擊即可放大點擊位置附近的區(qū)域,放大區(qū)中顯示方位距離輔助線,在放大區(qū)中找到并點擊方位距離的準確位置。
在放大區(qū)中點選目標位置之后,放大區(qū)消失,將放大區(qū)中點選的坐標點經過等比縮小變換后回顯到極坐標中。
軟件找點訓練需要實時顯示找到的點跡和對應的正確點跡,找點過程是動態(tài)的,所以繪制點跡也是動態(tài)的。Swing組件繪圖會先把組件中之前的內容清空,然后開始繪制傳入的新內容,所以每次繪制標記目標的坐標值后都需要保存當前內容用于下一次重繪。
該功能在Java項目中引入第三方依賴jacob.jar,其內部使用JNI封裝了對動態(tài)鏈接庫jacob-1.18-x86.dll中C++操作系統(tǒng)語音功能接口的方法調用,所以首先需要將dll文件拷貝到C:\Windows\System32目錄,文件拷貝代碼如圖3所示,將該段代碼的執(zhí)行放在軟件入口處,軟件一經啟動就完成dll文件拷貝。另外,還需要把dll文件放到Java環(huán)境的jrein目錄下,在制作.exe文件時會將jre內置進去。
圖3 拷貝dll文件代碼
想定報底中的方位距離是阿拉伯數(shù)碼,軍事通信都使用軍用數(shù)碼,所以需要將其轉換成軍用數(shù)碼,阿拉伯數(shù)碼與軍用數(shù)碼的對應發(fā)音見表1。轉換之后,表示目標位置的“084,290”就變成了“洞八四兩溝洞”。另外,為適應雷達兵部隊,語音播報要使用男聲,因此在運行軟件之前還需要安裝專門的語音包,避免使用系統(tǒng)自帶的默認女聲,安裝文件TTS\NextUp.com-NeoSpeech Chinese Wang16 Voice.msi,選擇語音包和進行其它配置都可以通過在播報內容中添加xml標簽進行設置,比如指定語音包之后播報內容就是“”,Name的取值對應語音包在系統(tǒng)注冊表中的Name屬性值。
表1 軍用數(shù)碼對應表
根據(jù)教學進程、學習情況、熟練程度需要對想定播報的速度進行調整,播放速度通過兩個參數(shù)進行控制,一個是報讀文本本身內容的速度,實現(xiàn)方式為“”,speed的取值為-10到10,一個是報讀每個目標位置之間的間隔時間,實現(xiàn)方式為“
→
有時找點訓練結束后會對軟件判定結果有所懷疑,所以每次訓練都會把找點結果保存到文件中,這樣可以通過校對結果與想定報底來進行驗證,但是界面上找到的點跡是鼠標位置在坐標系中相對坐標原點在軸、軸方向上的偏移量,而報底中的數(shù)據(jù)都是方位距離格式,為了便于校對,需要把坐標值轉換成方位距離數(shù)據(jù)。此外,當鼠標在界面中移動時,實時顯示鼠標位置對應的方位距離信息,有助于更好地找點,這種情況也需要把坐標值轉換成方位距離。
圖4 坐標值轉換成方位距離
、的計算公式如下:
→
在找點訓練中,為了在軟件界面上直觀顯示找到的點跡與正確報底之間的偏差,除了在界面上顯示找到的點跡,還要把想定報底標注在界面上。但由于想定報底用方位距離表示目標位置,軟件界面用坐標系中的坐標值表示位置,因此需要把方位距離轉換成坐標值。
圖5 方位距離轉換成坐標值
Δ、Δ、、的計算公式如下:
通過三角和反三角函數(shù)將方位距離數(shù)據(jù)轉換成屏幕坐標值以及坐標轉換計算的結果都是浮點數(shù)類型,而Swing獲取的鼠標位置都是整數(shù)類型,浮點數(shù)強制轉換成整數(shù)會丟失小數(shù)部分的精度,所以會導致找到的點跡與想定中的對應的目標位置存在一定誤差。
對于找到的點跡集合中的每一個數(shù)據(jù),循環(huán)遍歷想定中的目標位置集合,逐個計算與點跡坐標之間的距離,距離小于2 km的都算正確,以此消除找點誤差。
如圖6所示,軟件界面布局分為左右兩部分,左側是模擬的雷達掃描界面,同心圓的中心是雷達所在位置,四個同心圓分別為與雷達相距100 km、200 km、300 km、400 km的距離圈,每偏轉30°繪制一條方位輔助線。右側最上面是鼠標移動時在屏幕中的坐標實時轉換成方位距離之后的信息和系統(tǒng)當前時間,想定屬性選擇區(qū)用來指定生成想定時的參數(shù),包括生成的方位數(shù)據(jù)的要求、距離數(shù)據(jù)的要求、想定個數(shù),想定播報區(qū)可以調整想定播放的速度和選擇訓練模式,貫徹由易到難、循序漸進的教育訓練方針,功能區(qū)提供使用者操作的功能按鈕。
圖6 軟件主界面
聽到語音播報的方位距離信息之后,在模擬掃描界面可以大致定位其位置,點擊該位置就會顯示放大區(qū)。如圖7所示,放大區(qū)中1~360°每一度都有輔助線,間隔10 km就有距離圈輔助線,按住鼠標在放大區(qū)中拖動時,放大區(qū)中黑色數(shù)據(jù)是鼠標在屏幕上的坐標值實時轉換成的方位距離,隨鼠標同步移動,便于快速準確找點。
圖7 局部放大
在放大區(qū)中準確找到目標位置后,鼠標點擊,放大區(qū)消失,放大區(qū)中的坐標等比縮小轉換后顯示在模擬掃描界面,如圖8所示。圖中紅色等邊三角形表示找到的點跡,藍色表示目標真實的位置。找點訓練結束后,左下角面板中顯示正確、錯誤、遺漏點數(shù)。
圖8 結果顯示
采用Java Swing技術開發(fā)的找點訓練軟件,涵蓋了生成想定、載入和語音播報想定、找點、誤差計算等主要功能,貫穿計算機找點訓練的整個過程,為計算機標示目標完整航跡提供基礎訓練。但是語音播報線程與結果顯示線程不能異步進行,不能同步通信,存在界面顯示的當前目標點與播報點不一致問題,另外,當前使用的語音包只支持Win7 32位系統(tǒng),這限制了軟件的使用范圍,下一步考慮更換引入DLL播報語音的方式。