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

📄 jddymas.cpp

📁 一个通讯管理机的源代码。比较好用。推荐
💻 CPP
字号:
#include "jddymas.h"void* thrdQuery(void* pVoid){	CJDDYMal *pAS = (CJDDYMal *)pVoid;	while (1) {		pAS->Query();	}	return 0;}CJDDYMal::~CJDDYMal(){	if (m_hThread > 0)	{		cout << "JDDY" << m_hThread << endl;		pthread_cancel(m_hThread);	}}bool CJDDYMal::Init(){	bool bRet = false;	pthread_attr_t attr;	pthread_attr_init(&attr);	pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);	if (pthread_create(&m_hThread,&attr,thrdQuery,(void *)this) == 0)		bRet = true;	pthread_attr_destroy(&attr);	return bRet;}void CJDDYMal::Query(){//	WORD wAddr;//	for (wAddr=0;wAddr<10;wAddr++)//	{/*		WORD wLen = 24;		if (wAddr == 1) wLen = 48;		else if (wAddr == 2) wLen = 16;		else if (wAddr == 3) wLen = 8;		else if (wAddr == 4) wLen = 32;*/		ReadYX(0,24);		sleep(1);		ReadYX(2,16);		sleep(1);//	}//	for (wAddr=0;wAddr<9;wAddr++)//	{/*		WORD wLen;		if (wAddr == 0) wLen = 8;		else if (wAddr == 1) wLen = 7;		else if (wAddr == 2) wLen = 3;		else if (wAddr == 3) wLen = 9;		else if (wAddr == 4) wLen = 14;		else if (wAddr == 5) wLen = 3;		else if (wAddr == 6) wLen = 64;		else if (wAddr == 7) wLen = 2;		else if (wAddr == 8) wLen = 6;*/		ReadYC(0,8);		sleep(1);//	}}bool CJDDYMal::ReadYC(WORD wAddr,WORD wLen){	bool bRet = false;	CFrameNode FNSend,FNRecv;	FNSend.m_byCID = 0x4;	FNSend.m_byDesAddr = m_subdevmgr.GetAddrFrmNo(0);	if (FNSend.m_byDesAddr == 0xff) return false;	FNSend.SetSize(4);	WORD *wTemp = (WORD *)FNSend.m_pbyData;	*wTemp++ = CW(wAddr);	*wTemp++ = CW(wLen);	m_DLService.SetEchoLen(5+wLen*2);	WORD wDevNo = m_subdevmgr.GetDevNoFrmAddr(FNSend.m_byDesAddr);	if (m_DLService.REQ(1,&FNSend,FNRecv,0,true) == 1)	{		YCData* pData = new YCData [FNRecv.m_wSize/2];		WORD* pwOrigValue = (WORD *)(FNRecv.m_pbyData+1);		for (WORD w=0; w<FNRecv.m_wSize/2; w++)		{			pData[w].m_wDevNo = wDevNo;			pData[w].m_wDevPtNo = w + 1 ;			WORD w1 = CW(*pwOrigValue++);			short* psh = (short *)&w1;			pData[w].m_fValue = *psh;		}		m_pAllMgr->YC(pData,FNRecv.m_wSize/2);		delete pData;		if (m_wBreakCount > 0)		{			YXData d;			d.m_wDevNo = wDevNo;			d.m_wDevPtNo = 199;			d.m_bValue = 0xff;			m_pAllMgr->YX(&d, 1);		}		m_wBreakCount = 0;	}	else	{		if (m_wBreakCount >= 5)		{			YXData d;			d.m_wDevNo = wDevNo;			d.m_wDevPtNo = 199;			d.m_bValue = 0xff00;			m_pAllMgr->YX(&d, 1);			m_wBreakCount = 0;		}		else m_wBreakCount++;	}	return bRet;}bool CJDDYMal::ReadYX(WORD wAddr,WORD wLen){	bool bRet = false;	CFrameNode FNSend,FNRecv;	FNSend.m_byCID = 0x2;	FNSend.m_byDesAddr = m_subdevmgr.GetAddrFrmNo(0);	if (FNSend.m_byDesAddr == 0xff) return false;	FNSend.SetSize(4);	WORD *wTemp = (WORD *)FNSend.m_pbyData;	*wTemp++ = CW(wAddr);	*wTemp = CW(wLen);	m_DLService.SetEchoLen(5+wLen/8);	WORD wDevNo = m_subdevmgr.GetDevNoFrmAddr(FNSend.m_byDesAddr );	if (m_DLService.REQ(1,&FNSend,FNRecv,0,true) == 1)	{		if (FNRecv.m_wSize  >=  2)		{			BYTE* pbyTemp = FNRecv.m_pbyData+1;	//		WORD* pw = (WORD *)pbyTemp;	//		for (BYTE b=0; b<FNRecv.m_wSize/2;b++)	//			*pw++ = CW(*pw);			YXData* pYXData = new YXData [(FNRecv.m_wSize-1)*8];						for (BYTE by=0; by<(FNRecv.m_wSize-1); by++)			{				BYTE byA = 1;				BYTE byValue = *pbyTemp++;				for (BYTE b=0; b<8; b++,byA<<=1)				{					pYXData[b+8*by].m_wDevNo = wDevNo;					WORD ptno = pYXData[b+8*by].m_wDevPtNo = b+8*by + 1 + ((wAddr == 2) ?24 : 0);					pYXData[b+8*by].m_bValue = bool(byValue & byA) ? 0xff00: 0xff;					if ((ptno >= 1) && (ptno <=8)) m_b[ptno-1] = pYXData[b+8*by].m_bValue;					else if (ptno == 21) m_b[8] = pYXData[b+8*by].m_bValue;					else if (ptno == 22) m_b[9] = pYXData[b+8*by].m_bValue;					else if (ptno == 26) m_b[10] = pYXData[b+8*by].m_bValue;				}			}			m_pAllMgr->YX(pYXData, (FNRecv.m_wSize-1)*8);			delete [] pYXData;		}		if (m_wBreakCount > 0)		{			YXData d;			d.m_wDevNo = wDevNo;			d.m_wDevPtNo = 199;			d.m_bValue = 0xff;			m_pAllMgr->YX(&d, 1);		}		m_wBreakCount = 0;	}	else	{		if (m_wBreakCount >= 5)		{			YXData d;			d.m_wDevNo = wDevNo;			d.m_wDevPtNo = 199;			d.m_bValue = 0xff00;			m_pAllMgr->YX(&d, 1);			m_wBreakCount = 0;		}		else m_wBreakCount++;	}		YXData d[4];	d[0].m_wDevNo = wDevNo;	d[0].m_wDevPtNo = 190;	d[0].m_bValue = (m_b[0] | m_b[1] | m_b[2] | m_b[3])?0xff00:0xff;	d[1].m_wDevNo = wDevNo;	d[1].m_wDevPtNo = 191;	d[1].m_bValue = (m_b[4] | m_b[5])?0xff00:0xff;	d[2].m_wDevNo = wDevNo;	d[2].m_wDevPtNo = 192;	d[2].m_bValue = (m_b[6] | m_b[7])?0xff00:0xff;	d[3].m_wDevNo = wDevNo;	d[3].m_wDevPtNo = 193;	d[3].m_bValue = (m_b[8] | m_b[9] | m_b[10])?0xff00:0xff;	m_pAllMgr->YX(d, 4);			return bRet;}

⌨️ 快捷键说明

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