多线程串口通信术在GPS导航中的应用.docVIP

多线程串口通信术在GPS导航中的应用.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多线程串口通信术在GPS导航中的应用

多线程串口通信技术在GPS导航中的应用 摘 要:GPS导航系统需要实时获取来自接收机串口的定位数据,在对串口实时监控的同时还可以在前台进行一些其他的操作,利用基于多线程的串口通信编程思想方法可以很好地解决这一问题。介绍多线程的基本概念和串口通信编程技术,分析了GPS导航系统的功能和需求,着重阐述了采用基于多线程的CSerialPort类的串口通信方法来获取定位数据,并且给出了CSerialPort类的使用方法。经过调试,程序运行平稳。  0 引 言   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定位技术实时给出用

文档评论(0)

yuerang3062 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档