📄 gpswin32.cpp.bak
字号:
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 + -