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

📄 pmacmas.cpp

📁 一个通讯管理机的源代码。比较好用。推荐
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	}	#ifdef _DEBUG		for (WORD wwx=0;wwx<1;wwx++)			pYXData[wwx].m_bValue = (wwx%2)?0xff00:0xff;	#endif	m_pAllMgr->YX(pYXData, 2);	delete [] pYXData;}void CPMACMas::GetREF543plusYX2(BYTE byAddr){	pthread_mutex_lock(&m_mutex);	CFrameNode FNSend,FNRecv;	FNSend.m_byCID = 0x2;	FNSend.m_byDesAddr = byAddr;	FNSend.SetSize(4);	BYTE* pbyTemp = FNSend.m_pbyData;	SW(56,pbyTemp);	SW(1,pbyTemp);	m_DLService.SetEchoLen(6+1);//(8+7)/8);		if (m_DLService.REQ(1,&FNSend,FNRecv,0,true) ==	1)//Send - Respond	{		if (FNRecv.m_byCID == 2)			ExpREF542plusYX1(FNRecv.m_bySrcAddr,FNRecv.m_pbyData,FNRecv.m_wSize);	}	pthread_mutex_unlock(&m_mutex);}void CPMACMas::ExpREF543plusYX2(BYTE byAddr,BYTE* pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	WORD w1=0;	BYTE b=0;	YXData*	pYXData	= new YXData [8];//8+6	BYTE byStatus = *pbyTemp;	BYTE byA = 1;	for	(BYTE b=0; b<1;	b++,byA<<=1)	{		pYXData[w1].m_wDevNo =	wDevNo;		pYXData[w1].m_wDevPtNo	= b+12;			pYXData[w1++].m_bValue	= (byStatus & byA)?0xff00:0xff;			}	#ifdef _DEBUG		for (WORD wwx=0;wwx<1;wwx++)			pYXData[wwx].m_bValue = (wwx%2)?0xff00:0xff;	#endif	m_pAllMgr->YX(pYXData, 1);	delete [] pYXData;}void CPMACMas::GetREF543plusYX3(BYTE byAddr){	pthread_mutex_lock(&m_mutex);	CFrameNode FNSend,FNRecv;	FNSend.m_byCID = 0x2;	FNSend.m_byDesAddr = byAddr;	FNSend.SetSize(4);	BYTE* pbyTemp = FNSend.m_pbyData;	SW(60,pbyTemp);	SW(1,pbyTemp);	m_DLService.SetEchoLen(6+1);//(8+7)/8);		if (m_DLService.REQ(1,&FNSend,FNRecv,0,true) ==	1)//Send - Respond	{		if (FNRecv.m_byCID == 2)			ExpREF542plusYX1(FNRecv.m_bySrcAddr,FNRecv.m_pbyData,FNRecv.m_wSize);	}	pthread_mutex_unlock(&m_mutex);}void CPMACMas::ExpREF543plusYX3(BYTE byAddr,BYTE* pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	WORD w1=0;	BYTE b=0;	YXData*	pYXData	= new YXData [8];//8+6	BYTE byStatus = *pbyTemp;	BYTE byA = 1;	for	(BYTE b=0; b<2;	b++,byA<<=1)	{		pYXData[w1].m_wDevNo =	wDevNo;		pYXData[w1].m_wDevPtNo	= b+13;		pYXData[w1++].m_bValue	= (byStatus & byA)?0xff00:0xff;	}	#ifdef _DEBUG		for (WORD wwx=0;wwx<1;wwx++)			pYXData[wwx].m_bValue = (wwx%2)?0xff00:0xff;	#endif	m_pAllMgr->YX(pYXData, 2);	delete [] pYXData;	}void CPMACMas::ExpREF542plusYC(BYTE byAddr,BYTE*	pbyData,WORD wSize){}void CPMACMas::ExpREF542plusYX(BYTE byAddr,BYTE* pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	WORD w1=0;	BYTE b=0;	YXData*	pYXData	= new YXData [8];//8+6	BYTE byStatus = *pbyTemp;	BYTE byA = 1;	for	(BYTE b=0; b<8;	b++,byA<<=1)	{		pYXData[w1].m_wDevNo =	wDevNo;		pYXData[w1].m_wDevPtNo	= b+1;		pYXData[w1++].m_bValue	= (byStatus & byA)?0xff00:0xff;	}	#ifdef _DEBUG		for (WORD wwx=0;wwx<1;wwx++)		pYXData[wwx].m_bValue = (wwx%2)?0xff00:0xff;	#endif	m_pAllMgr->YX(pYXData, 8);	delete [] pYXData;}void CPMACMas::ExpREF543plusYX(BYTE byAddr,BYTE* pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	WORD w1=0;	BYTE b=0;	YXData*	pYXData	= new YXData [8];//8+6	BYTE byStatus = *pbyTemp;	BYTE byA = 1;	for	(BYTE b=0; b<8;	b++,byA<<=1)	{		pYXData[w1].m_wDevNo =	wDevNo;		pYXData[w1].m_wDevPtNo	= b+1;		pYXData[w1++].m_bValue	= (byStatus & byA)?0xff00:0xff;	}	#ifdef _DEBUG		for (WORD wwx=0;wwx<1;wwx++)			pYXData[wwx].m_bValue = (wwx%2)?0xff00:0xff;	#endif	m_pAllMgr->YX(pYXData, 8);	delete [] pYXData;}void CPMACMas::GetLDWKYYX(BYTE byAddr){	pthread_mutex_lock(&m_mutex);	CFrameNode FNSend,FNRecv;	FNSend.m_byCID = 0x4;	FNSend.m_byDesAddr = byAddr;	FNSend.SetSize(4);	BYTE* pbyTemp = FNSend.m_pbyData;	SW(0,pbyTemp);	SW(1,pbyTemp);	m_DLService.SetEchoLen(5+2*1);		if (m_DLService.REQ(1,&FNSend,FNRecv,0,true) ==	1)//Send - Respond	{		if ((FNRecv.m_byCID == 4) && (FNRecv.m_wSize == 3))			ExpLDWKYYX(FNRecv.m_bySrcAddr,FNRecv.m_pbyData,FNRecv.m_wSize);	}	pthread_mutex_unlock(&m_mutex);}void CPMACMas::ExpLDWKYYX(BYTE byAddr,BYTE*	pbyData,WORD wSize){	if (wSize >=3)	{		BYTE* pbyTemp =	pbyData	+ 2;		wSize -=2;		WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);				YXData*	pYXData	= new YXData [wSize*8];//8+6		for	(WORD w	=0;	w<wSize; w++)		{			BYTE byStatus = *pbyTemp++;			BYTE byA = 1;			for	(BYTE b=0; b<8;	b++,byA<<=1)			{				pYXData[w*8+b].m_wDevNo =	wDevNo;				pYXData[w*8+b].m_wDevPtNo	= w*8 + b + 1;				pYXData[w*8+b].m_bValue	= (byStatus & byA)?0xff00:0xff;			}		}		m_pAllMgr->YX(pYXData, wSize*8);		delete [] pYXData;	}}void CPMACMas::ExpLDWKYYC(BYTE byAddr,BYTE*	pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	wSize -=1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	YCData*	pData =	new	YCData [wSize/2];	WORD w1=0;	for	(WORD w	=1;	w<=wSize/2; w++)	{		pData[w1].m_wDevNo = wDevNo;		pData[w1].m_wDevPtNo = w;		WORD www = CW(pbyTemp) ;		short* pSht	= (short *)&www;		pData[w1++].m_fValue = *pSht;	}	#ifdef _DEBUG		for (WORD w=0;w<w1;w++)			pData[w].m_fValue = w*10000;	#endif		m_pAllMgr->YC(pData,w1);	delete [] pData;}void CPMACMas::ExpDCRJData(BYTE	byAddr,BYTE* pbyData,WORD wSize,WORD wIndex16){	BYTE* pbyTemp =	pbyData	+ 1;	wSize -= 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	YCData*	pData =	new	YCData [wSize/4];	WORD w1	=0;	WORD w =1 + wIndex16*8;	if (wIndex16 == 3)		w =wIndex16*8;	for	(WORD w2=1; w2<=wSize/4; w++,w2++)	{		pData[w1].m_wDevNo = wDevNo;		pData[w1].m_wDevPtNo = w;		if (w == 8)		{			YXData*	pYXData	= new YXData [32];			DWORD dwStatus = CDW(pbyTemp);			DWORD dwA = 1;			for	(BYTE b=0; b<32; b++,dwA<<=1)			{				pYXData[b].m_wDevNo	= wDevNo;				pYXData[b].m_wDevPtNo =	b +	1;				pYXData[b].m_bValue	= bool(dwStatus & dwA)?0xff00:0xff;			}			m_pAllMgr->YX(pYXData, 32);			delete [] pYXData;		}		else if	(w == 11)		{			YXData*	pYXData	= new YXData [11];			DWORD dwStatus = CDW(pbyTemp);			DWORD dwA	= 1;			for	(BYTE b=0; b<11; b++,dwA<<=1)			{				pYXData[b].m_wDevNo =	wDevNo;				pYXData[b].m_wDevPtNo	= 32+ b	+ 1;				pYXData[b].m_bValue	= bool(dwStatus & dwA)?0xff00:0xff;			}			m_pAllMgr->YX(pYXData, 11);			delete [] pYXData;		}		else if ((w==2)|| (w==3) || (w==5)|| (w==6) || (w==9) || (w==10) || ((w>=12) && (w<=14)) || ((w>=16) && (w<=21)) || (w== 27))//DWORD		{			pData[w1++].m_fValue = CDW(pbyTemp);		}		else //long		{			DWORD dwww = CDW(pbyTemp);			long* pInt = (long *)&dwww;			pData[w1++].m_fValue = *pInt;		}	}	if (w1 > 0)		m_pAllMgr->YC(pData,w1);	delete [] pData;}void CPMACMas::Exp9900Data(BYTE byAddr,BYTE*	pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	YCData*	pData =	new	YCData [wSize/2];	WORD w1	=0;	for	(WORD w	=1;	w<=wSize/2; w++)	{		pData[w1].m_wDevNo = wDevNo;		pData[w1].m_wDevPtNo = w;		if ((w>=1) && (w <=40))//word		{			pData[w1++].m_fValue = CW(pbyTemp);		}		else//DWORD		{			pData[w1++].m_fValue = CHDW(pbyTemp) ;			w++;		}	}	#ifdef _DEBUG		for (WORD w=0;w<w1;w++)			pData[w].m_fValue = w;	#endif	m_pAllMgr->YC(pData,w1);	delete [] pData;}void CPMACMas::GetDCRJNext(BYTE byAddr){	for (WORD wIndex = 1; wIndex<=3; wIndex++)	{		pthread_mutex_lock(&m_mutex);		CFrameNode FNSend,FNRecv;		FNSend.m_byCID = 0x4;		FNSend.m_byDesAddr = byAddr;		FNSend.SetSize(4);		BYTE* pbyTemp = FNSend.m_pbyData;		WORD wEcho;		if (wIndex == 3)		{			SW(1+wIndex*16-2,pbyTemp);			SW(12,pbyTemp);			wEcho = 12*2 + 1;		}		else if (wIndex == 2)		{			SW(1+wIndex*16,pbyTemp);			SW(10,pbyTemp);			wEcho = 10*2 + 1;		}		else			{			SW(1+wIndex*16,pbyTemp);			SW(16,pbyTemp);			wEcho = 16*2 + 1;		}		m_DLService.SetEchoLen(4+wEcho); //		if (m_DLService.REQ(1,&FNSend,FNRecv,0,true) ==	1)//Send - Respond		{			if (((FNRecv.m_byCID & 0x80) == 0) && (FNRecv.m_wSize == wEcho))			{				ExpDCRJData(FNRecv.m_bySrcAddr,FNRecv.m_pbyData,FNRecv.m_wSize,wIndex);			}		}		pthread_mutex_unlock(&m_mutex);		usleep(20000);	}}void CPMACMas::GetTTC310YX(BYTE byAddr){	}void CPMACMas::ExpTTC310YX(BYTE byAddr,BYTE* pbyData,WORD wSize){	}void CPMACMas::ExpTTC310YC(BYTE byAddr,BYTE* pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	wSize -=1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	YCData*	pData =	new	YCData [wSize/2];	WORD w1=0;	for	(WORD w	=1;	w<=wSize/2; w++)	{		pData[w1].m_wDevNo = wDevNo;		pData[w1].m_wDevPtNo = w;		WORD www = CW(pbyTemp) ;		short* pSht	= (short *)&www;		pData[w1++].m_fValue = *pSht;	}	#ifdef _DEBUG		for (WORD w=0;w<w1;w++)			pData[w].m_fValue = w*10000;	#endif		m_pAllMgr->YC(pData,w1);	delete [] pData;}void CPMACMas::Gethlk2YX(BYTE byAddr){	pthread_mutex_lock(&m_mutex);	CFrameNode FNSend,FNRecv;	FNSend.m_byCID = 0x2;	FNSend.m_byDesAddr = byAddr;	FNSend.SetSize(4);	BYTE* pbyTemp = FNSend.m_pbyData;	SW(0,pbyTemp);	SW(85,pbyTemp);	m_DLService.SetEchoLen(6+1);		if (m_DLService.REQ(1,&FNSend,FNRecv,0,true) ==	1)//Send - Respond	{		if (FNRecv.m_byCID == 2)			Exphlk2YX(FNRecv.m_bySrcAddr,FNRecv.m_pbyData,FNRecv.m_wSize);	}	pthread_mutex_unlock(&m_mutex);}void CPMACMas::Exphlk2YX(BYTE byAddr,BYTE* pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	WORD w1=0;	BYTE b=0;	YXData*	pYXData	= new YXData [85];//8+6	BYTE byStatus = *pbyTemp;	BYTE byA = 1;	for	(BYTE b=0; b<85;	b++)	{		if(b!=0 && b%8 == 0)		{			byA=1;			pbyTemp = pbyTemp + 1;			byStatus = *pbyTemp;		}		pYXData[w1].m_wDevNo =	wDevNo;		pYXData[w1].m_wDevPtNo	= b+1;		pYXData[w1++].m_bValue	= (byStatus & byA)?0xff00:0xff;		byA<<=1;						}	#ifdef _DEBUG		for (WORD wwx=0;wwx<6;wwx++)		pYXData[wwx].m_bValue = (wwx%2)?0xff00:0xff;	#endif	m_pAllMgr->YX(pYXData, 85);	delete [] pYXData;}void CPMACMas::Exphlk2YC(BYTE byAddr,BYTE*	pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	YCData*	pData =	new	YCData [wSize/2];	WORD w1=0;	for	(WORD w	=1;	w<=wSize/2; w++)	{		pData[w1].m_wDevNo = wDevNo;		pData[w1].m_wDevPtNo = w;		pData[w1++].m_fValue = CW(pbyTemp);	}    #ifdef _DEBUG		for (WORD w=0;w<w1;w++)			pData[w].m_fValue = w*10000;    #endif			m_pAllMgr->YC(pData,w1);	delete [] pData;}void CPMACMas::ExpWKY0Data(BYTE byAddr,BYTE*	pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	YCData*	pData =	new	YCData [wSize/2];	WORD w1	=0;	for	(WORD w	=1;	w<=wSize/2; w++)	{		pData[w1].m_wDevNo = wDevNo;		pData[w1].m_wDevPtNo = w;		pData[w1++].m_fValue = CW(pbyTemp);	}	#ifdef _DEBUG		for (WORD w=0;w<w1;w++)			pData[w].m_fValue = w;	#endif	m_pAllMgr->YC(pData,w1);	delete [] pData;}void CPMACMas::GetGKJ0YX(BYTE byAddr){	pthread_mutex_lock(&m_mutex);	CFrameNode FNSend,FNRecv;	FNSend.m_byCID = 0x2;	FNSend.m_byDesAddr = byAddr;	FNSend.SetSize(4);	BYTE* pbyTemp = FNSend.m_pbyData;	SW(0,pbyTemp);	SW(32,pbyTemp);	m_DLService.SetEchoLen(6+1);		if (m_DLService.REQ(1,&FNSend,FNRecv,0,true) ==	1)//Send - Respond	{		if (FNRecv.m_byCID == 2)			Exphlk2YX(FNRecv.m_bySrcAddr,FNRecv.m_pbyData,FNRecv.m_wSize);	}	pthread_mutex_unlock(&m_mutex);}void CPMACMas::ExpGKJ0YX(BYTE byAddr,BYTE* pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	WORD w1=0;	BYTE b=0;	YXData*	pYXData	= new YXData [32];//8+6	BYTE byStatus = *pbyTemp;	BYTE byA = 1;	for	(BYTE b=0; b<31;	b++)	{		if(b!=0 && b%8 == 0)		{			byA=1;			pbyTemp = pbyTemp + 1;			byStatus = *pbyTemp;		}		pYXData[w1].m_wDevNo =	wDevNo;		pYXData[w1].m_wDevPtNo	= b+1;		pYXData[w1++].m_bValue	= (byStatus & byA)?0xff00:0xff;		byA<<=1;						}	#ifdef _DEBUG		for (WORD wwx=0;wwx<6;wwx++)		pYXData[wwx].m_bValue = (wwx%2)?0xff00:0xff;	#endif	m_pAllMgr->YX(pYXData, 85);	delete [] pYXData;}void CPMACMas::ExpGKJ0YC(BYTE byAddr,BYTE*	pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	YCData*	pData =	new	YCData [wSize/2];	WORD w1=0;	for	(WORD w	=1;	w<=wSize/2; w++)	{		pData[w1].m_wDevNo = wDevNo;		pData[w1].m_wDevPtNo = w;		pData[w1++].m_fValue = CW(pbyTemp);	}    #ifdef _DEBUG		for (WORD w=0;w<w1;w++)			pData[w].m_fValue = w*10000;    #endif			m_pAllMgr->YC(pData,w1);	delete [] pData;}void CPMACMas::ExpSepam20_B21YC(BYTE byAddr,BYTE*	pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	YCData*	pData =	new	YCData [wSize/2];	WORD w1=0;	for	(WORD w	=1;	w<=wSize/2; w++)	{		pData[w1].m_wDevNo = wDevNo;		pData[w1].m_wDevPtNo = w;		pData[w1++].m_fValue = CW(pbyTemp);	}    #ifdef _DEBUG		for (WORD w=0;w<w1;w++)			pData[w].m_fValue = w*10000;    #endif			m_pAllMgr->YC(pData,w1);	delete [] pData;}void CPMACMas::ExpSepam40_S40YC(BYTE byAddr,BYTE*	pbyData,WORD wSize){	BYTE* pbyTemp =	pbyData	+ 1;	WORD wDevNo	= m_subdevmgr.GetDevNoFrmAddr(byAddr);	YCData*	pData =	new	YCData [wSize/2];	WORD w1=0;	for	(WORD w	=1;	w<=wSize/2; w++)	{		pData[w1].m_wDevNo = wDevNo;		pData[w1].m_wDevPtNo = w;		if (w >= 28 && w <= 35)		{			//DWord			pData[w1++].m_fValue = CHDW2(pbyTemp);			w++;		}		if (w >= 63 && w <= 70)		{			//DWord			pData[w1++].m_fValue = CHDW2(pbyTemp);			w++;		}		else //WORD		{			pData[w1++].m_fValue = CW(pbyTemp);		}	}    #ifdef _DEBUG		for (WORD w=0;w<w1;w++)			pData[w].m_fValue = w*10000;    #endif			m_pAllMgr->YC(pData,w1);	delete [] pData;}

⌨️ 快捷键说明

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