新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > MIS系統中GPS15L模塊的應用

        MIS系統中GPS15L模塊的應用

        作者: 時間:2010-03-23 來源:網絡 收藏
        2.2 GPS數據提取

        一般情況下,GPS接收機只要處于工作狀態,就會源源不斷地把接收到的信息通過串口傳送到主控制板中。它的每一條NMEA語句都是以“$”為開始標志、以“\n”為結束標志。接收到的GPRMC語句格式為:



        其中,CR、LF分別表示ASCII字符“回車”和“換行”,hh代表了“$”和“*”之間所有字符的按位異或值(不包括這兩個字符)。其含義見表1所列。



        通過讀串口得到的數據可能會出現兩種情況,一種情況是每次讀到的數據中都會有完整的GPRMC語句,另一種情況是GPRMC分兩次獲得。獲得完整的句子之后。接著判斷得到的句子是否為GPRMC語句(即判斷句子是否以GPRMC開頭),如果是GPRMC語句,再就開始判斷每個數據格式是否正確,包括表1中的UTC時間格式、定位有效性、緯度格式、緯度半球表示方法、經度格式、經度半球表示方法、UTC日期格式信息等,最后還將“$”和“*”之間的所有字符按位異或(不包括這兩個字符),并計算校驗和,看其是否為hh值(“*”之后的值)。

        判斷語句是否為GPRMC語句的流程如圖2所示。



        其部分關鍵函數如下所示:

        int Init();初始化函數,用來打開串口,進行串口設置(波特率、數據位、校驗位)等;

        void Tick ();讀串口數據函數;

        void Cleanup ();關閉串口函數;

        void Decode(char*szData);判斷GPRMC語句函數;

        bool VeriLine(char*szBuffer);判斷GPRMC語句中數據格式是否正確函數;

        void DecodeLine (char*szBuffer);提取GPRMC語句中有用信息并打印,包括時間、經
        緯度、日期。

        以下是部分相關函數:

        bool VeriLine(char*szBuffer);判斷GPRMC語句中數據格式是否正確函數;

        bool VeriTimeForm(char*szBuffer2);判斷時間格式函數;
        bool VeriLonForm(char*szBuffer2);判斷經度格式函數;

        bool VeriLatForm(char*szBuffer2);判斷緯度格式函數;

        bool VeriDayForm(char*szBuffer2);判斷日期格式函數;

        如果語句為正確的GPRMC語句,接下來就可以提取所需信息,提取時間、經緯度和日期信息的部分程序如下:

        void PrintTime(char*szBuffer2);打印時間函數,在此要將UTC時間轉換為北京時間;

        void PrintLonLat (char*szBuffer2,int n);打印經緯度函數;

        void PrintDay (char*szBuffer2);打印日期函數,以年/月/日形式打印。

        3 結束語

        全球定位具有性能好、精度高、廣等特點,是迄今最好的導航定位。隨著全球定位的不斷改進,以及硬件和軟件的不斷完善,其領域還在不斷地開拓。目前,GPS已開始逐步深入人們的日常生活。GARMIN的GPS接收機功耗非常小,數據更新很快,而且,其優良的性能既能滿足陸地導航的靈敏度要求,也能滿足飛行器的動態要求。

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 应用必备| 英德市| 津南区| 武强县| 淮北市| 乐山市| 花垣县| 和田市| 遵化市| 洪江市| 辽宁省| 岳西县| 仪陇县| 石城县| 观塘区| 南阳市| 台中市| 江源县| 普安县| 绥滨县| 丘北县| 进贤县| 视频| 甘南县| 监利县| 永川市| 沭阳县| 枝江市| 安阳县| 淄博市| 景德镇市| 化州市| 屯昌县| 临夏县| 吴堡县| 开江县| 富裕县| 襄汾县| 兴义市| 寿宁县| 马公市|