王兆明 吳成英
摘要:結(jié)合GPS授時(shí)技術(shù)在Visual C++平臺(tái)上完成了軟件的設(shè)計(jì)。軟件主要功能是實(shí)現(xiàn)高精度計(jì)時(shí),計(jì)時(shí)方式有正計(jì)時(shí)和倒計(jì)時(shí)兩種。文章主要介紹了系統(tǒng)的總體設(shè)計(jì)思路以及計(jì)時(shí)時(shí)間的算法。最后闡述了軟件通過(guò)串口接收GPS時(shí)間數(shù)據(jù)的程序設(shè)計(jì)。
關(guān)鍵詞:GPS授時(shí);計(jì)時(shí);軟件
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)13-0098-02
人們對(duì)計(jì)時(shí)器的應(yīng)用將近千年的歷史,從最早的日晷和漏壺到現(xiàn)在的時(shí)鐘和秒表,計(jì)時(shí)器從功能、外觀、重量、應(yīng)用范圍都發(fā)生了很大的變化[1-2]。目前,計(jì)時(shí)器的發(fā)展大多注重用硬件來(lái)完成。但是,隨著信息產(chǎn)業(yè)的發(fā)展計(jì)時(shí)軟件的應(yīng)用也越來(lái)越廣泛。本文設(shè)計(jì)了一種基于GPS的高精度計(jì)時(shí)軟件,其精確度為毫秒級(jí),足以勝任精確度極高的計(jì)時(shí)場(chǎng)合。
1 計(jì)時(shí)軟件的功能與特點(diǎn)
高精度計(jì)時(shí)軟件是一個(gè)提供正計(jì)時(shí)和倒計(jì)時(shí)的軟件。與普通的計(jì)時(shí)軟件相比高精度計(jì)時(shí)軟件有三大特點(diǎn):1)精度高。該軟件的計(jì)時(shí)時(shí)間不僅可以獲取電腦時(shí)間進(jìn)行計(jì)時(shí),還可以同步GPS時(shí)間進(jìn)行計(jì)時(shí)。同步GPS時(shí)間是為了滿足用戶對(duì)計(jì)時(shí)的精度要求很高的情況而設(shè)計(jì)的。另外,如果用戶對(duì)計(jì)時(shí)的精度要求不高的情況下,計(jì)時(shí)軟件可以直接獲取PC機(jī)時(shí)間進(jìn)行計(jì)時(shí)。2)功能齊全。以往的計(jì)時(shí)軟件只能實(shí)現(xiàn)倒計(jì)時(shí)或者正計(jì)時(shí),該軟件將倒計(jì)時(shí)和正計(jì)時(shí)軟件整合到一個(gè)軟件。3)使用簡(jiǎn)單。整個(gè)軟件采用人性化的設(shè)計(jì),人機(jī)交互功能很強(qiáng)。
2 系統(tǒng)設(shè)計(jì)思路
計(jì)時(shí)軟件的數(shù)據(jù)源取自于PC機(jī)或者是GPS授時(shí)模塊,利用GPS授時(shí)模塊進(jìn)行計(jì)時(shí)則需要硬件系統(tǒng)的幫助。設(shè)計(jì)思路如下:
首先GPS授時(shí)模塊準(zhǔn)時(shí)發(fā)送GPS導(dǎo)航數(shù)據(jù)和衛(wèi)星時(shí)間到STC處理器,然后STC處理器對(duì)GPS時(shí)間數(shù)據(jù)進(jìn)行提取后將時(shí)間數(shù)據(jù)通過(guò)串口發(fā)送給PC機(jī)。
系統(tǒng)的關(guān)鍵模塊是GPS模塊,處理器采用宏晶科技公司的STC12C5A微處理器。GPS授時(shí)模塊選用Trimble公司的推出的The CopernicusⅡ GPS,該芯片的作用是接收衛(wèi)星導(dǎo)航信息和授時(shí)服務(wù),CopernicusⅡ GPS芯片采用了Trimble公司獨(dú)有的GPS算法來(lái)保證導(dǎo)航數(shù)據(jù)的準(zhǔn)確性和快速鎖定衛(wèi)星信號(hào)。CopernicusⅡ GPS芯片的另外一個(gè)選用依據(jù)是能夠解決經(jīng)常出現(xiàn)的信號(hào)遮擋、多路徑和射頻干擾問(wèn)題。
3 軟件設(shè)計(jì)要點(diǎn)
3.1軟件設(shè)計(jì)思路
計(jì)時(shí)分為倒計(jì)時(shí)和正計(jì)時(shí)兩個(gè)部分。倒計(jì)時(shí)和正計(jì)時(shí)的關(guān)鍵都是算出事件發(fā)生的時(shí)間和現(xiàn)在的時(shí)間的差,目前時(shí)間的精度決定了計(jì)時(shí)的精度。當(dāng)前時(shí)間的獲取有兩種途徑:獲取PC機(jī)時(shí)間和GPS時(shí)間。GPS授時(shí)模塊的時(shí)間計(jì)時(shí)軟件通過(guò)串口接收。計(jì)時(shí)事件的時(shí)間需要用戶根據(jù)參數(shù)設(shè)置界面進(jìn)行設(shè)置,設(shè)置完成后計(jì)算時(shí)間差。
3.2 軟件模塊
高精度計(jì)時(shí)軟件的主界面用于顯示當(dāng)前年月日和時(shí)分秒、事件描述時(shí)間以及倒計(jì)時(shí)和正計(jì)時(shí)的計(jì)時(shí)時(shí)間。另外,界面還包括五個(gè)命令按鈕,分別是倒計(jì)時(shí)參數(shù)設(shè)置、正計(jì)時(shí)參數(shù)設(shè)置、GPS參數(shù)設(shè)置、PC時(shí)間校準(zhǔn)以及關(guān)于。主要由正計(jì)時(shí)模塊、倒計(jì)時(shí)模塊和GPS參數(shù)設(shè)置三大模塊組成。
倒計(jì)時(shí)參數(shù)設(shè)置包括事件描述設(shè)置和事件發(fā)生的具體時(shí)間的設(shè)置兩個(gè)部分。設(shè)置完成后事件的發(fā)生的精確時(shí)間將以倒計(jì)時(shí)形式動(dòng)態(tài)顯示于主界面。顯示格式是:×天×?xí)r×分×秒。
正計(jì)時(shí)參數(shù)設(shè)置包括計(jì)時(shí)事件描述設(shè)置和事件發(fā)生的具體時(shí)間的設(shè)置兩個(gè)部分。設(shè)置完成后事件的發(fā)生的精確時(shí)間將以正計(jì)時(shí)形式動(dòng)態(tài)顯示于主界面。顯示格式是:×天×?xí)r×分×秒。
GPS參數(shù)設(shè)置包括串口設(shè)置和GPS設(shè)置兩個(gè)部分。串口設(shè)置用于GPS硬件設(shè)備通過(guò)串口向本地計(jì)算機(jī)發(fā)送GPS的時(shí)間。串口設(shè)置包括串口號(hào)、波特率以及校驗(yàn)位的設(shè)置。GPS設(shè)置是為了選擇GPS硬件設(shè)備發(fā)送的參數(shù),包括時(shí)區(qū)的選擇和GPS工作模式的選擇。時(shí)區(qū)有北京時(shí)和世界時(shí);工作模式有北斗和GPS兩個(gè)部分。
串口通信編程方法通常有兩種。一種是通過(guò)串口通信MSComm控件編程;另一種是用CSerialPort類。本文通過(guò)MSComm控件來(lái)實(shí)現(xiàn)串口通信軟件,主要原因是CserialPort類不是MODEM應(yīng)用。串口通信軟件的實(shí)現(xiàn)步驟和程序如下:
1)添加Microsoft Communications Control控件到“監(jiān)測(cè)串口數(shù)據(jù)”對(duì)話框界面;
2)初始化串口;
3)添加串口事件的消息處理函數(shù);
m_Scom.SetCommPort(1);
m_Scom.SetInputMode(1);
//準(zhǔn)備接收字符
if( m_Scom.GetCommEvent()==2)
{variant_inp=m_ctrlScom.GetInput();
safearry_inp=variant_inp; i_len=safearry_inp.GetOneDimSize();
for(i=0;i safearry_inp.GetElement(&i,rxdata+i);} 4 結(jié)束語(yǔ) 考慮到高精度計(jì)時(shí)軟件的應(yīng)用會(huì)越來(lái)越重要。本文結(jié)合GPS授時(shí)模塊完成了高精度計(jì)時(shí)軟件的設(shè)計(jì)。運(yùn)行結(jié)果證明,軟件提供了可視性強(qiáng),操作方便的工作界面。 參考文獻(xiàn): [1] 朱兆優(yōu), 王海濤, 趙永科.基于 GPS 的倒計(jì)時(shí)系統(tǒng)設(shè)計(jì)[J]. 微計(jì)算機(jī)信息, 2007,23(1). [2] 董邵武.NTSC的守時(shí)工作進(jìn)展[J].時(shí)間頻率學(xué)報(bào), 2010,33(1):1-4.