📄 cscframe.cpp
字号:
#include "cscframe.h"bool CCSCFrame::FrameToBuffer(CDataNode &dn){ bool bRet = false; if(m_bIsSetup) { WORD wDataSize = GetDataSize(); dn.SetSize(wDataSize+4);// dn.m_wSize = wDataSize+5; dn.m_pbyData[0]=wDataSize+3; dn.m_pbyData[1]=m_byDAddr; dn.m_pbyData[2]=m_bySAddr; //src addr; dn.m_pbyData[3]=m_byCID; //类型; if (wDataSize) memcpy(dn.m_pbyData+4,m_pData,wDataSize); // BYTE* pby = (dn.m_pbyData+4+wDataSize);// *pby = GetCHKSUM(dn.m_pbyData,wDataSize+4); bRet = true; } return bRet;}void CCSCFrame::SetupFrame(CFrameNode *pFNSend){ m_bySAddr = (BYTE)(pFNSend->m_wSAddr); m_byDAddr = (BYTE)(pFNSend->m_wDAddr); if (pFNSend->m_pbyData && pFNSend->m_wSize) { m_wLength = pFNSend->m_wSize; memcpy(m_pData,pFNSend->m_pbyData,pFNSend->m_wSize); } else m_wLength = 0; m_byCID = pFNSend->m_byCID; m_bIsSetup = true;}void CCSCFrame::FrameToBuf(CFrameNode& fn){ fn.m_byCID = m_byCID; fn.m_wDAddr = m_byDAddr; fn.m_wSAddr = m_bySAddr; fn.m_wSize = m_wLength; if (fn.m_wSize) { fn.SetSize(fn.m_wSize); memcpy(fn.m_pbyData,m_pData,fn.m_wSize); }}bool CCSCFrame::BufferToFrame(CDQue* pPhyDQ){ Reset(); CDataNode *pDN = NULL; bool bIsComplete; m_wInLength = 0; while (bIsComplete = pPhyDQ->Get(pDN,0) && pDN) { WORD wSize = 0;// cout << "{" << pDN->m_wSize << "} "; while ((wSize<pDN->m_wSize) && (pDN->m_wSize < 32)) {// char c[16];// sprintf(c,"\\%02x ",pDN->m_pbyData[wSize]);// cout << c; if (ByteIn(pDN->m_pbyData[wSize++])) { delete pDN;// cout << endl; goto check; } }// cout << endl; delete pDN; }check: if (bIsComplete) { BYTE* pTemp = m_pbyInBuf;// WORD wSize = m_wInLength; m_wLength = *pTemp++ - 3; m_byDAddr = *pTemp++; m_bySAddr = *pTemp++; m_byCID = *pTemp++; if (m_wLength) memcpy(m_pData,pTemp,m_wLength);// pTemp += m_wLength; // if (*pTemp != GetCHKSUM(m_pbyInBuf,m_wInLength-1))// return false; m_bIsSetup = true; } return m_bIsSetup;}bool CCSCFrame::ByteIn(BYTE b){ bool bRet = false; m_pbyInBuf[m_wInLength++] = b; if (m_wInLength == 1) m_wLength = m_pbyInBuf[0]+1; else if (m_wLength == m_wInLength) bRet = true; return bRet;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -