劉燕,王磊
(1.國家無線電監(jiān)測(cè)中心烏魯木齊監(jiān)測(cè)站,烏魯木齊 830000;2.新疆農(nóng)業(yè)大學(xué)計(jì)算機(jī)與信息工程學(xué)院,烏魯木齊 830052)
基于Python的短波信號(hào)數(shù)據(jù)庫查詢軟件設(shè)計(jì)
劉燕1,王磊2
(1.國家無線電監(jiān)測(cè)中心烏魯木齊監(jiān)測(cè)站,烏魯木齊830000;2.新疆農(nóng)業(yè)大學(xué)計(jì)算機(jī)與信息工程學(xué)院,烏魯木齊830052)
無線電通信數(shù)量日益增多,其監(jiān)管部門的數(shù)據(jù)庫也在不斷更新,為提高數(shù)據(jù)庫查詢速度,提高監(jiān)測(cè)工作效率,本文基于Python程序設(shè)計(jì)語言,結(jié)合實(shí)際工作,針對(duì)短波通信信號(hào)數(shù)據(jù)庫設(shè)計(jì)實(shí)現(xiàn)了一款數(shù)據(jù)庫查詢軟件。文章詳細(xì)介紹了Python語言的優(yōu)勢(shì)及數(shù)據(jù)庫查詢軟件的設(shè)計(jì)流程,且使用現(xiàn)有的短波信號(hào)數(shù)據(jù)庫進(jìn)行反復(fù)測(cè)試,驗(yàn)證了其實(shí)用性與高效性。該軟件也可以應(yīng)用在其他無線電信號(hào)數(shù)據(jù)庫查詢工作中,對(duì)提高工作效率有一定的幫助。
Python;數(shù)據(jù)庫;頻率;查詢
長期以來,無線電通信監(jiān)管工作一直是無線電管理部門的重點(diǎn)工作,對(duì)其通信頻率進(jìn)行監(jiān)測(cè),及時(shí)掌握合法頻率的使用,是否存在頻率資源浪費(fèi)等情況以及快速發(fā)現(xiàn)非法占用頻率,高效排查非法發(fā)射信號(hào)、干擾信號(hào),打擊取締非法電臺(tái),維護(hù)電波秩序。隨著監(jiān)測(cè)工作的全面展開,為存儲(chǔ)監(jiān)測(cè)數(shù)據(jù)且對(duì)數(shù)據(jù)進(jìn)行深入分析研究和對(duì)比,勢(shì)必會(huì)產(chǎn)生大量的數(shù)據(jù)庫,因此,對(duì)數(shù)據(jù)庫進(jìn)行快速查詢以提高工作效率就顯得尤為重要。以我站短波監(jiān)測(cè)工作為例,每天既有自動(dòng)監(jiān)測(cè)數(shù)據(jù)又有人工監(jiān)測(cè)數(shù)據(jù),且每天都在更新數(shù)據(jù)庫;此外,還有ITU數(shù)據(jù)庫、臺(tái)站數(shù)據(jù)庫、短波臺(tái)站普查情況匯總數(shù)據(jù)庫、國內(nèi)已查信號(hào)數(shù)據(jù)庫、臺(tái)站核查數(shù)據(jù)庫及中心下發(fā)的監(jiān)測(cè)數(shù)據(jù)庫等,這些數(shù)據(jù)的存儲(chǔ)方式基本都是Excel數(shù)據(jù)表格。在進(jìn)行短波監(jiān)測(cè)及數(shù)據(jù)對(duì)比分析時(shí),除自動(dòng)監(jiān)測(cè)數(shù)據(jù)庫查找效率較高之外,其他數(shù)據(jù)庫均需要人工手動(dòng)將每個(gè)數(shù)據(jù)表格以最原始的Excel查找方式遍歷查找一遍,若有重復(fù)頻點(diǎn)出現(xiàn),就需要反復(fù)查找核實(shí);實(shí)際監(jiān)測(cè)時(shí)基本都需要將每個(gè)數(shù)據(jù)庫的所有表格查找一遍或多遍,工作效率極低且有時(shí)若稍有不慎將漏查一些數(shù)據(jù),給監(jiān)測(cè)工作帶來不必要的麻煩。
故本文針對(duì)目前數(shù)據(jù)庫查詢效率低等不足,結(jié)合實(shí)際工作情況,利用現(xiàn)有的短波信號(hào)數(shù)據(jù)庫設(shè)計(jì)實(shí)現(xiàn)了一款數(shù)據(jù)庫查詢軟件,且經(jīng)過反復(fù)測(cè)試,驗(yàn)證了該軟件的穩(wěn)定性及實(shí)用性,可極大地提高數(shù)據(jù)庫查詢效率,進(jìn)而可確保監(jiān)測(cè)工作的時(shí)效性。
2.1Python語言簡(jiǎn)介
Python是一種面向?qū)ο蟮慕忉屝途幊陶Z言,自從20世紀(jì)90年代初誕生至今,已經(jīng)得到了廣泛應(yīng)用。Python語言秉承“優(yōu)雅、明確、簡(jiǎn)單”的設(shè)計(jì)理念,完全開源及純粹面向?qū)ο缶幊谭绞?,很快博得了程序員們的追捧;其設(shè)計(jì)風(fēng)格優(yōu)雅、可讀性好、可擴(kuò)展性強(qiáng),眾多的開源組織也紛紛發(fā)布了自己的Python擴(kuò)展包,使得Python的性能得到了飛速提升。由于Python的核心代碼是用C語言編寫,這使得該語言的執(zhí)行效率非常高,加上其極高的可移植性,使得應(yīng)用程序幾乎不用修改便可在Windows和Linux等操作系統(tǒng)之間運(yùn)行。
2.2軟件開發(fā)環(huán)境簡(jiǎn)介
目前,Python的最新版本為3.4.2,考慮到對(duì)第三方功能模塊的兼容性,本文采用Python2.7.3作為程序解析器。在安裝完P(guān)ython后,自帶有一個(gè)IDLE(集成開發(fā)環(huán)境)供程序設(shè)計(jì)者編寫代碼及運(yùn)行、測(cè)試寫好的程序;但由于自帶的IDLE僅僅包含了能夠運(yùn)行程序的必要功能,導(dǎo)致在程序開發(fā)過程中效率較低。PyCharm是一款優(yōu)秀的Python集成開發(fā)環(huán)境(IDE),它帶有一整套可以提高程序員進(jìn)行Python開發(fā)的高效設(shè)計(jì)工具,所包含的語法高亮顯示可以提醒編程者輸入的關(guān)鍵字是否正確,此外還包含標(biāo)識(shí)符自動(dòng)補(bǔ)全功能等,這些都大大提高了程序員的編程效率,極大地方便了程序的調(diào)試和查錯(cuò)。
Python自帶的GUI模塊Tkinter功能有限,缺少對(duì)Excel控件的支持,因此,本文采用wxPython模塊實(shí)現(xiàn)軟件GUI的設(shè)計(jì)。wxPython是Python語言的一套優(yōu)秀的GUI圖形界面設(shè)計(jì)庫,這使得程序員可以非常方便地創(chuàng)建功能健全、操作友好的圖形交互界面;它包含豐富的插件對(duì)象,幾乎涵蓋了所有常用GUI界面的功能模塊,其中包含Excel控件。如果單純使用Python語言的IDE直接操作wxPython庫,就如同使用純C++語言編寫界面程序一樣費(fèi)時(shí)費(fèi)力,wxFormBuilder是一款專門用于基于wxPython庫進(jìn)行界面設(shè)計(jì)及布局的輔助開發(fā)軟件工具。通過wxFormBuilder可以實(shí)現(xiàn)圖形化的界面設(shè)計(jì)及預(yù)覽,最終可以生成基于wxPython圖形庫的Python代碼,從而大大簡(jiǎn)化了界面設(shè)計(jì)的步驟,提高了程序設(shè)計(jì)的效率。
由于短波信號(hào)數(shù)據(jù)庫是以Excel文件的形式進(jìn)行存儲(chǔ),而Excel文件的編碼方式較為復(fù)雜,如果直接按照字節(jié)的方式讀取并解碼幾乎是不可能的。在Python的眾多擴(kuò)展模塊中,xlrd是一款性能優(yōu)越的Excel讀取工具,可以實(shí)現(xiàn)指定表單、指定單元的讀取,大大降低了對(duì)Excel文件操作的難度,提高了軟件開發(fā)效率。
本文通過對(duì)以上幾種軟件開發(fā)工具的協(xié)調(diào)運(yùn)用,加速了程序開發(fā)的進(jìn)度,簡(jiǎn)化了開發(fā)流程,在保證程序健壯性的同時(shí)也保證了程序的高效性能。
本文設(shè)計(jì)的軟件采用wxPython模塊提供的控件及消息機(jī)制搭建GUI圖形界面,使用xlrd模塊提供的Excel文件讀取及解碼功能作為提取短波信號(hào)數(shù)據(jù)庫的工具,在數(shù)據(jù)查找過程中使用了二分法的思想,大大縮短了數(shù)據(jù)庫搜索的時(shí)間,提高了軟件執(zhí)行的效率。
基于wxPython圖形庫開發(fā)的圖形交互程序必須包含一個(gè)Frame對(duì)象和一個(gè)App對(duì)象。Frame對(duì)象負(fù)責(zé)用戶界面的展示和對(duì)用戶觸發(fā)的消息進(jìn)行響應(yīng),而App對(duì)象負(fù)責(zé)運(yùn)行界面程序和啟動(dòng)消息循環(huán)。在使用wxFormBuilder構(gòu)建GUI程序的時(shí)候就注冊(cè)了按鍵事件和文字輸入事件。
用戶向頻點(diǎn)查詢輸入框鍵入想要查詢的頻率值后,當(dāng)按下Enter鍵后會(huì)觸發(fā)OnTextEnter事件的服務(wù)程序,此時(shí)程序會(huì)打開指定文件目錄下的Excel數(shù)據(jù)庫文件,并使用二分法查找頻點(diǎn)對(duì)應(yīng)的一整行記錄數(shù)據(jù)。當(dāng)輸入的頻點(diǎn)與數(shù)據(jù)庫里頻點(diǎn)匹配時(shí),查詢結(jié)果則以表格的形式顯示在軟件界面上,否則不會(huì)顯示任何數(shù)據(jù)。同樣,若用戶單擊“查詢”按鈕后,OnButtonClick事件處理函數(shù)會(huì)被觸發(fā),并操作xlrd庫打開Excel文件,之后按照二分法查找對(duì)應(yīng)頻點(diǎn)的記錄信息并顯示在軟件界面上。軟件設(shè)計(jì)流程圖如下圖1所示。
圖1 軟件設(shè)計(jì)流程圖
本軟件的操作十分簡(jiǎn)潔方便,因此如何安裝開發(fā)環(huán)境等工具不再贅述。在軟件開發(fā)設(shè)計(jì)前,已經(jīng)安裝了Python2.7.3、PyCharm集成開發(fā)環(huán)境、wxPython圖形界面設(shè)計(jì)庫及xlrd數(shù)據(jù)讀取模塊等,這里簡(jiǎn)單介紹一下如何運(yùn)行和使用本軟件。
打開PyCharm開發(fā)環(huán)境(如圖2所示),可以直接創(chuàng)建一個(gè)新項(xiàng)目,或者通過打開目錄的方式打開已經(jīng)設(shè)計(jì)好的項(xiàng)目。本文使用打開目錄方式打開已設(shè)計(jì)好的項(xiàng)目,采用現(xiàn)有的人工監(jiān)測(cè)短波信號(hào)數(shù)據(jù)庫進(jìn)行測(cè)試。打開軟件所在的工程文件后,打開“freqSearch.py”程序(如圖3所示);點(diǎn)擊菜單欄“運(yùn)行”按鈕,再點(diǎn)擊“運(yùn)行‘freqSearch’”(如圖4所示)。軟件運(yùn)行后會(huì)彈出“短波信號(hào)數(shù)據(jù)庫查詢軟件”界面(如圖5所示);在查詢界面里輸入所要查詢的頻點(diǎn)(頻率單位均設(shè)置為kHz),點(diǎn)擊“查詢”按鈕或者直接鍵入“Enter”即可在數(shù)據(jù)庫中查到與所輸入的頻點(diǎn)相匹配的頻點(diǎn)全部信息(如圖6、圖7、圖8、圖9、圖10所示),分別查詢11,500kHz,11,850kHz頻點(diǎn)信號(hào),輸出結(jié)果顯示在界面上,拖動(dòng)界面的滾動(dòng)條即可查看對(duì)應(yīng)頻點(diǎn)信息的所有參數(shù)記錄,雙擊查詢到的頻點(diǎn),可打開其對(duì)應(yīng)信號(hào)數(shù)據(jù)庫文件,也可查找該頻點(diǎn)全部數(shù)據(jù)信息。
目前,用戶通過輸入信號(hào)頻點(diǎn)參數(shù)進(jìn)行數(shù)據(jù)查詢,若需要更精細(xì)的查詢,如監(jiān)測(cè)信號(hào)時(shí)間、經(jīng)緯度、臺(tái)站類型等,則可以加入更多的查詢條件參數(shù),更加精確搜索用戶所需要的信號(hào)信息。因此,該軟件可以應(yīng)用在很多無線電信號(hào)數(shù)據(jù)庫查詢工作中。
圖2 PyCharm開發(fā)環(huán)境示意圖
圖3 軟件程序示意圖
圖4 軟件運(yùn)行示意圖
圖5 短波信號(hào)數(shù)據(jù)庫查詢界面示意圖
圖6 11,500kHz頻點(diǎn)信號(hào)查詢結(jié)果示意圖
圖7 11,850kHz頻點(diǎn)信號(hào)查詢結(jié)果示意圖(a)
圖8 11,850kHz頻點(diǎn)信號(hào)查詢結(jié)果示意圖(b)
圖9 11,850kHz頻點(diǎn)信號(hào)查詢結(jié)果示意圖(c)
圖10 11,850kHz頻點(diǎn)信號(hào)查詢結(jié)果示意圖(d)
進(jìn)行頻點(diǎn)查詢時(shí),本軟件會(huì)遍歷指定目錄下的所有數(shù)據(jù)文件,同時(shí)遍歷每個(gè)Excel文件的表單,自動(dòng)對(duì)比用戶輸入的頻點(diǎn)和數(shù)據(jù)庫中的頻點(diǎn)記錄,這樣不僅提高了數(shù)據(jù)庫查詢效率,方便了工作人員操作,而且同時(shí)支持?jǐn)?shù)據(jù)庫實(shí)時(shí)更新,只要數(shù)據(jù)庫中的Excel數(shù)據(jù)表格格式完全一致、頻率單位統(tǒng)一即可。使用時(shí),將所有需要查詢的數(shù)據(jù)表格全部導(dǎo)入該軟件,僅查詢一次即可查找到所有數(shù)據(jù)庫中與輸入查詢頻點(diǎn)相匹配的頻點(diǎn)信息,若數(shù)據(jù)庫中不存在所查詢頻點(diǎn),則輸出結(jié)果為空;避免了多次重復(fù)查詢不同數(shù)據(jù)表格的麻煩,極大地提高了工作效率。
當(dāng)前,人們常說社會(huì)處于“大數(shù)據(jù)”時(shí)代,“大數(shù)據(jù)”早已融入并存在于各行各業(yè)中。對(duì)于無線電管理機(jī)構(gòu)來說,如何從海量的數(shù)據(jù)中快速處理并提取出我們所需要的、有價(jià)值的數(shù)據(jù)信息就顯得尤為重要。本文結(jié)合實(shí)際工作,基于Python語言設(shè)計(jì)的短波信號(hào)數(shù)據(jù)查詢軟件執(zhí)行速度快且準(zhǔn)確,操作簡(jiǎn)單,界面簡(jiǎn)潔,稍作修改便可查詢其他類型數(shù)據(jù),極大地提高了工作效率,對(duì)無線電監(jiān)測(cè)工作有一定的幫助,具有一定的實(shí)用價(jià)值。
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
劉燕,碩士研究生,國家無線電監(jiān)測(cè)中心烏魯木齊監(jiān)測(cè)站助理工程師,2012年畢業(yè)于西安科技大學(xué),獲得通信與信息系統(tǒng)專業(yè)工學(xué)碩士學(xué)位,2012年至今主要從事無線電監(jiān)測(cè)工作。
王磊,碩士研究生,現(xiàn)任新疆農(nóng)業(yè)大學(xué)計(jì)算機(jī)與信息工程學(xué)院助教,2007年至2010年任電子工程師職務(wù),2010年至2013年獲控制理論與控制工程工學(xué)碩士學(xué)位,2013年至2014年任硬件工程師職務(wù),2014年至今主要從事教學(xué)與科研工作。
[1]曾浩,尚維來.Python界面程序開發(fā)應(yīng)用技術(shù)[J].科教文匯2010.10(下旬刊)
[2]胡守超.基于Python語言的音頻捕獲及頻譜分析程序設(shè)計(jì)[J].電腦與信息技術(shù)2009.2