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

📄 gpsguider1v0doc.cpp

📁 gps信号测试程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -