📄 gpsguider1v0doc.cpp
字号:
// GPSGuider1V0Doc.cpp : implementation of the CGPSGuider1V0Doc class
//
#include "stdafx.h"
#include "GPSGuider1V0.h"
#include "GPSGuider1V0Doc.h"
#include "SettingDialog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define nMax 40
WORD ShowMap;
CFile* pSerialFile;
BOOL Fixed;
TIMESEUIC Time;
DATESEUIC Date;
LONGITUDESEUIC Longitude;
LATITUDESEUIC Latitude;
SATELLITEINFOARRAYSEUIC Satellite;
BOOL FindStr(char* ch,char* chset)
{
BOOL bRes=TRUE;
for(int i=0;ch[i];i++)
{
if(ch[i]!=chset[i])
return FALSE;
}
return bRes;
}
UINT CommThreadFunc(LPVOID pParam)
{
/////////////////////////////////////////////////////////////////////////////////////////
//初始化帧值
int i,j;
char RecieveBuffer[nMax];
char str[nMax],*pstop;
BYTE temp;
int MsgNum;
while(1)
{
pSerialFile->Read(&temp,1);
switch(temp)
{
case '$':
pSerialFile->Read(RecieveBuffer,6);
switch(RecieveBuffer[4])
{
case 'V':
i=1;
j=0;
while(i<11)
{
pSerialFile->Read(&temp,1);
switch(temp)
{
case ',':
//::GPSInfo.CanBeRead=0; //GPSInfo数据读禁止
switch(i)
{
case 1:
if(j==10)
{
::Time.hour.Format(_T("%c%c"),RecieveBuffer[0],RecieveBuffer[1]);
::Time.minute.Format(_T("%c%c"),RecieveBuffer[2],RecieveBuffer[3]);
::Time.second.Format(_T("%c%c"),RecieveBuffer[4],RecieveBuffer[5]);
}
break;
case 2:
if(j==1)
{
if(RecieveBuffer[0]=='A')
{
::Fixed=TRUE;
}
else
{
::Fixed=FALSE;
}
}
break;
case 3:
if(j==9)
{
str[0]=RecieveBuffer[0];
str[1]=RecieveBuffer[1];
str[2]='\0';
::Latitude.degree=strtol(str,&pstop,10);
str[0]=RecieveBuffer[2];
str[1]=RecieveBuffer[3];
str[2]='\0';
::Latitude.minute=strtol(str,&pstop,10);
str[0]=RecieveBuffer[5];
str[1]=RecieveBuffer[6];
str[2]=RecieveBuffer[7];
str[3]=RecieveBuffer[8];
str[4]='\0';
::Latitude.secondinteger=6*strtol(str,&pstop,10);
::Latitude.secondportion=::Latitude.secondinteger%1000;
::Latitude.secondinteger=(::Latitude.secondinteger-::Latitude.secondportion)/1000;
::Latitude.totalsecond=60*::Latitude.minute+::Latitude.secondinteger;
}
break;
case 4:
if(j==1)
{
::Latitude.direction.Format(_T("%c"),RecieveBuffer[0]); //纬度
}
break;
case 5:
if(j==10)
{
str[0]=RecieveBuffer[0];
str[1]=RecieveBuffer[1];
str[2]=RecieveBuffer[2];
str[3]='\0';
::Longitude.degree=strtol(str,&pstop,10);
str[0]=RecieveBuffer[3];
str[1]=RecieveBuffer[4];
str[2]='\0';
::Longitude.minute=strtol(str,&pstop,10);
str[0]=RecieveBuffer[6];
str[1]=RecieveBuffer[7];
str[2]=RecieveBuffer[8];
str[3]=RecieveBuffer[9];
str[4]='\0';
::Longitude.secondinteger=6*strtol(str,&pstop,10);
::Longitude.secondportion=::Longitude.secondinteger%1000;
::Longitude.secondinteger=(::Longitude.secondinteger-::Longitude.secondportion)/1000;
::Longitude.totalsecond=60*::Longitude.minute+::Longitude.secondinteger;
}
break;
case 6:
if(j==1)
{
::Longitude.direction.Format(_T("%c"),RecieveBuffer[0]); //经度
}
break;
case 7:
if(j==4)
{
}
break;
case 8:
if(j==6)
{
}
break;
case 9:
if(j==6)
{
::Date.date.Format(_T("%c%c"),RecieveBuffer[0],RecieveBuffer[1]);
::Date.month.Format(_T("%c%c"),RecieveBuffer[2],RecieveBuffer[3]);
::Date.year.Format(_T("%c%c"),RecieveBuffer[4],RecieveBuffer[5]);
}
break;
case 10:
if(j==1)
{
}
break;
default :
;
}
//::GPSInfo.CanBeRead=1; //GPSInfo数据读使能
//Sleep(1000);
i++;
j=0;
break;
default:
RecieveBuffer[j++]=temp;
if(j>nMax-1)
j=nMax-1;
}
}
break;
case 'C':
i=1;
j=0;
while(i<11)
{
pSerialFile->Read(&temp,1);
switch(temp)
{
case ',':
//::GPSInfo.CanBeRead=0; //GPSInfo数据读禁止
switch(i)
{
case 1:
if(j==10)
{
::Time.hour.Format(_T("%c%c"),RecieveBuffer[0],RecieveBuffer[1]);
::Time.minute.Format(_T("%c%c"),RecieveBuffer[2],RecieveBuffer[3]);
::Time.second.Format(_T("%c%c"),RecieveBuffer[4],RecieveBuffer[5]);
}
break;
case 2:
if(j==1)
{
if(RecieveBuffer[0]=='A')
{
::Fixed=TRUE;
}
else
{
::Fixed=FALSE;
}
}
break;
case 3:
if(j==9)
{
str[0]=RecieveBuffer[0];
str[1]=RecieveBuffer[1];
str[2]='\0';
::Latitude.degree=strtol(str,&pstop,10);
str[0]=RecieveBuffer[2];
str[1]=RecieveBuffer[3];
str[2]='\0';
::Latitude.minute=strtol(str,&pstop,10);
str[0]=RecieveBuffer[5];
str[1]=RecieveBuffer[6];
str[2]=RecieveBuffer[7];
str[3]=RecieveBuffer[8];
str[4]='\0';
::Latitude.secondinteger=6*strtol(str,&pstop,10);
::Latitude.secondportion=::Latitude.secondinteger%1000;
::Latitude.secondinteger=(::Latitude.secondinteger-::Latitude.secondportion)/1000;
::Latitude.totalsecond=60*::Latitude.minute+::Latitude.secondinteger;
}
break;
case 4:
if(j==1)
{
::Latitude.direction.Format(_T("%c"),RecieveBuffer[0]); //纬度
}
break;
case 5:
if(j==10)
{
str[0]=RecieveBuffer[0];
str[1]=RecieveBuffer[1];
str[2]=RecieveBuffer[2];
str[3]='\0';
::Longitude.degree=strtol(str,&pstop,10);
str[0]=RecieveBuffer[3];
str[1]=RecieveBuffer[4];
str[2]='\0';
::Longitude.minute=strtol(str,&pstop,10);
str[0]=RecieveBuffer[6];
str[1]=RecieveBuffer[7];
str[2]=RecieveBuffer[8];
str[3]=RecieveBuffer[9];
str[4]='\0';
::Longitude.secondinteger=6*strtol(str,&pstop,10);
::Longitude.secondportion=::Longitude.secondinteger%1000;
::Longitude.secondinteger=(::Longitude.secondinteger-::Longitude.secondportion)/1000;
::Longitude.totalsecond=60*::Longitude.minute+::Longitude.secondinteger;
}
break;
case 6:
if(j==1)
{
::Longitude.direction.Format(_T("%c"),RecieveBuffer[0]); //经度
}
break;
case 7:
if(j==4)
{
}
break;
case 8:
if(j==6)
{
}
break;
case 9:
if(j==6)
{
::Date.date.Format(_T("%c%c"),RecieveBuffer[0],RecieveBuffer[1]);
::Date.month.Format(_T("%c%c"),RecieveBuffer[2],RecieveBuffer[3]);
::Date.year.Format(_T("%c%c"),RecieveBuffer[4],RecieveBuffer[5]);
}
break;
case 10:
if(j==1)
{
}
break;
default :
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -