



摘 要: 隨著科技的發展,GPS在越來越多的工程和科學領域得到應用,有關GPS的教學也逐漸引起重視。介紹了用于教學的GPS接收機模擬軟件開發。該軟件有助于課堂教學和課后學生練習GPS接收機的操作使用。軟件采用VC++編程方法實現,接收機各功能的實現基本上采用事件響應函數的形式。運行結果表明,所有GPS定時校頻接收機軟件前面板模擬結果都與被模擬界面的畫面及功能一致,完成GPS接收機的模擬。文中的軟件開發方法可為其他教學模擬軟件的開發提供參考。
關鍵詞: 教學軟件; VC++; GPS接收機; 教學模擬軟件
中圖分類號: TN965+.5?34; TP311.11 文獻標識碼: A 文章編號: 1004?373X(2016)10?0100?04
Analog software development of GPS receiver
YANG Chao1, YANG Yuan2, LIU Yunfei3
(1. Department of Electronics and information Engineering, NAAU, Yantai 264001, China;2. Unit 92407 of PLA, Huludao 125000, China;
3. Qingdao Branch, NAAU, Qingdao 266041, China;)
Abstract: With the development of science and technology, GPS is widely used in more and more fields of science and engineering now, and the GPS teaching is also paid more attention. Analog software development of the GPS receiver applied to teaching is introduced in this paper. The software is not only contribute to teaching GPS receiver in class, but also to the practice to get the equipment operation skill. The software is realized by VC++ programming method, and each function of GPS receiver is realized in the form of event response function. System running results prove that the front panel analog result of GPS timing frequency?adjustment receiver software is same with the picture and function of the simulated interface. The method of software development can provide a reference for development of other teaching analog softwares.
Keywords: teaching software; VC++; GPS receiver; teaching analog software
GPS[1]是20世紀70年代由美國陸海空三軍聯合研制的新一代空間衛星導航定位系統,目前,它已經在很多方面得到了應用[2?9]。隨著現代科技的發展,GPS的應用還會越來越廣泛。相應的有關GPS理論和GPS接收機操作使用的課程也日益普遍。本文旨在介紹一種用于授課和練習GPS接收機操作使用的GPS接收機模擬軟件,該軟件主要對某型GPS接收機進行人機界面模擬。使用該軟件,不僅在課堂上可以通過屏幕直觀再現作為授課內容的GPS接收機的人機界面和操作使用方法,便于教師授課和學生學習,而且,更可以作為GPS模擬接收機,供學生練習GPS接收機的操作使用,對沒有GPS接收機的場合下的GPS接收機操作使用教學,尤其有用。通過使用該軟件,讓相關學員和技術人員能夠在短時間內學會GPS接收機的操作使用,達到事半功倍的效果。該軟件的編程方法不僅可以幫助編寫其他型號的GPS接收機教學模擬軟件,同時也為其他課程的教學軟件編程提供參考。
1 GPS模擬接收機人機界面方案設計
本文主要對GPS定時校頻接收機的面板和操作進行模擬。VC++不僅具有C/C++語言的高效性和端口操作能力的特點,而且融合了可視化環境與面向對象的程序設計思想[10]。在綜合接收機的人機界面的面板及操作和VC++的特點之后,在開發時選擇可視化的、面向對象的編程工具Visual C++ 6.0。
1.1 GPS模擬接收機前面板外形的設計實現
根據實物,本文對GPS模擬面板的整體外形進行了設計。
(1) 開關部分用一個Button控件和一個PictureBox控件組合實現,單純地使用Button控件在外觀設計上并不能滿足要求,所以針對開關的開和關狀態,在Button按鈕彈起和按下時分別用PictureBox控件調用圖片使之更加逼真。
(2) LCD顯示屏作為整個軟件的文字顯示部分,VC++ 6.0有兩個可用控件:TextBox和Label。而TextBox本身帶有白色背景的底框,和真實的面板不相符,因此本文選擇了Label控件。Label控件有幾個重要的屬性,分別是Font,ForeColor,Visible,BackColor和Text;Font用來設置文本的字體;ForeColor用來設置文本的顏色;Visible用來設置控件是否可見;Text用來設置文本的內容;BackColor用來設置背景色。
(3) 1PPS指示燈用一個PictureBox控件實現,在指示燈亮滅狀態用PictureBox控件調用代表燈亮燈滅的圖片實現。
(4) 功能按鈕為獲得較真實的效果,先獲取Button按鈕位置畫圓域,然后針對按下彈起狀態填充相應的圖片實現。
(5) 其余文字說明部分均采用Label控件。
1.2 GPS模擬接收機人機界面功能的實現
GPS接收機人機界面的每一個功能都使用事件響應函數的形式實現。在實現系統各功能的時候,基本上是采用由相應的控件和相應的事件處理函數完成,即發生一個事件,執行一個相應的函數。
2 GPS定時校頻接收機開發過程
本節給出在VC++ 6.0中GPS定時校頻接收機模擬軟件界面主要功能的實現。
2.1 開關功能的實現
用全局變量kg控制開關開啟和關閉,按下開關執行單擊響應函數BN_CLICKED,執行kg++,初始化各變量,調用定時器SetTimer()在其響應函數OnTimer()中判斷kg是奇數還是偶數,若為奇數則表示開關在開的狀態,用PictureBox控件的關聯變量m_pic1調用SetBitmap函數為開關調用開時的圖片,用變量控制其他控件功能可以正常使用,若kg為偶數則表示開關在關的狀態,用PictureBox控件的關聯變量m_pic1調用SetBitmap函數為開關調用關時的圖片,用變量控制其他控件功能不可以使用,其流程圖如圖1所示。
2.2 1PPS指示燈閃爍的實現
在開關處于關狀態時,調用定時器SetTimer()在其響應函數OnTimer()中用PictureBox控件的關聯變量m_pic調用SetBitmap函數為指示燈調用暗色的圖片表示指示燈滅。當開關處于關狀態時,在OnTimer()函數中用變量a控制時間,在PLEASE WAIT字樣消失前調用自定義函數pic()讓PictureBox控件的關聯變量m_pic1調用SetBitmap函數為指示燈調用亮色的圖片表示指示燈亮,在PLEASE WAIT字樣消失后用變量a控制閃爍時間,實現指示燈閃爍,其流程圖如圖2所示。
2.3 LCD顯示屏的實現
在Label控件屬性頁中設置其BackColor參數和BackStyle參數使其滿足LCD顯示屏的顏色要求,設置Font參數使其滿足顯示字體的要求,設置BorderStyle參數使其滿足樣式的要求。用SetDlgItemText()語句實現文本顯示,使其完成LCD顯示屏的功能。
2.4 主要功能鍵的實現
開關開狀態下,在各按鈕的單擊響應函數BN_CLICKED中主要功能鍵的實現為:
(1) UT/BT鍵。用變量b控制按鍵第幾次按下,依次在LCD顯示屏顯示相應的時間。其實現流程圖如圖3所示。
以下是實現“UT/BT鍵”功能的程序片段:
void CTestDlg::OnButton6()
{
// TODO: Add your control notification handler code here
b++;b1=0;b2=0;b3=0;b4=0;b5=0;c=0;
if(a>0b==1)
{
SetTimer(0,1 000,NULL);
//time_t now=time(0);
//tm*localtm=localtime(now);
//SetDlgItemText(IDC_LABEL24,asctime(localtm));
//當地時間
}
if(a>0b==2)
{
SetTimer(0,1 000,NULL);
//time_t now=time(0);
//tm*gmtm=gmtime(now);
//if(gmtm!=NULL)
//{
//SetDlgItemText(IDC_LABEL24,asctime(gmtm));
//} //世界時
}
if(a>0b>2)
{
b=1;
}
}
void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CFormView::OnLButtonDown(nFlags, point);
}
void CTestDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CFormView::OnLButtonUp(nFlags, point);
}
(2) 時間/頻差鍵。用變量b5控制其顯示,d1,d2,d3,d4用于控制顯示校頻時間處于哪一檔時的時間頻差信息,在定時器SetTimer()中調用各函數完成顯示。其流程圖如圖4所示。
圖4 時間頻差鍵流程圖
以下是實現“時間頻差鍵”功能的程序片段:
void CTestDlg::OnButton5()
{
// TODO: Add your control notification handler code here
b5++;b=0;b1=0;b2=0;b3=0;b4=0;c=0;
if(a>0b5==1)
{
SetTimer(0,1,NULL);
}
if(b5>1)
{b5=0;
b=2;
} }
3 模擬結果
以下是部分運行結果:按下顯示/翻頁鍵,LCD顯示屏顯示內容變為經度信息,格式為P1:A 120°13.548’E如圖5所示,其中A代表有效/無效,120°13.548’E代表東/西經度。與對實物的操作對比可以看出,軟件運行時的文字、開關按鈕、LCD顯示屏顯示、1PPS指示燈、各功能鍵按鈕的位置與工作狀態均一致,整個界面和功能一致。
GPS模擬軟件運行結果顯示,所有GPS模擬定時校頻接收機軟件前面板模擬結果都與被模擬界面的畫面及功能一致,完成了GPS模擬接收機軟件模擬。
4 結 語
本文介紹了用于教學的GPS接收機模擬軟件開發。軟件采用VC++編程方法實現,每一個功能都由相應的控件和相應的事件處理函數完成,文中給出在VC++ 6.0中GPS定時校頻接收機界面的搭建、各功能的實現以及一些技巧說明。軟件運行結果表明,所有的人機界面和操作與實物一致,完成了某型GPS接收機的模擬。文中的軟件開發方法可為其他教學模擬軟件的開發提供參考。
參考文獻
[1] KAPLAN E D, HEGARTY C J. Understanding GPS: Principles and applications [M]. 2nd ed. Norwood: Artech House Inc., 2006.
[2] 崔明,吳志勇.一種利用GPS馴服壓控晶體振蕩器的方法[J].儀器儀表學報,2011,32(6):386?389.
[3] 顧清華,馮治東,井石滾,等.基于3PGS和GPS的露天礦出入車輛運輸智能管控系統[J].計算機應用與軟件,2015,32(6):72?75.
[4] 惠曉威,劉彥每.基于GPS/GPRS的物流車載終端系統設計[J].計算機應用與軟件,2015,32(6):80?82.
[5] 黨學會,郭炳輝,呂健.基于GPS的華北地區地殼水平形變特征研究[J].華北地震科學,2015,33(1):20?24.
[6] 孫兆祥,劉軍,胡浩.基于GPS和GPRS的車輛監控終端系統的設計[J].湖北工程學院學報,2015(3):32?35.
[7] 李宗義.基于油耗的公交車綠色車速引導策略[J].交通科學與工程,2015,31(2):68?74.
[8] 施建平,樓楠.日本全球定位系統永久性跟蹤站網的現代化[J].全球定位系統,2015,40(3):86?93.
[9] LIU Jun, YANG Chao, WANG Cong. Perceptual system of the dangerous goods in transit escort based on WSN [C]// The 2010 4th International Conference on Intelligent Information Technology Application. Qinhuangdao, China: IEEE, 2010: 395?397.
[10] 馬安鵬.Visual C++ 6程序設計導學[M].北京:清華大學出版社,2002.