⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c++读取gps程序.cpp

📁 提出了一种在VC下实现对GPS全球定位系统定位信息的接收以及对各定位参数数据的提取方法
💻 CPP
字号:
#include<iostream.h>
#include<math.h>
#include<fstream.h>


#define_SCOMMUV2
#define_SCOMMUV2
#include"windows.h"
class SCommuV2
{
   public:
        SCommuV2( int bCOMNo=2,
                  int iBaudRate=9600,
                  int iByteSize=8,
                  float fStopBits=1;
                  BWORD Parity=0
                  );//构造函数
        -SCommuV2();//析构函数
public:
    HANDLE volatile hCom;//指定串行口设备的句柄
    COMMDATA     CommData; //GPS信息的数据结构
    private:
          BYTE COMNo;
          int BaudRate;
          int ByteSize;
          float StopBits;
          BOOL bParity;
        OVERLAPPED OvlapForRead;//用于监视COM口数据读取事件
        OVERLAPPED OvlapForWrite;//用于监视COM口数据写事件
    private:
        int InitCom(BYTE num, int BaudRate);//初始化串口
        bool Convert(void*pGontainer);//将ASCII码信息转化为十进制的数字信息
    public:
        int WriteBytes(void * pSrcBuf,int size, int timeOut=0);
          int ReadBytes(void * pContainer,  int size,  int time0ut) ;
        void ReceiveCommData();//接收GPS定位信息并传递给结构CommData
        void FlushSending();//清除文件缓冲区
        void ResetRecv();
        };
        #endif
    

#include"ScommuV2.h"
Unsigned char position[16];
unsigned char velocity[2];
unsigned char ch;
BOOL IfComOn;

 ScommuV2 * pScom;//通信类指针
 LRESULT CALLBACK WndPrnc(HWND hwnd,  UNIT msg, WPARAM wparam, Lparam)
   {
   //消息循环

switch ( msg ){
CASE command:{
    switch ( wparam ){
case IDM ComStart://若选中通信开始
    pScom=new SconnnuV2(I,  9600);//按GPS通讯协议初始化串行口(下转第29页)
if (! pScom)
      MessageBox (NULL,"打开串口失败","错误",MB_OK);
    ……//初始化GPS
    if(!SetCommMask(hCom, EV RXFLAG)//设定通讯事件
    MessageBox ( NULL,"设置事件掩码失败","错误",MB_OK);
    OvLap.hEven = CreateEvent(NULL,FALSE,FALSE,NULL);
    DWORD 1pPointer= (DWORD) this;//创建后台通讯线程
    PthreadMonitor=AfxBeginThread ( monitor,   ( LPVOID )lpPointer) ;
    IfComOn=TRUE;//设通讯标志为有效
    Break;
    case IDM_ComOver;//若选中通讯结束
    If ComOn=FALSE ;//通讯标志设为无效
    Break;


  }
//创建后台通讯线程,处理通讯事件
UNIT moniter(LPVOID 1pPointer)
{
DWORD byteRead, dwEventMask;

   while ( IfComOn )//检测通讯标志有效否
   {
    WaitCommEvent ( hComm,&dwEventMask, NULL);//等待设定事件发生
        pScom -> ReadBytes(&byteRead, 5,10);//从串口读取一个字符
      if(byteRead=="$")  //接收的字符是否为"$"
        {
        pScom ->ReadBytes(&byteRead, 5, 10);
        if  (byteRead =="GPGGA")//接收的字符是否为“GPGGA"
        {
         ……//相应的卫星数据处理代码
        }

}
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -