劉燕,王磊
(1.國家無線電監測中心烏魯木齊監測站,烏魯木齊 830000;2.新疆農業大學計算機與信息工程學院,烏魯木齊 830052)
基于Python的短波信號數據庫查詢軟件設計
劉燕1,王磊2
(1.國家無線電監測中心烏魯木齊監測站,烏魯木齊830000;2.新疆農業大學計算機與信息工程學院,烏魯木齊830052)
無線電通信數量日益增多,其監管部門的數據庫也在不斷更新,為提高數據庫查詢速度,提高監測工作效率,本文基于Python程序設計語言,結合實際工作,針對短波通信信號數據庫設計實現了一款數據庫查詢軟件。文章詳細介紹了Python語言的優勢及數據庫查詢軟件的設計流程,且使用現有的短波信號數據庫進行反復測試,驗證了其實用性與高效性。該軟件也可以應用在其他無線電信號數據庫查詢工作中,對提高工作效率有一定的幫助。
Python;數據庫;頻率;查詢
長期以來,無線電通信監管工作一直是無線電管理部門的重點工作,對其通信頻率進行監測,及時掌握合法頻率的使用,是否存在頻率資源浪費等情況以及快速發現非法占用頻率,高效排查非法發射信號、干擾信號,打擊取締非法電臺,維護電波秩序。隨著監測工作的全面展開,為存儲監測數據且對數據進行深入分析研究和對比,勢必會產生大量的數據庫,因此,對數據庫進行快速查詢以提高工作效率就顯得尤為重要。以我站短波監測工作為例,每天既有自動監測數據又有人工監測數據,且每天都在更新數據庫;此外,還有ITU數據庫、臺站數據庫、短波臺站普查情況匯總數據庫、國內已查信號數據庫、臺站核查數據庫及中心下發的監測數據庫等,這些數據的存儲方式基本都是Excel數據表格。在進行短波監測及數據對比分析時,除自動監測數據庫查找效率較高之外,其他數據庫均需要人工手動將每個數據表格以最原始的Excel查找方式遍歷查找一遍,若有重復頻點出現,就需要反復查找核實;實際監測時基本都需要將每個數據庫的所有表格查找一遍或多遍,工作效率極低且有時若稍有不慎將漏查一些數據,給監測工作帶來不必要的麻煩。
故本文針對目前數據庫查詢效率低等不足,結合實際工作情況,利用現有的短波信號數據庫設計實現了一款數據庫查詢軟件,且經過反復測試,驗證了該軟件的穩定性及實用性,可極大地提高數據庫查詢效率,進而可確保監測工作的時效性。
2.1Python語言簡介
Python是一種面向對象的解釋型編程語言,自從20世紀90年代初誕生至今,已經得到了廣泛應用。Python語言秉承“優雅、明確、簡單”的設計理念,完全開源及純粹面向對象編程方式,很快博得了程序員們的追捧;其設計風格優雅、可讀性好、可擴展性強,眾多的開源組織也紛紛發布了自己的Python擴展包,使得Python的性能得到了飛速提升。由于Python的核心代碼是用C語言編寫,這使得該語言的執行效率非常高,加上其極高的可移植性,使得應用程序幾乎不用修改便可在Windows和Linux等操作系統之間運行。
2.2軟件開發環境簡介
目前,Python的最新版本為3.4.2,考慮到對第三方功能模塊的兼容性,本文采用Python2.7.3作為程序解析器。在安裝完Python后,自帶有一個IDLE(集成開發環境)供程序設計者編寫代碼及運行、測試寫好的程序;但由于自帶的IDLE僅僅包含了能夠運行程序的必要功能,導致在程序開發過程中效率較低。PyCharm是一款優秀的Python集成開發環境(IDE),它帶有一整套可以提高程序員進行Python開發的高效設計工具,所包含的語法高亮顯示可以提醒編程者輸入的關鍵字是否正確,此外還包含標識符自動補全功能等,這些都大大提高了程序員的編程效率,極大地方便了程序的調試和查錯。
Python自帶的GUI模塊Tkinter功能有限,缺少對Excel控件的支持,因此,本文采用wxPython模塊實現軟件GUI的設計。wxPython是Python語言的一套優秀的GUI圖形界面設計庫,這使得程序員可以非常方便地創建功能健全、操作友好的圖形交互界面;它包含豐富的插件對象,幾乎涵蓋了所有常用GUI界面的功能模塊,其中包含Excel控件。如果單純使用Python語言的IDE直接操作wxPython庫,就如同使用純C++語言編寫界面程序一樣費時費力,wxFormBuilder是一款專門用于基于wxPython庫進行界面設計及布局的輔助開發軟件工具。通過wxFormBuilder可以實現圖形化的界面設計及預覽,最終可以生成基于wxPython圖形庫的Python代碼,從而大大簡化了界面設計的步驟,提高了程序設計的效率。
由于短波信號數據庫是以Excel文件的形式進行存儲,而Excel文件的編碼方式較為復雜,如果直接按照字節的方式讀取并解碼幾乎是不可能的。在Python的眾多擴展模塊中,xlrd是一款性能優越的Excel讀取工具,可以實現指定表單、指定單元的讀取,大大降低了對Excel文件操作的難度,提高了軟件開發效率。
本文通過對以上幾種軟件開發工具的協調運用,加速了程序開發的進度,簡化了開發流程,在保證程序健壯性的同時也保證了程序的高效性能。
本文設計的軟件采用wxPython模塊提供的控件及消息機制搭建GUI圖形界面,使用xlrd模塊提供的Excel文件讀取及解碼功能作為提取短波信號數據庫的工具,在數據查找過程中使用了二分法的思想,大大縮短了數據庫搜索的時間,提高了軟件執行的效率。
基于wxPython圖形庫開發的圖形交互程序必須包含一個Frame對象和一個App對象。Frame對象負責用戶界面的展示和對用戶觸發的消息進行響應,而App對象負責運行界面程序和啟動消息循環。在使用wxFormBuilder構建GUI程序的時候就注冊了按鍵事件和文字輸入事件。
用戶向頻點查詢輸入框鍵入想要查詢的頻率值后,當按下Enter鍵后會觸發OnTextEnter事件的服務程序,此時程序會打開指定文件目錄下的Excel數據庫文件,并使用二分法查找頻點對應的一整行記錄數據。當輸入的頻點與數據庫里頻點匹配時,查詢結果則以表格的形式顯示在軟件界面上,否則不會顯示任何數據。同樣,若用戶單擊“查詢”按鈕后,OnButtonClick事件處理函數會被觸發,并操作xlrd庫打開Excel文件,之后按照二分法查找對應頻點的記錄信息并顯示在軟件界面上。軟件設計流程圖如下圖1所示。

圖1 軟件設計流程圖
本軟件的操作十分簡潔方便,因此如何安裝開發環境等工具不再贅述。在軟件開發設計前,已經安裝了Python2.7.3、PyCharm集成開發環境、wxPython圖形界面設計庫及xlrd數據讀取模塊等,這里簡單介紹一下如何運行和使用本軟件。
打開PyCharm開發環境(如圖2所示),可以直接創建一個新項目,或者通過打開目錄的方式打開已經設計好的項目。本文使用打開目錄方式打開已設計好的項目,采用現有的人工監測短波信號數據庫進行測試。打開軟件所在的工程文件后,打開“freqSearch.py”程序(如圖3所示);點擊菜單欄“運行”按鈕,再點擊“運行‘freqSearch’”(如圖4所示)。軟件運行后會彈出“短波信號數據庫查詢軟件”界面(如圖5所示);在查詢界面里輸入所要查詢的頻點(頻率單位均設置為kHz),點擊“查詢”按鈕或者直接鍵入“Enter”即可在數據庫中查到與所輸入的頻點相匹配的頻點全部信息(如圖6、圖7、圖8、圖9、圖10所示),分別查詢11,500kHz,11,850kHz頻點信號,輸出結果顯示在界面上,拖動界面的滾動條即可查看對應頻點信息的所有參數記錄,雙擊查詢到的頻點,可打開其對應信號數據庫文件,也可查找該頻點全部數據信息。
目前,用戶通過輸入信號頻點參數進行數據查詢,若需要更精細的查詢,如監測信號時間、經緯度、臺站類型等,則可以加入更多的查詢條件參數,更加精確搜索用戶所需要的信號信息。因此,該軟件可以應用在很多無線電信號數據庫查詢工作中。

圖2 PyCharm開發環境示意圖

圖3 軟件程序示意圖

圖4 軟件運行示意圖

圖5 短波信號數據庫查詢界面示意圖

圖6 11,500kHz頻點信號查詢結果示意圖

圖7 11,850kHz頻點信號查詢結果示意圖(a)

圖8 11,850kHz頻點信號查詢結果示意圖(b)

圖9 11,850kHz頻點信號查詢結果示意圖(c)

圖10 11,850kHz頻點信號查詢結果示意圖(d)
進行頻點查詢時,本軟件會遍歷指定目錄下的所有數據文件,同時遍歷每個Excel文件的表單,自動對比用戶輸入的頻點和數據庫中的頻點記錄,這樣不僅提高了數據庫查詢效率,方便了工作人員操作,而且同時支持數據庫實時更新,只要數據庫中的Excel數據表格格式完全一致、頻率單位統一即可。使用時,將所有需要查詢的數據表格全部導入該軟件,僅查詢一次即可查找到所有數據庫中與輸入查詢頻點相匹配的頻點信息,若數據庫中不存在所查詢頻點,則輸出結果為空;避免了多次重復查詢不同數據表格的麻煩,極大地提高了工作效率。
當前,人們常說社會處于“大數據”時代,“大數據”早已融入并存在于各行各業中。對于無線電管理機構來說,如何從海量的數據中快速處理并提取出我們所需要的、有價值的數據信息就顯得尤為重要。本文結合實際工作,基于Python語言設計的短波信號數據查詢軟件執行速度快且準確,操作簡單,界面簡潔,稍作修改便可查詢其他類型數據,極大地提高了工作效率,對無線電監測工作有一定的幫助,具有一定的實用價值。
Design of Database Query Software of Shortwave Signals based on Python
Liu Yan1,Wang Lei2
(1.State Radio Monitoring Center Urumqi Station,Urumqi,830000; Computer and Information Engineering College of Xinjiang Agricultural University,Urumqi,830052)
The number of radio communication is becoming larger,and the databases of corresponding supervision department are constantly being updated,in order to improve the speed of querying databases and the monitoring efficiency,combined with daily monitoring work experience and used the existing databases of shortwave signals,this paper researches and designs the software for querying database based on Python programming language. This paper introduces the advantages of Python and the design process of this software in detail. And applies the existing databases of shortwave signals,we did a lot of test and verified the software’s practicability and high efficiency. The software also can query the databases of other types of radio signals and help to improve work efficiency.
Python; database; frequency; query
10.3969/J.ISSN.1672-7274.2015.04.009
TN014
A
1672-7274(2015)04-0035-05
劉燕,碩士研究生,國家無線電監測中心烏魯木齊監測站助理工程師,2012年畢業于西安科技大學,獲得通信與信息系統專業工學碩士學位,2012年至今主要從事無線電監測工作。
王磊,碩士研究生,現任新疆農業大學計算機與信息工程學院助教,2007年至2010年任電子工程師職務,2010年至2013年獲控制理論與控制工程工學碩士學位,2013年至2014年任硬件工程師職務,2014年至今主要從事教學與科研工作。
[1]曾浩,尚維來.Python界面程序開發應用技術[J].科教文匯2010.10(下旬刊)
[2]胡守超.基于Python語言的音頻捕獲及頻譜分析程序設計[J].電腦與信息技術2009.2