微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 多线程串口通信技术在GPS中的应用

多线程串口通信技术在GPS中的应用

时间:08-26 来源:本站整理 点击:

置显示在电子地图上。

  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下运行通过。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top