楊超 鐘李 劉云飛 趙瑞青
摘 要: 在此介紹用于教學的時統(tǒng)頻標單元模擬軟件開發(fā)。軟件采用VC++編程方法實現(xiàn),頻標單元人機界面的每一個功能都由相應的控件和相應的事件處理函數(shù)完成,使用事件響應函數(shù)的形式實現(xiàn)。運行結果表明,設備所有的人機界面和操作與實物一致,完成了時統(tǒng)頻標單元的模擬,該軟件有助于課堂授課和學生練習設備的操作。文中的軟件開發(fā)方法可為其他教學模擬軟件的開發(fā)提供參考。
關鍵詞: 時間統(tǒng)一; 教學軟件; 頻率標準; VC++
中圖分類號: TN98?34 文獻標識碼: A 文章編號: 1004?373X(2016)06?0037?04
Analog software development of frequency standard unit of timing system
YANG Chao1, ZHONG Li2, LIU Yunfei3, ZHAO Ruiqing4
(1. Department of Electronics and Information Engineering, NAAU, Yantai 264001, China; 2. Unit 91181 of PLA, Qingdao 266000, China;
3. Qingdao Branch, NAAU, Qingdao 266041, China; 4. Unit 91604 of PLA, Longkou 265700, China)
Abstract: Timing system, with the development of science and technology, plays a more and more important role in the area of science and engineering, and teaching of the timing system is brought to the forefront gradually. The analog software development of the timing system frequency standard unit for teaching is described in this paper. The software contributes to teaching in class and the students practice to get the equipment operation skill. The software is realized with VC++ 2008 programming method. Each function of the frequency standard unit man?machine interface of the timing system is realized by corresponding control and event handling function, which is implemented in the form of event response function. The systems running results prove that all the man?machine interface and operation are in accordant with the actual object, and can fulfill the analog of frequency standard unit of the timing system.. The software developing method can be taken as a reference for development of other teaching softwares.
Key words: timing system; teaching software; frequency standard; VC++新興工程學科[2]。隨著現(xiàn)代導航、通信、電力等科學技術的進步,時統(tǒng)技術得到迅猛發(fā)展[3?4],越來越多的工程和科學鄰域需要并建立了時間統(tǒng)一系統(tǒng)[5?10],時統(tǒng)系統(tǒng)的教學逐漸受到重視,為了提高教學質量,相應的教學軟件也應運而生。本文介紹時統(tǒng)系統(tǒng)的重要組成部分之一——頻標單元的教學模擬軟件開發(fā)。該軟件主要對時統(tǒng)設備頻標單元進行人機界面模擬。使用該軟件,不僅在課堂上可以通過屏幕直觀再現(xiàn)作為授課內容的設備的人機界面和操作使用方法,便于教師授課和學生學習,而且,可以作為模擬設備,便于學生練習操作使用設備,對沒有實習設備場合下的設備教學,尤其有用。通過使用該軟件,讓相關技術人員能夠在短時間內學會頻標單元的操作使用,達到事半功倍的效果。該軟件的編程方法可以幫助編寫導航、通信、電力等不同時統(tǒng)系統(tǒng)中頻標單元的教學軟件,同時也為其他課程的教學軟件編程提供參考。
1 時統(tǒng)設備頻標單元人機界面方案設計
頻標單元[11]面板主要由頻標指示燈、輸入/輸出指示燈、時鐘、電源開關和用于時間設置(簡稱置時)的按鈕(調整按鈕、置時按鈕)6部分組成。
時統(tǒng)設備頻標機單元的工作流程如圖1所示。在電源開關按下(打開電源)之前,頻標單元面板上的各個指示燈均處于熄滅狀態(tài),用于置時的時鐘也沒有時間顯示。當電源開關按下(打開電源)后,各個正常工作的頻標指示燈亮,其中選中工作的指示燈閃爍相應的輸入/輸出指示燈亮。置時的時鐘時間由00時00分00秒開始計時。若置時按鈕按下,開始置時,置時結束后,時鐘在置時的基礎上計時。任何狀態(tài)下,按下電源開關(斷開電源),所有的指示燈均處于熄滅狀態(tài),時鐘也沒有時間顯示。
根據(jù)頻標單元面板組成和工作流程,選用了Microsoft公司的Visual C++ 2008軟件進行編程。Visual C++ 2008是Visual Studio 2008開發(fā)工具箱中的一個C++程序開發(fā)包。Visual Studio 2008是面向Windows Vista,Office 2007,Web 2.0的新一代開發(fā)工具,引入了250多個新特性,整合了對象、關系型數(shù)據(jù)、XML的訪問方式,語言更加簡潔。使用Visual Studio 2008可以高效開發(fā)Windows應用程序。設計器中可以實時反映變更,XAML中智能感知功能可以提高開發(fā)效率。同時Visual Studio 2008支持項目模板、調試器和部署程序。
頻標單元人機界面各模塊功能實現(xiàn)的程序流程圖如圖2所示。首先創(chuàng)建相應控件,生成面板,并初始化定義各全局變量。隨后檢測是否發(fā)生點擊控件操作,如有點擊操作,則產生相應的事件。然后再從頭文件中尋找相應的事件響應函數(shù),在函數(shù)中改變各控件的相應屬性,實現(xiàn)課題要求的功能。
頻標單元教學軟件安裝包設計思路如圖3所示。由于頻標機面板上有一組數(shù)碼管,在進行面板模擬實現(xiàn)時需要用到一種特殊的字體,即“Quartz Regular.ttf”。如果在不包含這種字體的計算機上運行本系統(tǒng)時,數(shù)碼管字體就無法顯示,影響模擬面板的真實性。除此以外,本系統(tǒng)還是在以.NET Framework 3.5為基底架構的Visual C++ 2008環(huán)境下開發(fā)的。在Windows 7 操作系統(tǒng)中,.NET Framework 3.5是系統(tǒng)本身就包含的,然而在很多老一點的操作系統(tǒng)(如Windows XP)中并不包含此模型。因此在開發(fā)過程中,必須將此模型作為依賴項加入程序中。考慮到上述的兩個情況,在完成面板的編程后,對整個系統(tǒng)的安裝包進行了開發(fā),將系統(tǒng)所需的字體、圖標、依賴項、卸載程序(Uninstall.exe)以及各種快捷方式(包括桌面和開始菜單的快捷方式)等進行了打包處理。
2 時統(tǒng)設備頻標單元模擬軟件開發(fā)過程
2.1 人機界面功能開發(fā)
(1) 創(chuàng)建工程
運行Visual Studio 2008軟件,創(chuàng)建一個基于CLR的Windows窗體應用程序工程。設置窗體的屬性,添加Timer,PictureBox,Label等控件,并分別設置屬性。
(2) 各種功能的實現(xiàn)
頻標單元人機界面的每一個功能都由相應的控件和相應的事件處理函數(shù)完成。使用事件響應函數(shù)的形式實現(xiàn),即發(fā)生一個事件,執(zhí)行相應的一個函數(shù)。
時鐘數(shù)字閃爍的實現(xiàn)。利用控件timer1專門實現(xiàn)時鐘數(shù)字閃爍功能。通過在每個timer1_Tick()事件內一個整型變量record進行計數(shù),timer1_Tick()事件每發(fā)生1次,執(zhí)行1次“record++”,再通過判決條件“if(record%5==0)”有條件地控制相應空間的可見和不可見交替執(zhí)行,實現(xiàn)閃爍的功能。實現(xiàn)“閃爍”的片段源程序如下:
時鐘計時的實現(xiàn)。利用控件timer2專門實現(xiàn)時鐘計時功能。通過在每個timer2_Tick()事件內執(zhí)行時、分、秒共6位數(shù)字的自加和進位,并將相應的整型數(shù)字轉換成相應的字符,賦給相應Label的Text,實現(xiàn)時鐘計時的功能。實現(xiàn)“計時”的片段源程序如下:
長按調整鍵2 s以上數(shù)字快速增加的實現(xiàn)。利用控件timer3專門實現(xiàn)這一功能。當調整鍵按下時,timer3開始計時,即“this?>timer3?>start()”,則timer3_Tick()事件發(fā)生,內部的計數(shù)變量開始計數(shù)。當計數(shù)變量值大于20時,相應位時鐘數(shù)字便以ms為單位開始增加。當調整鍵彈起時,timer3停止計時,即“this?>timer3?>stop()”,然后執(zhí)行相應位的時鐘數(shù)字加1。
頻標指示燈閃爍的實現(xiàn)。利用控件timer4專門實現(xiàn)此功能。實現(xiàn)方法與時鐘數(shù)字閃爍的實現(xiàn)方法相同。
置時功能的實現(xiàn)。置時功能主要由兩個按鈕實現(xiàn),分別是“設置”鍵和“調整”鍵。為設置鍵定義一個事件響應函數(shù),即MouseClick()函數(shù),表示鼠標點擊按鈕。設置一個全局靜態(tài)整型變量num,用來標識哪些數(shù)碼管閃爍。MouseClick()函數(shù)發(fā)生1次,則num加1,并且timer1開始計時,即“this?>timer1?>start()”。timer1_Tick()函數(shù)內有一個switch語句,通過讀取num的值,指定對應的數(shù)碼管閃爍。當num值為6時,執(zhí)行令num=0,且把小時鐘的值賦給大時鐘,停止timer1和timer2兩個時鐘。為調整按鈕定義兩個事件函數(shù),即MouseDown()函數(shù)和MouseUp()函數(shù),分別表示鼠標點擊按下和彈起。在MouseDown()函數(shù)發(fā)生時,timer3開始計時,即“this?>timer3?>start()”,則timer3_Tick()事件發(fā)生,內部的計數(shù)變量開始計數(shù)。當計數(shù)變量值大于20時,相應位時鐘數(shù)字便以ms為單位開始增加。當MouseUp()函數(shù)發(fā)生時,timer3停止計時,即“this?>timer3?>stop()”,然后執(zhí)行相應位的時鐘數(shù)字加1。在調整鍵的兩個事件響應函數(shù)中也分別加了一個switch語句,通過讀取num的值來控制哪幾位數(shù)碼管數(shù)字加減。本文分別在“設置”鍵和“調整”鍵的時間相應函數(shù)里設置了一個計時變量fclk,用于判定系統(tǒng)在60 s內如果未再進行操作,則停止timer1和timer2兩個時鐘,令num歸零,使按鍵復位,并把小時鐘的值賦給大時鐘。
時鐘顯示的實現(xiàn)。數(shù)碼管部分用了8個Label控件作為數(shù)字顯示和一個PictureBox控件作為顯示屏。
按鈕和指示燈效果的實現(xiàn)。為了逼真地再現(xiàn)人機界面,對按鈕和指示燈控件分別做了特殊處理。對儀器未啟動、按鈕被按下和按鈕彈起這3種狀態(tài)下的按鈕圖片分別用Photoshop進行了處理;在實現(xiàn)指示燈閃爍時,則是采用一個亮色和一個暗色重合的方式實現(xiàn)。
2.2 安裝包制作
在完成頻標單元各個功能軟件編程實現(xiàn)的基礎上,為軟件制作了安裝包。安裝包的內容包括面板模擬程序和卸載項程序、字體和圖標等資源、桌面快捷方式、“開始”菜單快捷方式、“開始”菜單卸載快捷方式和.NET Framework 3.5組件,具體實現(xiàn)過程如下:
(1) 建立工程并添加程序。首先建立一個“安裝和部署”工程,在系統(tǒng)自動建立的“應用程序文件夾”、“用戶桌面”和“用戶的‘程序菜單”三個文件夾中分別添加面板模擬程序和圖標文件,程序的快捷方式。
(2) 添加卸載程序。卸載程序添加到“應用程序文件夾”中,需要從“C:\WINDOWS\system32”路徑下添加Windows自帶的卸載程序文件“msiexec.exe”,并重命名為“uninstall.exe”。卸載程序快捷方式要添加在“用戶的‘程序菜單”中。在為卸載程序添加快捷方式時,需要將卸載快捷方式的Arguments屬性設置為所屬項目屬性下的ProductCode對應的值,并在前面加上“/x”,這樣系統(tǒng)在進行卸載時才能準確地卸載用戶想要卸載的軟件。
(3) 隨后為安裝包添加系統(tǒng)依賴項,即.NET Framework 3.5等組件。在項目的屬性頁上點擊系統(tǒng)必備,選擇相應組件,再選擇“從與我的應用程序相同的位置下載系統(tǒng)必備組件”,然后確定。
(4) 生成可執(zhí)行文件。為解決方案配置Release屬性,最后生成項目的解決方案。在項目文件夾中存在一個名為Release的文件夾,打開后便能看到*.exe文件、*.msi文件和相應的系統(tǒng)組件文件夾。將Release文件夾進行壓縮,重命名,那么安裝包便做成了。
3 模擬結果
軟件生成的頻標單元模擬面板圖如圖4所示,頻標單元面板外觀模擬與實物相同,點擊圖中按鍵,相應的響應界面也與實物一致。因而實現(xiàn)了頻標單元人機界面模擬。
4 結 語
時統(tǒng)系統(tǒng)越來越多地在導航、通信、電力、科學試驗中得到應用,時統(tǒng)系統(tǒng)教學軟件隨之出現(xiàn)。針對時統(tǒng)系統(tǒng)中的頻標單元,用Visual C++ 2008制作了模擬教學軟件,其中包括程序的打包處理。運行結果表明,頻標單元模擬軟件實現(xiàn)了與實物一致的人機界面。文中的編程方法可以應用到類似的頻標單元模擬軟件中,也為其他類型設備的人機界面模擬提供了參考。
參考文獻
[1] 王黨衛(wèi).時間統(tǒng)一系統(tǒng)研究[J].現(xiàn)代導航,2012,3(6):450?455.
[2] 童寶潤.時間統(tǒng)一系統(tǒng)[M].北京:國防工業(yè)出版社,2003:6?11.
[3] 崔明,吳志勇.一種利用GPS馴服壓控晶體振蕩器的方法[C]//第九屆全國信息獲取與處理學術會議論文集.丹東:中國儀器儀表學會,2011.
[4] 張九賓,張丕狀,杜坤坤.無線分布式測試系統(tǒng)時間統(tǒng)一技術的研究[J].核電子學與探測技術,2010,30(3):380?384.
[5] 胡春陽,焦群.電網時間統(tǒng)一系統(tǒng)可行性研究[J].電力系統(tǒng)通信,2011,32(1):1?5.
[6] 江濤,孫昕.GPS與IRIG?B在電網授時系統(tǒng)中的應用[J].繼電器,2007,35(z1):333?335.
[7] 劉振儒.時間碼在測試系統(tǒng)中的應用[J].測控技術,2011,30(z1):256?259.
[8] 劉博揚,梁玉秋.一種為計算機提供標準時間的方法[J].裝備指揮技術學院學報,2002,13(5):59?62.
[9] 姚虹春,何迎利,焦群.電網時間統(tǒng)一系統(tǒng)網管的研究[J].電力系統(tǒng)通信,2011,32(1):50?53.
[10] 俞科云,呂云飛.潛艇時統(tǒng)應用與管理探析[J].艦船電子工程,2010,30(7):18?21.
[11] 童寶潤.時間統(tǒng)一系統(tǒng)[M].北京:國防工業(yè)出版社,2003:228?231.