APP下载

多线程串口通信技术在北斗导航中的运用分析

2017-08-28陈让琛

无线互联科技 2017年15期
关键词:控件线程导航系统

陈让琛

(广州海格通信集团股份有限公司,广东 广州 510650)

多线程串口通信技术在北斗导航中的运用分析

陈让琛

(广州海格通信集团股份有限公司,广东 广州 510650)

北斗导航系统作为国家战略性空间基础设施,不仅对国防安全意义重大,在民用领域的精准化应用也越来越广泛。多线程串口通信技术应用在北斗导航系统中,可以通过此技术来实时获取接收机串口的定位数据,同步输出到多个通信串口中,实现位置、时间、速度等信息的实时更新,同时还可以多设备联合操作,以供用户完成多重需要,大大提升了北斗导航系统的使用效益。文章对北斗导航系统的功能和多线程串口通信技术进行了分析,阐述了多线程串口通信技术在北斗导航中的具体运用。

多线程;串口通信技术;北斗导航;运用

北斗卫星导航系统是我国自主研发,独立运行的全球卫星导航系统。此系统建设主要是为国民经济发展而服务,可应用于中国的交通运输、气象、石油、海洋、通信、公安和国家安全等多个领域的导航定位服务。2012年,我国北斗卫星系统中已经有16颗卫星,定位精度达到了亚米级,实现了我国及周边地区信号的全面覆盖。2020年左右,我国将建成覆盖全球的北斗卫星导航系统。

1 多线程技术概述

在WinCE中,线程主要是通过时间片作为单位来运行实现的,根据时间片段的优先程度将其分配到每个线程中,并且每个线程可以在自己所在的时间片段中进行内容共享。优先等级较高的线程先运行,然后优先等级较低的线程再运行。在对特定优先级线程调度以前,必须将所有的高优先级线程进行阻塞。而对于相同等级的优先级线程运行,都是使用循环的方式来进行调度的。如果低优先级线程正在运行,停止高优先级线程的阻塞,就会导致低优先级线程被立刻挂起。与此同时,高优先级线程就会被立刻调度。高优先级的线程永远都是处于优先地位,不会被低优先级线程所占用,这种方式为抢占式多任务处理提供良好的条件,从而提高数据传输量,保证通信的实时畅通。对于线程来说,其也具有一定特殊性:线程本身存在优先级,永远不会被强占。同时,有可能会出现优先级倒置的情况,这种情况出现的原因是低优先级的线程拥有高优先级线程没有的资源,从而发生上述情况。

2 线程实现方式

在整体系统中,会存在多个线程同步运行,才能完成用户需求。在WinCE中,一般通过使用事件同步对象的方法来实现。在事件创建完成后,事件对象会以“已标示”和“未标示”两种状态存在,如果设置为“已标示”,说明任务可以进行同步操作;如果处于“未标示”状态,必须等到状态变为“已标示”后,才能进行同步操作。一个线程可以被事件对象允许将运行减缓,然后对指定事件进行等待。也就是说线程此时处于阻塞状态,这种情况下,线程只需要少量的电能和CPU处理能力来进行维护,同时提高了应用程序中CPU的利用效率,使信息处理的速度有所提高,加大了信息数据的吞吐量和通信程序的畅通。如果串口中出现预定事件时,就可以利用消息通知主线程并请求给予相应的处理,在主线程接收到信息后,将相应的线程处理程序唤醒,每个线程之间可以通过事件同步对象来完成程序同步,从而将监视串口和读写串口同步进行。

3 WinCE下串口通信技术的原理和优势分析

串行端口在Windows和WinCE中的通信函数大部分都是相同的,但是也有一定的差异。在Windows系统中,串行端口属于流接口设备,它是建立在常规I/O驱动程序基础之上,来对与通信相关的具体函数进行调用。而在WinCE设备中,存在较少的设备资源,而存储器和显示器的内容量较小,接口也不多,并受实际情况影响变化较大。同时,由于WinCE系统是建立在Unicode基础之上的,它的API函数属于Unicode格式,所以字符串的函数都必须以Unicode 格式提供给API函数。另外,WinCE系统中,设备名称必须以“XXXn :”的形式来进行书写,而n的范围为0~9之间的数;串口要以“COM n :”的形式来命名,这里的冒号是必须存在的。WinCE系统不支持I/O的重叠,如果在主线程中同时进行多个串口的读写,就会导致整个程序减慢并处于串口等待状态。所以,WinCE系读写串口的操作都是通过多线程方式来完成。

现阶段,WinCE系统在进行编程时,ActiveX控件中的MSComm通信控件,WindowsAPI和第三方通信控件进行编程是最为常用的串口通信控件。在WinCE系统中应用MSComm通信控件时,因为这些控件已经被封装,简单地配置串口就可以了。但是在此情况下,大大降低了编程的灵活性和可控性。而在编程时如果使用Windows API 函数,要求工作人员必须掌握更多的底层编程知识和更高的多线程技术,增加了开发的难度。当使用第三方串口通信控件进行编程时,可以提高编程效率,也可以对程序进行更好的控制。其中最常用的此类控件为CComPort类,它将CSeriPort类CRead-ComThread类和CWriteComThread类进行了封装,此类控件是建立在多线程基础之上的,很容易操作串口,从而使得多线程串口通信得以实现。根据以上3种串口通信技术的对比,第三方串口通信中CComPort类是WinCE系统中进行多线程编写的最佳选择。

4 多线程串口通信技术在北斗导航中的应用

北斗导航都是通过卫星来进行定位作业的,然后将相应的数据传输给用户。为了达到定位需求,北斗导航接收机解算的位置信息等数据需要通过串口来提供给用户实时的数据。接收机在接收数据的同时,要对数据进行实时监控,存储和显示,这些作业都可以使用多线程串口通信技术来完成。所以,北斗导航系统程序在使用此技术时,首先要确定一个主线程,这主要是用来处理用户信息,然后再使用已经预定好的预流程来对其他的支线程进行调度并进行数据的处理。其次,串口坚实的线程,是对数据处理的滞留期,入库线程在处理滞留期的数据后对其进行储存。最后,显示线程。其主要是将已处理的数据对用户进行显示,其显示出来的状态都会与地图相一致,使得用户可以读懂这些数据。具体的操作流程如图1所示。

随着科学技术的发展,北斗导航技术也得到了不断完善。多线程串口通信技术在程序中的应用可以分为以下几个部分:(1)确定用户主界面线程。它主要是用来处理用户界面的消息,根据预定义流程来对其他线程数据进行处理和调整。(2)串口监听线程。它主要是用来对串口的监听,检查是否有数据传输过来,如果有数据,需要将叙述发送给读线程。(3)读线程。它主要是用来接收串口监听线程的消息,并将其保存到缓冲区中。(4)写线程。主要是对缓冲区的数据进行读取和处理,并将处理好的数据存入数据库。(5)显示线程。结合地图,使用科学合理的计算方法对用户实时地址在电子地图上进行显示。具体流程如图2所示。

图1 北斗一号导航系统程序

图2 北斗二号导航系统程序

5 结语

北斗导航在我国国民经济发展中占据着重要位置,不仅对人们日常生产和生活产生巨大影响,在各行业研发和运行中也发挥着关键的作用。所以,北斗导航具有很高的社会价值。而多线程接口通信技术在北斗导航系统中的应用,实现了数据共享和分发的作用,解决了用户多路数据并发的需求,为导航产品提供全方位的服务,最大程度地提升设备的使用效率。实际使用中,由于软件的成熟度和每个人的编程风格不同,多线程串口通信技术还存在许多可以挖掘和完善的地方,相信在以后的科研工作中通过对实际效果的评估和积累,能进一步增强多线程串口通信的稳定性和实用性。

[1]赵素林.利用多线程实现串口数据的实时图形化显示[J].计算机技术与发展,2016(6):124-126.

[2]冯正,韩焱,王黎明.多线程串口通信技术在GPS导航中的应用[J].现代电子技术,2013(8):28-30,33.

[3]张九宴.VC多线程串口通讯编程技术在GPS导航的应用介绍[J].全球定位系统,2012(3):21-23,53.

[4]熊志昂,李红瑞,赖顺香.GPS技术与工程应用[M].北京:国防工业出版社,2015(6):12-13.

Analysis on the use of multi-threaded serial communication technology in Beidou navigation

Chen Rangchen
(Guangzhou Haige Communications Group Limited by Share Ltd., Guangzhou 510650, China)

The Beidou navigation system as a national strategic space infrastructure, it is not only of great significance for national security, but also enjoys wider and more accurate application in civil field. The application of multi thread serial communication technology in Beidou navigation system can be used to acquire real time positioning data of the receiver serial ports, synchronization output to multiple communication serial ports, and realize real-time updates of location, time, speed and other information, at the same time, multiple devices can also be combined to enable users to perform multiple requirements, which greatly enhance the use of Beidou navigation system benefits. This paper analyzes the function of Beidou navigation system and the technology of multi thread serial communication, and expounds the speci fi c application of multi thread serial communication technology in Beidou navigation.

multi thread; serial communication technology; Beidou navigation; application

陈让琛(1980— ),男,广东汕尾,工程师;研究方向:高级数字电路设计师。

猜你喜欢

控件线程导航系统
一种GNSS/SINS容错深组合导航系统设计
浅谈linux多线程协作
解读全球第四大导航系统
ASP.NET服务器端验证控件的使用
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux线程实现技术研究
么移动中间件线程池并发机制优化改进
Spreadsheet控件在Delphi数据库系统中的编程与应用