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

📄 ja05frame.cpp

📁 一个通讯管理机的源代码。比较好用。推荐
💻 CPP
字号:
#include "ja05frame.h"////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bool CJA05Frame::FrameToBuffer(CDataNode &dn){	bool bRet = false;	if(m_bIsSetup) 	{ 		WORD wDataSize = GetDataSize();		dn.SetSize(GetSize());		dn.m_pbyData[0]=0xaa;		dn.m_pbyData[1]=m_byAddr;		dn.m_pbyData[2]=wDataSize+1;		dn.m_pbyData[3]=m_byCID; 		if (GetDataSize())			memcpy(dn.m_pbyData+4,m_pData,wDataSize); 		BYTE* pby = dn.m_pbyData+4+wDataSize;		*pby++ = xor_(dn.m_pbyData+3,wDataSize+1);		*pby = 0xd;		bRet = true;	} 	return bRet;}void CJA05Frame::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_bIsSetup = true;}void CJA05Frame::FrameToBuf(CFrameNode& fn){	fn.m_byCID = m_byCID;	fn.m_bySrcAddr = m_byAddr;	if (m_wLength)	{		fn.SetSize(m_wLength);		memcpy(fn.m_pbyData,m_pData,m_wLength);	}}bool CJA05Frame::BufferToFrame(CDQue* pPhyDQ){	Reset();	CDataNode *pDN = NULL;	bool bRet = false;	while (pPhyDQ->Get(pDN,100) && pDN)	{		WORD wSize = 0;		while ((wSize<pDN->m_wSize) && (pDN->m_wSize < 16))		{			if (ByteIn(pDN->m_pbyData[wSize++]))			{				delete pDN;				bRet = true;				goto check;			}		}		delete pDN;	}check:	if (bRet)	{		BYTE* pTemp = m_pbyInBuf+1;		m_byAddr = *pTemp++;		m_wLength = (*pTemp++) - 1;		m_byCID = *pTemp++;		if (m_wLength > 0)		{			memcpy(m_pData,pTemp,m_wLength);			pTemp += m_wLength;		}	}	return bRet;}bool CJA05Frame::ByteIn(BYTE b)//BOOL CISAFrame::ByteIn(BYTE b,BYTE* pbyInBuf,WORD& wLength){	BOOL bRet = FALSE;	if (!m_bStart)	{		if (0xaa == b)		{			m_pbyInBuf[m_wInLength++] = b;			if (m_wInLength == 1)	m_bStart = TRUE;		}		else m_wInLength = 0;	}	else if (m_wInLength == 2)	{		m_wLength = b - 1;		m_pbyInBuf[m_wInLength++] = b;	}	else if (m_wInLength == (m_wLength+5))	{		if (b==0xd)		{			m_pbyInBuf[m_wInLength++] = b;			if (xor_(m_pbyInBuf+3,m_wInLength-5) == m_pbyInBuf[m_wInLength-2])				bRet = TRUE;		}		if (!bRet)		{			m_bStart = false;			m_wInLength = 0;			m_wLength = 0;		}	}	else m_pbyInBuf[m_wInLength++] = b;	return bRet;}

⌨️ 快捷键说明

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