📄 taframe.cpp
字号:
#include "TAFrame.h"////////////////////////////////////////////////////////////////void CTAFrame::SetupFrame(CFrameNode *pFNSend){ m_byAddr = pFNSend->m_byDesAddr; 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_byCHKSUM = GetCHKSUM(); m_bIsSetup = true;}bool CTAFrame::FrameToBuffer(CDataNode &dn){ bool bRet = false; if (m_bIsSetup) { dn.SetSize(GetSize());// dn.m_wSize = GetSize(); BYTE* pTemp = dn.m_pbyData; *pTemp++ = 0x2; HexToAscii(m_byAddr,pTemp); HexToAscii(m_wLength+1,pTemp); HexToAscii(m_byCID,pTemp); WORD wDataSize = GetDataSize(); for (WORD w=0; w < wDataSize; w++) HexToAscii(m_pData[w],pTemp); m_byCHKSUM = GetCHKSUM(); HexToAscii(m_byCHKSUM,pTemp); *pTemp = 3; bRet = true; } return bRet;}void CTAFrame::FrameToBuf(CFrameNode& fn){ fn.m_byCID = m_byCID; fn.m_bySrcAddr = m_byAddr; fn.m_wSize = m_wLength; if (fn.m_wSize > 0) { fn.SetSize(fn.m_wSize); memcpy(fn.m_pbyData,m_pData,fn.m_wSize); }}bool CTAFrame::BufferToFrame(CDQue* pPhyDQ){ Reset(); CDataNode *pDN; bool bIsComplete; m_wInLength = 0; while (bIsComplete = pPhyDQ->Get(pDN,5)) { WORD wSize = 0; while ((wSize<pDN->m_wSize) && (pDN->m_wSize < 256*6)) { if (ByteIn(pDN->m_pbyData[wSize++])) { if (wSize == 1) { m_byCID = pDN->m_pbyData[0]; delete pDN; return true; } delete pDN; goto check; } } delete pDN; }check: if (bIsComplete) { WORD i; BYTE* pTemp = m_pbyInBuf; WORD wSize = m_wInLength; while (*pTemp++!=2) if (!(wSize-- > 0)) return false; if (wSize >=6) { AsciiToHex(m_byAddr,pTemp); BYTE byTemp;// = (BYTE)m_wLength; AsciiToHex(byTemp,pTemp); m_wLength = --byTemp; if (wSize-6 > 0) { AsciiToHex(m_byCID,pTemp);// if (m_pData) delete m_pData;// if ((m_byLength == 0) m_pData = 0;// else// {// m_pData = new BYTE[m_byLength-1]; for (i=0; i<m_wLength; i++) AsciiToHex(m_pData[i],pTemp);// } } AsciiToHex(m_byCHKSUM,pTemp); } if (3 != *pTemp) return false; if (GetCHKSUM() != m_byCHKSUM) return false; } return bIsComplete;}bool CTAFrame::ByteIn(BYTE b){ bool bRet = false; if (!m_bStart && ((b == 0x02) || (b == 0x6) || (b == 0x15))) { m_pbyInBuf[m_wInLength++] = b; if ((b == 0x6) || (b == 0x15)) bRet = true; else m_bStart = true; } else if (m_bStart && (b == 0x03)) { m_pbyInBuf[m_wInLength++] = b; bRet = true; } else if (m_bStart) m_pbyInBuf[m_wInLength++] = b; return bRet;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -