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

📄 ja05mas.cpp

📁 一个通讯管理机的源代码。比较好用。推荐
💻 CPP
字号:
#include "ja05mas.h"void* thrdQueryJA(void* pVoid){	CJA05Mal *pAS = (CJA05Mal *)pVoid;	while (1) {		pAS->Query();	}	return 0;}CJA05Mal::~CJA05Mal(){	if (m_hThread > 0)	{		cout << "JA05" << m_hThread << endl;		pthread_cancel(m_hThread);	}}bool CJA05Mal::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,thrdQueryJA,(void *)this) == 0)		bRet = true;	pthread_attr_destroy(&attr);	return bRet;}void CJA05Mal::Query(){	ReadYX();	sleep(1);	ReadYC();	sleep(1);}void CJA05Mal::ReadYC(){	CFrameNode FNSend,FNRecv;	FNSend.m_byCID = 0x80;	FNSend.m_byDesAddr = m_subdevmgr.GetAddrFrmNo(0);	FNSend.SetSize(1);	FNSend.m_pbyData[0] = 0x30;	WORD wDevNo = m_subdevmgr.GetDevNoFrmAddr(FNSend.m_byDesAddr);	if (m_DLService.REQ(1,&FNSend,FNRecv,0,true) == 1)	{		if ((FNRecv.m_wSize  >=  5) && (FNRecv.m_pbyData[0] == 0x30))		{			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 wValue = *pwOrigValue++;				pData[w].m_fValue = ((float) ((((wValue & 0xff00)>>8) *100)+ (wValue & 0xff)))/((w<2)?10:100) ;			}			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)		{			m_wBreakCount++;			YXData d;			d.m_wDevNo = wDevNo;			d.m_wDevPtNo = 199;			d.m_bValue = 0xff00;			m_pAllMgr->YX(&d, 1);		}		else if (m_wBreakCount< 5)			m_wBreakCount++;	}}void CJA05Mal::ReadYX(){	CFrameNode FNSend,FNRecv;	FNSend.m_byCID = 0x80;	FNSend.m_byDesAddr = m_subdevmgr.GetAddrFrmNo(0);	FNSend.SetSize(1);	FNSend.m_pbyData[0] = 0x7;	WORD wDevNo = m_subdevmgr.GetDevNoFrmAddr(FNSend.m_byDesAddr);	if (m_DLService.REQ(1,&FNSend,FNRecv,0,true) == 1)	{		if ((FNRecv.m_wSize  >=  2) && (FNRecv.m_pbyData[0] == 7))		{			BYTE* pbyTemp = FNRecv.m_pbyData+1;			YXData* pYXData = new YXData [12];			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;					pYXData[b+8*by].m_wDevPtNo = b+8*by + 1;					pYXData[b+8*by].m_bValue = bool(byValue & byA)?0xff00:0xff;					if ((by==1) && (b==3)) break;					/*					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, 12);			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)		{			m_wBreakCount++;			YXData d;			d.m_wDevNo = wDevNo;			d.m_wDevPtNo = 199;			d.m_bValue = 0xff00;			m_pAllMgr->YX(&d, 1);		}		else m_wBreakCount++;	}}

⌨️ 快捷键说明

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