📄 gpsframe.cpp
字号:
#include "gpsframe.h"WORD BTI(WORD wBCD){ WORD wRet = (wBCD&0xf)+((wBCD&0xf0)>>4)*10; wBCD >>= 8; wRet += 100*(wBCD&0xf)+((wBCD&0xf0)>>4)*1000; return wRet;}BYTE BTI(BYTE byBCD){ BYTE byRet = (byBCD&0xf)+((byBCD&0xf0)>>4)*10; return byRet;}void CGpsFrame::FrameToBuf(CFrameNode& fn){ fn.m_byCID = 0; fn.m_bySrcAddr = 0; fn.m_wSize = 7; fn.SetSize(fn.m_wSize); memcpy(fn.m_pbyData,m_pData,fn.m_wSize);}bool CGpsFrame::BufferToFrame(CDQue* pPhyDQ){ Reset(); CDataNode *pDN = NULL; bool bRet = false; while (pPhyDQ->Get(pDN,50) && pDN) { if (m_wInLength + pDN->m_wSize > 17) { delete pDN; break; } memcpy(&m_pbyInBuf[m_wInLength],pDN->m_pbyData,pDN->m_wSize); m_wInLength += pDN->m_wSize;/* for (WORD bbb=0; bbb< pDN->m_wSize; bbb++) { char c[16]; sprintf(c,"%02x ",pDN->m_pbyData[bbb]); cout << c; if ((bbb+1)%64 == 0) cout << endl; } cout <<endl;*/ delete pDN; if (m_wInLength && (m_pbyInBuf[0] != 0x42)) break; if (m_wInLength==GetEchoLen()) { if (m_pbyInBuf[16] == 0xd) bRet = true; break; } } if (bRet) { m_pData[0] = BTI(m_pbyInBuf[1]); m_pData[1] = BTI(m_pbyInBuf[2]); m_pData[2] = BTI(m_pbyInBuf[3]); WORD* pw,* pw1; pw = (WORD *)&m_pData[3]; pw1 = (WORD *)&m_pbyInBuf[4]; WORD wv = *pw1; wv = CW(wv); *pw = BTI(wv); m_pData[5] = BTI(m_pbyInBuf[6]); m_pData[6] = BTI(m_pbyInBuf[7]); m_wLength = 7; } return bRet;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -