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

📄 gpswin32.cpp.bak

📁 GPS 读取数据处理模块源程序
💻 BAK
📖 第 1 页 / 共 4 页
字号:
			else
			{
				fRet = FALSE;
				goto Exit;
			}
			 
			if(comma_num[3]-comma_num[2]>1)
			{
				usebufferSize=comma_num[3]-comma_num[2]-1;
				for(j=0;j<usebufferSize;j++)
				{
					p.GPSLatitude[j]=Com3Buffer[comma_num[2]+1+j];
				}
				GPSdata.Latitude =Latitude(p.GPSLatitude,usebufferSize);
				printf("GPSdata->Latitude =%f",GPSdata.Latitude);
			}
			else
			{
				fRet = FALSE;
				goto Exit;
			}
			
			if(comma_num[4]-comma_num[3]>1)
			{
				p.GPSNS=Com3Buffer[comma_num[3]+1];
			}
			else
			{
				fRet = FALSE;
				goto Exit;
			}

			if(comma_num[5]-comma_num[4]>1)
			{
				usebufferSize=comma_num[5]-comma_num[4]-1;
				for(j=0;j<usebufferSize;j++)
				{
					p.GPSLongitude[j]=Com3Buffer[comma_num[4]+1+j];
				}
				GPSdata.Longitude =Latitude(p.GPSLongitude,usebufferSize);
				printf("GPSdata->Longitude =%f",GPSdata.Longitude);
			}	
			else
			{
				fRet = FALSE;
				goto Exit;
			}

			if(comma_num[6]-comma_num[5]>1)
			{
				p.GPSEW=Com3Buffer[comma_num[5]+1];
			}
			else
			{
				fRet = FALSE;
				goto Exit;
			}

			if(comma_num[10]-comma_num[9]>1)
			{
				usebufferSize=comma_num[10]-comma_num[9]-1;
				for(j=0;j<usebufferSize;j++)
				{
					p.GPSmsl[j]=Com3Buffer[comma_num[9]+1+j];
				}
				GPSdata.Msl =Latitude(p.GPSmsl,usebufferSize);
				printf("GPSdata->Msl =%f",GPSdata.Msl);
			}
			else
			{
				fRet = FALSE;
				goto Exit;
			}
		}
		else 
		{
			fRet = FALSE;
			goto Exit;
		}
			
		if(p.GPSNS == 0x53)
		{
			GPSdata.Latitude = -GPSdata.Latitude;
		}
		if(p.GPSEW== 0x57)
 		{
 			GPSdata.Longitude = -GPSdata.Longitude;
 		}
 		GaussConvert(GPSdata.Longitude, GPSdata.Latitude, GPSdata.Msl, GPSdata.x, GPSdata.y);

  TCHAR wszTmp[MAX_LOADSTRING] = L"";
  StringCchPrintfEx(wszTmp,
          sizeof(wszTmp)/sizeof(wszTmp[0]),
          NULL,
          NULL,
          STRSAFE_NULL_ON_FAILURE,
          L"%7.0f",
          GPSdata.Time);
 
  wcscpy(g_Time, wszTmp);

  StringCchPrintfEx(wszTmp,
          sizeof(wszTmp)/sizeof(wszTmp[0]),
          NULL,
          NULL,
          STRSAFE_NULL_ON_FAILURE,
          L"%9.4f",
          GPSdata.Latitude);
  wcscpy(g_Latitude, wszTmp);

  StringCchPrintfEx(wszTmp,
          sizeof(wszTmp)/sizeof(wszTmp[0]),
          NULL,
          NULL,
          STRSAFE_NULL_ON_FAILURE,
          L"%9.4f",
          GPSdata.Longitude);

    wcscpy(g_Longitude, wszTmp);

  StringCchPrintfEx(wszTmp,
          sizeof(wszTmp)/sizeof(wszTmp[0]),
          NULL,
          NULL,
          STRSAFE_NULL_ON_FAILURE,
          L"%05.0f",
          GPSdata.Msl);
      wcscpy(g_Altitude, wszTmp);

  StringCchPrintfEx(wszTmp,
          sizeof(wszTmp)/sizeof(wszTmp[0]),
          NULL,
          NULL,
          STRSAFE_NULL_ON_FAILURE,
          L"%8.0f",
          GPSdata.x);
        wcscpy(g_X, wszTmp);

  StringCchPrintfEx(wszTmp,
          sizeof(wszTmp)/sizeof(wszTmp[0]),
          NULL,
          NULL,
          STRSAFE_NULL_ON_FAILURE,
          L"%9.0f",
          GPSdata.y);
   wcscpy(g_Y, wszTmp);

  ShowData();
  GPS_Located = 1;
		//GaussConvert(GPSdata->Longitude,GPSdata->Latitude,GPSdata->Msl,GPSdata->x,GPSdata->y);

		//printf("GPSdata->x = %f,GPSdata->y=%f\n",GPSdata->x,GPSdata->y);
	}
	else
	{
		fRet = FALSE;
	}	
