色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于多線程編程技術在GPS接收機中的應用研究

電子設計 ? 來源:現代電子技術 ? 作者:馮正,韓焱,王黎明 ? 2021-06-08 14:26 ? 次閱讀

GPS(Global Position System)具有全球性、全天候性優勢的定位、定時、測速系統,用戶利用GPS接收機接收衛星發射的信號,從而獲取當前位置的大地坐標、高程和時間等信息,達到定位、導航或測量高程的目的。衛星導航定位技術被廣泛應用于海洋勘測、海洋工程、海洋開發和軍事作戰中,高精度、快捷方便、全天候等優良特性,使其越來越受到人們的青睞。在GPS導航中,需要實時采集遵循NMEA0183協議的GPS數據,對數據進行處理后,通過ODBC接口將用戶的位置、時間、速度等信息存到數據庫,為以后在電子地圖上實時顯示目標位置提供依據。為了避免由于一直等待串口I/0操作而引起的線程阻塞,要求程序在對串行端口進行實時監控的同時,可以在前臺進行數據提取、保存、顯示等操作。為了解決實時性和多任務處理,避免某項任務長時間占用CPU,多線程編程是一個比較理想的選擇。

1 多線程概述

1.1 基本概念

進程是程序在計算機上的一個執行實例,線程是程序中的一條執行分支,多線程就是在同一個程序中可以同時執行多個任務。每一個進程至少有一個主執行線程,它無需由用戶去主動創建,是由系統自動創建的。用戶根據需要在應用程序中創建其他線程,多個線程并發地運行于同一個進程中。

一個進程中的所有線程都在該進程的虛擬地址空間中,共同使用這些虛擬地址空間、全局變量和系統資源。

1.2 VC

VC++環境對多線程技術的支持visual c++6.0中,MFC類庫提供了對多線程編程的支持,使得多線程編程更加方便。MFC中有兩類線程,分別稱之為工作者線程和用戶界面線程。二者的主要區別在于工作者線程沒有消息循環,而用戶界面線程有自己的消息隊列和消息循環。工作者線程通常用來執行后臺計算和維護任務。用戶界面線程一般用于處理獨立于其他線程執行之外的用戶輸入,響應用戶及系統所產生的事件和消息等。

1.3 線程創建、掛起、恢復、終止

在MFC中,一般用全局函數AfxBeginThread()來創建并初始化一個線程的運行,該函數有兩種重載形式,分別用于創建工作者線程和用戶界面線程。Sus-pendThread()和ResumeThread()分別用于掛起指定的線程和恢復用SuspendThread()掛起的線程。Exit-Thread(DWORD dwExitC0de)用于線程終結自身的執行。

1.4 線程同步

線程之間經常要同時訪問一些資源,因此對共享資源進行訪問引起沖突是不可避免的。為了解決這種資源沖突問題,必須引入線程同步的概念。Win32 API提供了多種同步控制對象來解決共享資源訪問沖突,包括使用臨界區、使用互斥對象、使用信號量、使用事件。

2 串口通信編程

目前,在Windows下編程時,常用的串口通信主要有3種方法:用MSC0mm通信控件;用Windows API進行編程;使用第三方提供的一些串口通訊類進行編寫。

(1)MSComm控件

利用MSComm控件會使編程快捷簡單。然而,由于做了大量的封裝,降低了編程的可控性和靈活性,因此在多線程多串口編程時,需要做許多復雜的處理。

(2)Windows API

利用Windows API編寫串口程序,特別是復雜的多線程串口程序時,對于程序員的編程能力要求較高。除了需要程序員熟練掌握和使用眾多的API函數,能編寫很多底層代碼之外,還必須熟悉線程的編程方法。

(3)第三方串口通信類

利用第三方的串口通信類進行串口編程時,既可以使編程效率高,程序可控性強,又比Window API編程簡單,其中應用最多的第三方的串口通信類是CSerial-Port。它基于多線程,是一個Win32 API的打包類,對處理串口的Win32 API類進行了封裝,借助這個類可以很方便地對串口進行操作,容易實現多線程的串口通信,編寫的程序在Windows 98/NT/2000/XP操作系統下可很好地運行。

比較3種串口通信方式,可以發現使用第三方串口通信類CSerialPort是實現Windows下多線程串口編程的較好選擇。

3 多線程編程技術在GPS數據采集系統中的應用

3.1 GPS導航系統功能分析

GPS導航是通過GPS定位技術實時給出用戶所在的位置,這就要求需要實時接收來自GPS接收機串口的定位數據,在實時監視串口的同時還需要進行數據存儲、顯示等,利用多線程串口通信技術將很好地解決這個問題。通過對GPS導航系統分析,將程序分成以下幾個線程:

主線程:負責處理用戶界面的消息處理,按照預定義流程調度其他線程處理數據。

串口監視線程:監視串口,采集數據并將數據保存到一個緩沖區。

入庫線程:從緩沖區讀取數據進行相應處理并將處理好的數據存入數據庫。

顯示線程:通過地圖匹配算法將用戶實時位置顯示在電子地圖上。

GPS導航系統框圖如圖1所示。

3.2 具體實現

系統首先對線程在相應的頭文件中說明,然后在程序初始化時加入創建程序代碼,這樣創建后,線程就可以和主線程并發執行了。主線程、入庫線程、顯示線程與一般的編程處理相同,所以下面著重說明串口監視線程。

對串口的操作采用基于多線程編程的CSerialPort類,其工作流程如下:首先設置好串口參數,再開啟串口監測工作線程。串口監測工作線程監測到串口接收到的數據流、控制事件或其他串口事件后,就以消息方式通知主程序,激發消息處理函數進行數據處理,這是對接收數據而言的;發送數據可直接向串口發送。應用程序流程如圖2所示。

編程步驟如下:

(1)建立程序

建立一個基于單文檔的MFC應用程序CSerial-PortTest,其他步驟保持缺省狀態。

(2)添加類文件

將SerialPort.h和SerialPort.cpp兩個類文件復制到工程文件夾中,用Project-Add to Project-Files命令將上述兩個文件加入工程,并在任何要調用這個類的模塊中加上#include SerialPort.h文件。

在視類頭文件中定義串口類的對象:CSerialPortm_Port。

(3)人工增加串口消息響應函數OnCommunica-tion(WPARAM ch,LPARAM port)

首先在CSerialPortTestView.h中添加串口字符接收消息WM_COMM_RXCHAR(串口接收緩沖區內有一個字符)的響應函數聲明,即:

在主線程初始化串口后創建CommThread函數進入死循環,線程一直監視串口事件,當讀串口事件發生,讀取串口接收到的數據,向主線程發自定義消息WM_COMM RXCHAR,通知主線程在相應的消息響應函數中進行數據處理,當收到主線程的寫串口命令時,將緩存中的數據寫到串口。

(5)在OnCommunication()函數中進行數據處理每當串口接收緩沖區內有一個字符時,就產生一個WM COMM RXCHAR消息,觸發OnCommunica—tion函數。這時就可以在函數中進行相應數據處理,提取出時間、經緯度、速度等定位的關鍵數據,然后將這些數據保存到數據庫。

4 結 語

串行通訊在通訊領域被廣泛應用。利用基于多線程的第三方串VI通信類CSerialPort很好地解決了由于串口長時間占用CPU而引起的線程堵塞等問題,編程簡單、方便、可移植性強,對于其他類型的串口通信問題均可采用。該程序由Microsoft Visual C++6.0編譯,在Windows XP下運行通過。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • gps
    gps
    +關注

    關注

    22

    文章

    2894

    瀏覽量

    166183
  • 接收機
    +關注

    關注

    8

    文章

    1180

    瀏覽量

    53455
  • 線程
    +關注

    關注

    0

    文章

    504

    瀏覽量

    19675
收藏 人收藏

    評論

    相關推薦

    C++面向對象多線程編程 (pdf電子版)

    C++面向對象多線程編程共分13章,全面講解構建多線程架構與增量多線程編程技術。第1章介紹了
    發表于 09-25 09:39 ?0次下載

    QNX環境下多線程編程

    介紹了QNX 實時操作系統和多線程編程技術,包括線程間同步的方法、多線程程序的分析步驟、線程基本程序結構以及實用編譯方法。QNX 是由加拿大
    發表于 08-12 17:37 ?30次下載

    數控測井軟件多線程編程技術

    為滿足實時測井需求,提高系統資源的利用率和系統性能,在數控測井軟件開發中將多線程編程技術應用其中,并對多線程編程技術應用的可行性和必要性進行了分析。給出了軟件的模塊框圖及
    發表于 01-14 17:17 ?32次下載

    GPS接收機基本工作原理

    GPS接收機基本工作原理GPS接收機主要由 1、GPS接收機天線單元;2、
    發表于 09-03 18:18 ?2.2w次閱讀
    <b class='flag-5'>GPS</b><b class='flag-5'>接收機</b>基本工作原理

    多線程串口通信技術GPS的應用

    GPS導航系統需要實時獲取來自接收機串口的定位數據,在對串口實時監控的同時還可以在前臺進行一些其他的操作,利用基于多線程的串口通信編程思想方法可以很好地解決這一問題。
    發表于 09-26 12:15 ?1511次閱讀
    <b class='flag-5'>多線程</b>串口通信<b class='flag-5'>技術</b><b class='flag-5'>在</b><b class='flag-5'>GPS</b><b class='flag-5'>中</b>的應用

    LabWindows_CVI多線程技術應用研究

    分析了線程與進程的關系,研究了LabWindows/CVI多線程技術運行機制及其數據保護機制,對利用異步定時器實現的多線程軟件與傳統單
    發表于 08-29 14:53 ?68次下載
    LabWindows_CVI<b class='flag-5'>多線程</b><b class='flag-5'>技術</b>的<b class='flag-5'>應用研究</b>

    多線程實現GPS接收機與PDAWindows CE下的串口通

    本文簡單介紹了 GPS 接收機串口通信的基本概念和 GPS 數據輸出的格式。主要論述了 如何用 多線程編程方法
    發表于 04-18 14:12 ?5次下載

    GPS接收機抗高過載技術研究

    GPS接收機抗高過載技術研究,需要的下來看看,
    發表于 12-17 16:33 ?7次下載

    linux多線程編程技術

    1 引言 線程(thread)技術早在60年代就被提出,但真正應用多線程到操作系統中去,是80年代中期,solaris是這方面的佼佼者。傳統的 Unix也支持
    發表于 10-24 16:01 ?5次下載

    WinCE多線程編程技術無紙記錄儀的應用

    WinCE多線程編程技術無紙記錄儀的應用
    發表于 10-25 09:50 ?2次下載
    WinCE<b class='flag-5'>多線程</b><b class='flag-5'>編程技術</b><b class='flag-5'>在</b>無紙記錄儀<b class='flag-5'>中</b>的應用

    基于AT91SAM9261GPS接收機的應用

    基于AT91SAM9261GPS接收機的應用
    發表于 10-25 10:13 ?4次下載
    基于AT91SAM9261<b class='flag-5'>在</b><b class='flag-5'>GPS</b><b class='flag-5'>接收機</b><b class='flag-5'>中</b>的應用

    什么是多線程編程?多線程編程基礎知識

    摘要:多線程編程是現代軟件技術很重要的一個環節。要弄懂多線程,這就要牽涉到多進程。本文主要以多線程
    發表于 12-08 16:30 ?1.3w次閱讀

    針對GPS接收機載波跟蹤環路的設計與研究

    隨著GPS 衛星應用產業化進程的逐步發展,對導航接收機關鍵技術的攻關必將縮短衛星導航終端產品的研發周期,推進衛星導航應用產業化的進程。GPS 接收
    發表于 12-10 04:37 ?2108次閱讀
    針對<b class='flag-5'>GPS</b><b class='flag-5'>接收機</b><b class='flag-5'>中</b>載波跟蹤環路的設計與<b class='flag-5'>研究</b>

    關于Linux下多線程編程技術學習總結

    Linux下多線程編程技術 作為一個IT人員,不斷的學習和總結是我們這個職業習慣,所以我會將每個階段的學習都會通過一點的總結來記錄和檢測自己的學習效果,今天為大家總結了關于Linux下多線程
    發表于 04-22 03:12 ?2201次閱讀
    關于Linux下<b class='flag-5'>多線程</b><b class='flag-5'>編程技術</b>學習總結

    socket 多線程編程實現方法

    現代網絡編程多線程技術被廣泛應用于提高服務器的并發處理能力。Socket編程是網絡通信的基
    的頭像 發表于 11-12 14:16 ?339次閱讀
    主站蜘蛛池模板: 午夜AV亚洲一码二中文字幕青青 | 亚洲国产中文字幕在线视频| 色欲AV无码乱码精品国产| 人妻激情综合久久久久蜜桃| 秋霞在线看片无码免费 | 91九色网址| japanesen女同| 伊人久综合| 在线看免费毛片| 99在线观看免费| 成人在线观看播放| 国产福利不卡在线视频| 国产精品人成在线播放新网站| 国产精品自拍| 教室眠催白丝美女校花| 龙岩综合频道| 日韩av片无码一区二区不卡电影| 午夜国产精品视频在线| 一进一出抽搐gif免费60秒| 97色伦图片7778久久| 动漫美女被爆挤奶歪歪漫画| 国产三级在线精品男人的天堂| 九九久久国产精品大片| 琪琪色原网20岁以下热热色原网站| 色-情-伦-理一区二区三区| 夜夜艹日日干| 被强J高H纯肉公交车啊| 精品动漫国产亚洲AV在线观看| 男人把女人桶到高潮嗷嗷叫| 三级黄色小视频| 曰本少妇高潮久久久久久| www在线小视频免费| 国产亚洲精品久久孕妇呦呦你懂| 乱淫67194| 性盈盈剧场| tube日本护士| 久久九九日本韩国精品| 窝窝影院午夜看片毛片| 99久热这里精品免费| 久久99亚洲AV无码四区碰碰| 日本片bbbxxx|