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

📄 对数据的解码表示.txt

📁 对gps定位数据的接收
💻 TXT
字号:
//帧检测代码
void CGPS::RecvDataProc()
{
//当前缓冲区末尾
m_dwPoint+=m_dwActRead;
if(m_dwActRead==0||m_dwActRead+m_dwPoint<30)
return;
if(m_bInfoStart==FALSE)
{
//寻找GPS帧头
CString sData =(CString)m_cFrameBuf;
int nHead=sData.Find("$GPRMC",0);
if(nHead>=0)
{
//清除信息前的垃圾数据
for(DWORD i= nHead; i<m_dwPoint;i++)
m_cFrameBuf[i-nHead]=m_cFrameBuf[i];
m_dwPoint-=nHead;
m_dwActRead=0;
m_cFrameBuf[m_dwPoint]=0;
//标记为找到帧头
m_bInfoStart=TRUE;
//LF个数清零
m_nLFNum=0;
}else{
//清除缓冲区全部垃圾数据
m_dwPoint=0;
m_dwActRead=0;
memset(m_cFrameBuf,0,sizeof(m_cFrameBuf));
}
}
if(m_bInfoStart==TRUE)
{
  //寻找GPS帧头
CString sData = CString(m_cFrameBuf);
int nEnd= sData.Find('\n',0);
if(nEnd>=0)
{

m_nLFNum++;
m_cFrameBuf[nEnd]='\r';
if(m_nLFNum==2)
{
//LF个数清零
m_nLFNum=0;
//清除信息后的垃圾数据
memset(m_cFrameBuf+nEnd,0,m_dwPoint-nEnd);
m_dwPoint=nEnd;
m_dwActRead=0;
m_cFrameBuf[m_dwPoint]=0;
//GPS帧数据分析
AnalysisGPSFrame();
//准备接受下一帧GPS数据
m_bInfoStart=FALSE;
//变量复位
m_dwPoint=0;
m_dwActRead=0;
memset(m_cFrameBuf,0,sizeof(m_cFrameBuf));
}
}
}
//清除接收缓冲区
PurgeComm(m_hCom,PURGE_RXCLEAR);
}
//解帧处理代码
void CGPS::AnalysisGPSFrame()
{
int nSectionID=0;
char Temp[15];
memset(Temp,0,sizeof(Temp));
int nIndex=0;
CString sTemp="";
BOOL bGetValue=false;
for(DWORD i=0;i<m_dwPoint;i++)
{
Temp[nIndex]=m_cFrameBuf[i];
if(m_cFrameBuf[i]==',')
{
   nSectionID++;
Temp[nIndex]=0;
bGetValue=true;
}
nIndex++;
if(bGetValue==TRUE)
{
  bGetValue=false;
nIndex=0;
seitch(nSectionID)
{
case 2:    //时间
    sTemp.Format("%c%c",Temp[0],Temp[1]);
m_lHour=atoi(sTemp);
sTemp.Format("%c%c",Temp[2],Temp[3]);
m_lMinute=atoi(sTemp);
sTemp.Format("%c%c",Temp[4],Temp[5]);
m_lSecond=atoi(sTemp);
break;
case 4:   //纬度
sTemp.Format("%c%c",Temp[0],Temp[1]);
m_dLat=atoi(sTemp);
sTemp.Format("%c%c%c%c%c%c",Temp[2],Temp[3],Temp[4],Temp[5],Temp[6],Temp[7]);
m_dLat=m_dLat+atof(sTemp)/60.0f;
break;
case 6:    //经度
   sTemp=CString(Temp);
sTemp.Format("%c%c%c",Temp[0],Temp[1],Temp[2]);
m_dLon=atoi(sTemp);
sTemp.Format("%c%c%c%c%c%c",Temp[3],Temp[4],Temp[5],Temp[6],Temp[7],Temp[8]);
m_dLon=m_dLon+atof(sTemp)/60.0f;
break;
case 8:  //速度
m_dVelo=atof(Temp);
break;
case 9:  //方位角
m_dDirection=atof(Temp);
break;
case 10://日期
sTemp.Format("%c%c",Temp[0],Temp[1]);
m_lDay=atoi(sTemp);
sTemp.Format("%c%c",Temp[2],Temp[3]);
m_lMonth=atoi(sTemp);
sTemp.Format("%c%c",Temp[4],Temp[5]);
m_lYear=2000+atoi(sTemp);
break;
case 21://高度
m_dAlt=atof(Temp);
break;
}
}
}
//修改时区
m_lHour+=8;
if(m_lHour>=24)
{
     m_lHour-=24;
m_lDay++;
//2月闰年处理
if(m_lMonth==2)
{
if(m_lYear%4==0)

{
if(m_lDay>29)
{
    m_lDay=1;
m_lMonth=3;
}
}
else
{
  if(m_lDay>28)
{
m_lDay=1;
m_lMonth=3;
}
}
}
//大月处理
if(m_lMonth==1||m_lMonth==3||m_lMonth==5||m_lMonth==7||m_lMonth==8||m_lMonth==10||m_lMonth==12)
{

if(m_lDay>31)
{
m_lDay=1;
m_lMonth++;
if(m_lMonth>12)
{
m_lMonth=1;
m_lYear++;
}
}
}
//小月处理
if(m_lMonth==4||m_lMonth==6||m_lMonth==9||m_lMonth==11)
{
   if(m_lDay>30)
{
    m_lDay=1;
   m_lMonth++;
if(m_lMonth>12)
{
   m_lMonth=1;
m_lYear++;
}
}
}
}
//向显示视图发送消息通知其显示数据
if(m_pView!=NULL)
m_pView->PostMessage(WM_SHOWGPSDATA,0,0);
}

⌨️ 快捷键说明

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