Exit:
	memset(Com3Buffer, 0, GPGGA_DataSize);
	return fRet;	
}

BOOL WINAPI Readcom3datezda()
{
	int com3buffer_i;
	GPSZDA p;
	GGA GPSdata;
	DWORD commEvent, bytesRead;
	unsigned char *GPGGA_Data,ueseddata[20];
	unsigned char Com3Buffer[256],ReadGPSdata[256];

	DWORD iNO=0,j = 0, comma_startflag = 0,comma_endflag = 0,dotflag = 0;
     //  int 	comma_num = 0 ,usebufferSize = 0;
	int commaNO = 0,usebufferSize = 0,comma_num[14]= {0};
 int fristreadsize = 0,secondreadsize = 0;

	PurgeComm(g_PWR_serialCOMHandle, PURGE_TXCLEAR);//||PURGE_RXCLEAR
//	RETAILMSG(BAT_MSG, (TEXT("Readcom3date!!!!++++++\r\n")));
	if (!SetCommMask(g_PWR_serialCOMHandle, EV_RXCHAR))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: SetCommMask error%x\r\n"),GetLastError()));
		return FALSE;
 	}

       if (!WaitCommEvent(g_PWR_serialCOMHandle, &commEvent, NULL))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: WaitCommEvent error%x\r\n"),GetLastError()));
		return FALSE;
	}
//	RETAILMSG(BAT_MSG, (TEXT("Readcom3date!!!!-------------==\r\n")));
	if (!SetCommMask (g_PWR_serialCOMHandle, EV_RXCHAR))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: SetCommMask s ror%x\r\n"),GetLastError()));
		return FALSE;
	}

	if (!(commEvent & EV_RXCHAR))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: commEvent & EV_RXCHAR  error%x\r\n"),GetLastError()));
              return FALSE;
	}
#define ueseddataSize   30
#define GPGGA_DataSize 256

	memset(Com3Buffer, 0, GPGGA_DataSize);
	//for(com3buffer_i = 0; com3buffer_i < 45; com3buffer_i ++)
       //RETAILMSG(BAT_MSG, (TEXT("Readcom3date--Com3Buffer[%d]:%x\r\n"),
	//   							com3buffer_i,Com3Buffer[com3buffer_i]));
	
	//PurgeComm(g_PWR_serialCOMHandle, PURGE_TXCLEAR||PURGE_RXCLEAR);	
	//RETAILMSG(BAT_MSG, (TEXT("Readcom3date:fristreadsize=%d\r\n"),fristreadsize));
	//if (!ReadFile(g_PWR_serialCOMHandle, Com3Buffer+fristreadsize, GPGGA_DataSize , &bytesRead, NULL))
	if (!ReadFile(g_PWR_serialCOMHandle, Com3Buffer, GPGGA_DataSize , &bytesRead, NULL))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: ReadFile error%x\r\n"),GetLastError()));
		return FALSE;
	}
//	RETAILMSG(BAT_MSG, (TEXT("Readcom3date: bytesRead=%d\r\n"),bytesRead));	
	//WriteDataSerialPort();// by lixuefeng
	if(((Com3Buffer[0] == 0x24)&&(Com3Buffer[1] == 0x47)&&(Com3Buffer[2] == 0x50)
    			&&(Com3Buffer[3] == 0x5A)&&(Com3Buffer[4] == 0x44 )&&(Com3Buffer[5] == 0x41)
    			&&(Com3Buffer[6] == 0x2c))&&((Com3Buffer[bytesRead-1] != 0xa)&&(Com3Buffer[bytesRead-1] != 0xd)))
	{
//	RETAILMSG(BAT_MSG, (TEXT("Readcom3date 222!!!!++++++\r\n")));
	if (!SetCommMask(g_PWR_serialCOMHandle, EV_RXCHAR))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: SetCommMask error%x\r\n"),GetLastError()));
		return FALSE;
 	}

       if (!WaitCommEvent(g_PWR_serialCOMHandle, &commEvent, NULL))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: WaitCommEvent error%x\r\n"),GetLastError()));
		return FALSE;
	}
//	RETAILMSG(BAT_MSG, (TEXT("Readcom3date!!!!-------------==\r\n")));
	if (!SetCommMask (g_PWR_serialCOMHandle, EV_RXCHAR))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: SetCommMask s ror%x\r\n"),GetLastError()));
		return FALSE;
	}

	if (!(commEvent & EV_RXCHAR))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: commEvent & EV_RXCHAR  error%x\r\n"),GetLastError()));
              return FALSE;
	}

	//memset(Com3Buffer, 0, GPGGA_DataSize);
	//for(com3buffer_i = 0; com3buffer_i < 45; com3buffer_i ++)
       //RETAILMSG(BAT_MSG, (TEXT("Readcom3date--Com3Buffer[%d]:%x\r\n"),
	//   							com3buffer_i,Com3Buffer[com3buffer_i]));
	
	//PurgeComm(g_PWR_serialCOMHandle, PURGE_TXCLEAR||PURGE_RXCLEAR);	
	//RETAILMSG(BAT_MSG, (TEXT("Readcom3date:fristreadsize=%d\r\n"),fristreadsize));
	//if (!ReadFile(g_PWR_serialCOMHandle, Com3Buffer+fristreadsize, GPGGA_DataSize , &bytesRead, NULL))
	fristreadsize=0;
	fristreadsize=bytesRead;
	
	if (!ReadFile(g_PWR_serialCOMHandle, Com3Buffer+fristreadsize, GPGGA_DataSize , &bytesRead, NULL))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: ReadFile error%x\r\n"),GetLastError()));
		return FALSE;
	}
	bytesRead+=fristreadsize;
	}	


	if(((Com3Buffer[0] == 0x24)&&(Com3Buffer[1] == 0x47)&&(Com3Buffer[2] == 0x50)
    			&&(Com3Buffer[3] == 0x5a)&&(Com3Buffer[4] == 0x44 )&&(Com3Buffer[5] == 0x41)
    			&&(Com3Buffer[6] == 0x2c))&&((Com3Buffer[bytesRead-1] != 0xa)&&(Com3Buffer[bytesRead-1] != 0xd)))
	{
//	RETAILMSG(BAT_MSG, (TEXT("Readcom3date 222!!!!++++++\r\n")));
	if (!SetCommMask(g_PWR_serialCOMHandle, EV_RXCHAR))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: SetCommMask error%x\r\n"),GetLastError()));
		return FALSE;
 	}

       if (!WaitCommEvent(g_PWR_serialCOMHandle, &commEvent, NULL))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: WaitCommEvent error%x\r\n"),GetLastError()));
		return FALSE;
	}
//	RETAILMSG(BAT_MSG, (TEXT("Readcom3date!!!!-------------==\r\n")));
	if (!SetCommMask (g_PWR_serialCOMHandle, EV_RXCHAR))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: SetCommMask s ror%x\r\n"),GetLastError()));
		return FALSE;
	}

	if (!(commEvent & EV_RXCHAR))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: commEvent & EV_RXCHAR  error%x\r\n"),GetLastError()));
              return FALSE;
	}

	//memset(Com3Buffer, 0, GPGGA_DataSize);
	//for(com3buffer_i = 0; com3buffer_i < 45; com3buffer_i ++)
       //RETAILMSG(BAT_MSG, (TEXT("Readcom3date--Com3Buffer[%d]:%x\r\n"),
	//   							com3buffer_i,Com3Buffer[com3buffer_i]));
	
	//PurgeComm(g_PWR_serialCOMHandle, PURGE_TXCLEAR||PURGE_RXCLEAR);	
	//RETAILMSG(BAT_MSG, (TEXT("Readcom3date:fristreadsize=%d\r\n"),fristreadsize));
	//if (!ReadFile(g_PWR_serialCOMHandle, Com3Buffer+fristreadsize, GPGGA_DataSize , &bytesRead, NULL))
	secondreadsize=0;
	secondreadsize=bytesRead;
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date:secondreadsize=%d\r\n"),secondreadsize));
	
	if (!ReadFile(g_PWR_serialCOMHandle, Com3Buffer+secondreadsize, GPGGA_DataSize , &bytesRead, NULL))
	{
//		RETAILMSG(BAT_MSG, (TEXT("Readcom3date: ReadFile error%x\r\n"),GetLastError()));
		return FALSE;
	}
	bytesRead=bytesRead+secondreadsize;
	}	


	
	//g_readnum++;
	//fristreadsize=bytesRead;

	
	//if(g_readnum == 3)
		
	//for(com3buffer_i = 0; com3buffer_i < bytesRead; com3buffer_i ++)
     //  	RETAILMSG(BAT_MSG, (TEXT("Com3Buffer[%d]:%x\r\n"),com3buffer_i,Com3Buffer[com3buffer_i]));

	if(bytesRead >30)
	{	
		if((Com3Buffer[0] == 0x24)&&(Com3Buffer[1] == 0x47)&&(Com3Buffer[2] == 0x50)
    			&&(Com3Buffer[3] == 0x5a)&&(Com3Buffer[4] == 0x44 )&&(Com3Buffer[5] == 0x41)
    			&&(Com3Buffer[6] == 0x2c))
		{
			
			for(iNO = 0; iNO< bytesRead; iNO++)
			{
				if(Com3Buffer[iNO] == 0x2c)
				{
					++commaNO;
					comma_num[commaNO] = iNO;
				}
				else
				{
//					RETAILMSG(BAT_MSG, (TEXT("not comma\r\n")));
					continue;
				}
			}	
//			RETAILMSG(BAT_MSG, (TEXT(" commaNO=%d\r\n"),commaNO));
//			RETAILMSG(BAT_MSG, (TEXT(" comma_num[2]=%d\r\n"),comma_num[2]));
//			RETAILMSG(BAT_MSG, (TEXT(" comma_num[1]=%d\r\n"),comma_num[1]));
   if((comma_num[3]-comma_num[2]>1)&(comma_num[4]-comma_num[3]>1)&(comma_num[5]-comma_num[4]>1))
 		{
 
  			usebufferSize=comma_num[3]-comma_num[2]-1;
  			for(j=0;j<usebufferSize;j++)
  			{
  			 p.GPSDay[j]= Com3Buffer[comma_num[2]+1+j];
      
  			}
     
  			usebufferSize=comma_num[4]-comma_num[3]-1;
  			for(j=0;j<usebufferSize;j++)
  			{
  			 p.GPSMonth[j]= Com3Buffer[comma_num[3]+1+j];
      
  			}
     
  			usebufferSize=comma_num[5]-comma_num[4]-1;
  			for(j=0;j<usebufferSize;j++)
  			{
  			 p.GPSYear[j]= Com3Buffer[comma_num[4]+1+j];
      
  			}
		
 		}
   else
   {
   return FALSE;
   }
		}
		else 
		{
//			RETAILMSG(BAT_MSG, (TEXT("Readcom3date: head error \r\n")));
			return FALSE;
		}
		


  TCHAR wszTmp[MAX_LOADSTRING] = L"";
  StringCchPrintfEx(wszTmp,
          sizeof(wszTmp)/sizeof(wszTmp[0]),
          NULL,
          NULL,
          STRSAFE_NULL_ON_FAILURE,
          L"%s",
          p.GPSDay);
 
  wcscpy(g_Day, wszTmp);

   StringCchPrintfEx(wszTmp,
          sizeof(wszTmp)/sizeof(wszTmp[0]),
          NULL,
          NULL,
          STRSAFE_NULL_ON_FAILURE,
          L"%s",
          p.GPSMonth);
 
  wcscpy(g_Month, wszTmp);
  StringCchPrintfEx(wszTmp,
           sizeof(wszTmp)/sizeof(wszTmp[0]),
           NULL,
           NULL,
           STRSAFE_NULL_ON_FAILURE,
           L"%s",
           p.GPSYear);
  
   wcscpy(g_Year, wszTmp);

  ShowData();
  GPS_Located = 1;
		//GaussConvert(GPSdata->Longitude,GPSdata->Latitude,GPSdata->Msl,GPSdata->x,GPSdata->y);

		//printf("GPSdata->x = %f,GPSdata->y=%f\n",GPSdata->x,GPSdata->y);
	}
	else
	{
	
		return FALSE;
	}	

//		secondreadsize=fristreadsize;

		memset(Com3Buffer, 0, GPGGA_DataSize);


		return TRUE;	

}

BOOL WriteRequestCommand()
{
	DWORD dwByteofWrited;
	unsigned char requestData[15] = {0x24,0x45 ,0x49 ,0x47 ,0x50 ,0x51 ,0x2c ,0x47 ,0x47 ,0x41 ,0x2a ,0x32 ,0x37 ,0xd ,0xa };
	if (!WriteFile(g_PWR_serialCOMHandle, requestData, 15, &dwByteofWrited, NULL))
	{
//		RETAILMSG(BAT_MSG, (TEXT("WriteDataSerialPort: WriteFile error%x\r\n"),GetLastError()));
		return (FALSE);
	}
}
BOOL WriteRequestCommandzda()
{
	DWORD dwByteofWrited;
	unsigned char requestData[15] = {0x24,0x45 ,0x49 ,0x47 ,0x50 ,0x51 ,0x2c ,0x5a ,0x44 ,0x41 ,0x2a ,0x33 ,0x39 ,0xd ,0xa };
	if (!WriteFile(g_PWR_serialCOMHandle, requestData, 15, &dwByteofWrited, NULL))
	{
//		RETAILMSG(BAT_MSG, (TEXT("WriteDataSerialPort: WriteFile error%x\r\n"),GetLastError()));
		return (FALSE);
	}
}

⌨️ 快捷键说明

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