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

📄 taframe.cpp

📁 一个通讯管理机的源代码。比较好用。推荐
💻 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 + -