📄 gps.cpp
字号:
// GPS.cpp: implementation of the GPS class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "GPS.h"
#include "string.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GPS::GPS()
{
gpsMessage[1024] = NULL;
buffHead = 0;
buffEnd = 0;
}
GPS::~GPS()
{
}
void GPS::gpsGPRMC()
{
char tempStr[30] = {0};
memset(tempStr, 0, 30);
getStringEnd(',', tempStr);
strcpy(gpsMCSignal.time, tempStr);
memset(tempStr, 0, 30);
getStringEnd(',', tempStr);
strcpy(gpsMCSignal.statu, tempStr);
memset(tempStr, 0, 30);
getStringEnd(',', tempStr);
strcpy(gpsMCSignal.latitude, tempStr);
memset(tempStr, 0, 30);
getStringEnd(',', tempStr);
strcpy(gpsMCSignal.southornorth, tempStr);
memset(tempStr, 0, 30);
getStringEnd(',', tempStr);
strcpy(gpsMCSignal.longitude, tempStr);
memset(tempStr, 0, 30);
getStringEnd(',', tempStr);
strcpy(gpsMCSignal.eastorwest, tempStr);
memset(tempStr, 0, 30);
getStringEnd(',', tempStr);
strcpy(gpsMCSignal.high, tempStr);
memset(tempStr, 0, 30);
getStringEnd(',', tempStr);
strcpy(gpsMCSignal.director, tempStr);
memset(tempStr, 0, 30);
getStringEnd(',', tempStr);
strcpy(gpsMCSignal.date, tempStr);
memset(tempStr, 0, 30);
getStringEnd(',', tempStr);
strcpy(gpsMCSignal.magic, tempStr);
memset(tempStr, 0, 30);
getStringEnd(',', tempStr);
strcpy(gpsMCSignal.magicdirtor, tempStr);
/* printf("**********************************************************\n");
printf("Time : %s\n", gpsMCSignal.time);
printf("Statue : %s\n", gpsMCSignal.statu);
printf("Latitude : %s\n", gpsMCSignal.latitude);
printf("Southornorth: %s\n", gpsMCSignal.southornorth);
printf("Longitude : %s\n", gpsMCSignal.longitude);
printf("Eastorwest : %s\n", gpsMCSignal.eastorwest);
printf("High : %s\n", gpsMCSignal.high);
printf("Director : %s\n", gpsMCSignal.director);
printf("Date : %s\n", gpsMCSignal.date);
printf("Magic : %s\n", gpsMCSignal.magic);
printf("Magicdirtor : %s\n", gpsMCSignal.magicdirtor);*/
}
void GPS::getString(char strChar[])
{
char temp[20] = {0};
_strlwr(strChar);
// checkNULL();
while(gpsMessage[buffEnd] != '$')
{
gpsMessage[buffEnd] = 0;
// gpsMessage[buffEnd][1] = 0;
buffEnd = (buffEnd + 1) % 1024;
// checkNULL();
if(buffEnd > 1020)
return ;
}
getStringEnd(',' ,temp);
_strlwr(temp);
strcpy(strChar, temp);
return;
}
DWORD WINAPI GPS::analyseGPSProc(LPVOID lpparam)
{
char singleType[10] = {'\0'};
int knowSignle = 0;
while(1)
{
getString(singleType);
if(strcmp(singleType, "$gprmc") == 0)
{
knowSignle = 1;
gpsGPRMC();
return 0;
}
else if(buffEnd > 1020)
return 0;
/* if(knowSignle == 0)
{
// printf("%s.............\n", singleType);
// return 0;
}
knowSignle = 0;*/
}
return 0;
}
void GPS::checkNULL()
{
// while(gpsMessage[buffEnd][1] == 0);
}
void GPS::getStringEnd(char stopcn, char backstr[])
{
int ii = 0;
// checkNULL();
while((gpsMessage[buffEnd] != stopcn) && (gpsMessage[buffEnd] != '\n'))
{
backstr[ii] = gpsMessage[buffEnd];
gpsMessage[buffEnd] = 0;
buffEnd =(buffEnd + 1) % 1024;
ii++;
// checkNULL();
}
gpsMessage[buffEnd] = 0;
buffEnd =(buffEnd + 1) % 1024;
backstr[ii] = '\0';
}
void GPS::analyseDateTime()
{
CString c;
analyseGPSProc(NULL);
int Day, Moon, Year;
int hour, minute, second;
CString str = gpsMCSignal.date ;
CString str1 = gpsMCSignal.time ;
Day = atoi(str.Mid(0,2));
Moon = atoi(str.Mid(2,2));
Year = atoi((const char *)str.Mid(4,2));
hour = atoi((const char *)str1.Mid(0,2));
minute = atoi((const char *)str1.Mid(2,2));
second = atoi((const char *)str1.Mid(4,2));
c.Format("20%02d-%d-%d",Year,Moon,Day);
strcpy(gpsMCSignal.date,c);
c.Format("%d:%d:%d", hour,minute,second);
strcpy(gpsMCSignal.time,c);
if(strcmp(gpsMCSignal.southornorth, "S") == 0)
{
c.Format("-%s",gpsMCSignal.latitude);
strcpy(gpsMCSignal.latitude,c);
}
if(strcmp(gpsMCSignal.eastorwest, "W") == 0)
{
c.Format("-%s",gpsMCSignal.longitude);
strcpy(gpsMCSignal.longitude,c);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -