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

📄 devmgr.h.bak

📁 一个通讯管理机的源代码。比较好用。推荐
💻 BAK
字号:
#ifndef _DEVMGR_H#define _DEVMGR_H/*struct struDev{	BYTE	m_byDLNo;	WORD	m_wDevNo;	string	m_strName;	BYTE	m_byAddr;	BYTE	m_byTypeID;	BOOL	m_bIsWorking;	WORD	m_wPasswd;	WORD	m_wConnectYXNo;	BYTE	m_byLocalNo;};*/#include "devset.h"class CSubdev{public:	CSubdev(CDevSet& setDev)	{		m_byBkCount = 0;		m_byDLNo = (BYTE)setDev.m_wChannelNo;		m_wDevNo = setDev.m_wDevNo;		strcpy(m_szName,setDev.m_szDevName);		m_byAddr = setDev.m_byDllAddr;		if (m_byAddr ==0 )			 m_byAddr = 100;				if (setDev.m_strDT == string("PMAC720有谐波"))			m_byTypeID =  dt_ePMAC720;		else if (setDev.m_strDT == string("PMAC720无谐波"))			m_byTypeID =  dt_ePM100EN;		else if (setDev.m_strDT == string("SEPAM1000S20"))			m_byTypeID =  dt_eSEPAM20;		else if (setDev.m_strDT == string("SEPAM1000S40"))			m_byTypeID =  dt_eSEPAM40;		else if (setDev.m_strDT == string("csc246"))			m_byTypeID =  dt_eCSC246;		else if (setDev.m_strDT == string("PMAC9900H"))			m_byTypeID =  dt_ePMAC9900H;		else if (setDev.m_strDT == string("PMAC9900E"))			m_byTypeID =  dt_ePMAC9900E;		else if ((setDev.m_strDT == string("PMAC9900N")) || (setDev.m_strDT == string("PM100N")))			m_byTypeID =  dt_ePMAC9900N;		else if (setDev.m_strDT == string("PMAC9900"))			m_byTypeID =  dt_ePMAC9900;		else if (setDev.m_strDT == string("福建力得温控仪"))			m_byTypeID =  dt_eLDWKY;		else if (setDev.m_strDT == string("协顺TTC310温控器"))			m_byTypeID =  dt_eTTC310;		else if (setDev.m_strDT == string("DCRJ"))			m_byTypeID =  dt_eDCRJ;		else if (setDev.m_strDT == string("PA100-CD"))			m_byTypeID =  dt_ePA100CD;		else if (setDev.m_strDT == string("PA100-MFZT"))			m_byTypeID =  dt_ePA100MFZT;		else if (setDev.m_strDT == string("PA100-JXZT"))			m_byTypeID =  dt_ePA100JXZT;		else if (setDev.m_strDT == string("PA100"))			m_byTypeID =  dt_ePA100;		else if ((setDev.m_strDT == string("PMAC600B-Z")) || (setDev.m_strDT == string("PM500")))			m_byTypeID =  dt_ePMAC600B;		else if ((setDev.m_strDT == string("PMAC600B-W")) || (setDev.m_strDT == string("PMAC600B-I")))			m_byTypeID =  dt_ePMAC600B;        else if (setDev.m_strDT == string("PMAC600A-Z"))			m_byTypeID =  dt_ePMAC600A;		else if ((setDev.m_strDT == string("PMAC600A-W")) || (setDev.m_strDT == string("PMAC600A-I")))			m_byTypeID =  dt_ePMAC600A;		else if (setDev.m_strDT == string("PMAC303"))			m_byTypeID =  dt_ePMAC303;		else if (setDev.m_strDT == string("PDM_820QC"))    //add by lisheng for modbus			m_byTypeID =  dt_ePDM820;                      //add by lisheng for modbus		else if (setDev.m_strDT == string("PDM-803AC/HE"))   //add by lisheng for modbus			m_byTypeID =  dt_ePDM803A;                      //add by lisheng for modbus		else if (setDev.m_strDT == string("ABB542"))     //add by lisheng  for modbus          m_byTypeID =  dt_eDDEF;                       //add by lisheng   for modbus          else if (setDev.m_strDT == string("ABB543"))     //add by lisheng  for modbus          m_byTypeID =  dt_eDDEF1;           else if (setDev.m_strDT == string("PSM-E10"))     //add by lisheng  for CDT 2007-4-4          m_byTypeID = dt_ePSME10;                          //add by lisheng  for CDT 2007-4-4		else if (setDev.m_strDT == string("PMAC503B/D"))			m_byTypeID =  dt_ePMAC503;		else if (setDev.m_strDT == string("REF542plus"))         //ABB			m_byTypeID =  dt_eREF542plus;		else if (setDev.m_strDT == string("WGK_31_001"))         //WGK			m_byTypeID =  dt_eWGK31001;		else if (setDev.m_strDT == string("YD2010"))			m_byTypeID =  dt_eYD2010;		else if (setDev.m_strDT == string("YD2020"))			m_byTypeID =  dt_eYD2020;		else if (setDev.m_strDT == string("YD2100"))			m_byTypeID =  dt_eYD2100;		else if (setDev.m_strDT == string("csc211"))			m_byTypeID =  dt_eCSC211;		else if (setDev.m_strDT == string("JBK3000"))			m_byTypeID =  dt_eJBK3000;		else if (setDev.m_strDT == string("FJTWKY"))			m_byTypeID =  dt_eFJTWKY;		else if (setDev.m_strDT == string("ZGDWKY"))			m_byTypeID =  dt_eZGDWKY;		else if (setDev.m_strDT == string("PMAC503E"))			m_byTypeID =  dt_ePMAC503E;		else if (setDev.m_strDT == string("北京华隆直流屏规约"))			m_byTypeID =  dt_ehlk2;		else if (setDev.m_strDT == string("协顺TTC310温控器"))			m_byTypeID =  dt_ehlk2;		else if (setDev.m_strDT == string("温控仪_上海工程"))			m_byTypeID =  dt_eWKY0;		else if (setDev.m_strDT == string("工控机_上海工程"))			m_byTypeID =  dt_eGKJ0;		else m_byTypeID = (DevType)0;				m_bIsWorking = setDev.m_bIsOn;		m_wPasswd = setDev.m_wPasswd;		m_byLocalNo = setDev.m_byLocalNo;		m_wConnectYXNo = setDev.m_wConnectYXNo;		m_dwIPAddr = setDev.m_dwIPAddr;	}		BYTE	m_byDLNo;	WORD	m_wDevNo;	char	m_szName[64];	BYTE	m_byAddr;	DevType	m_byTypeID;	BOOL	m_bIsWorking;	WORD	m_wPasswd;	WORD	m_wConnectYXNo;	BYTE	m_byLocalNo;	DWORD	m_dwIPAddr;	void SetBreak(bool bBreak = true)	{		if (bBreak && (m_byBkCount<5))		{			if (m_byBkCount++ == 0)				m_byVisitCount = 0;		}		else if (!bBreak) m_byBkCount = 0;	}	bool IsWorking()	{		bool bRet = false;		if (m_bIsWorking)		{			if ((m_byBkCount == 0) || (++m_byVisitCount >= m_byBkCount))			{				bRet = true;				m_byVisitCount = 0;			}		}		return bRet;	}	CSubdev* GetThis(){return this;}protected:	BYTE	m_byBkCount;	BYTE	m_byVisitCount;};class CSubdevMgr {protected:	BYTE m_byCurNo;	vector<CSubdev> m_listSubdev;//	pthread_mutex_t	m_mutex;public:	CSubdevMgr()	{		m_byCurNo = 0xff;	}		void Load(WORD wChannelNo);	bool Has(WORD wDevNo)	{		return (GetDevFrmDevNo(wDevNo) != NULL);	}	CSubdev* GetDevFrmDevNo(WORD wDevNo)	{		CSubdev* pRet = NULL;		vector<CSubdev>::iterator pSubdev = m_listSubdev.begin();		for (unsigned b=0; b<m_listSubdev.size(); b++)		{			if (pSubdev->m_wDevNo == wDevNo)			{				pRet = pSubdev->GetThis();				break;			}			pSubdev++;		}		return pRet;	}	CSubdev* GetDevFrmNo(BYTE byNo)	{		CSubdev* pRet = NULL;		vector<CSubdev>::iterator pSubdev = m_listSubdev.begin();		if (byNo < m_listSubdev.size())			pRet = (pSubdev+byNo)->GetThis();		return pRet;	}public:	BOOL HasOn()	{		vector<CSubdev>::iterator pSubdev = m_listSubdev.begin();		for (BYTE b=0; b<m_listSubdev.size(); pSubdev++,b++)		{			if (pSubdev->IsWorking())				return TRUE;		}		return FALSE;	}	WORD GetPasswd(WORD wDevNo)	{		CSubdev* pSubdev = GetDevFrmDevNo(wDevNo);		if (pSubdev)			return pSubdev->m_wPasswd;		else return 0xff;	}	void SetPasswd(WORD wDevNo,WORD wNewPasswd)	{		CSubdev* pSubdev = GetDevFrmDevNo(wDevNo);		if (pSubdev)			pSubdev->m_wPasswd = wNewPasswd;	}	int GetNum() {return m_listSubdev.size();}	char* GetNameFrmDevNo(WORD wDevNo)	{		char* p=NULL;		CSubdev* pSubdev = GetDevFrmDevNo(wDevNo);		if (pSubdev)		{			p = pSubdev->m_szName;		}		return p;	}	char* GetNameFrmNo(BYTE byNo)	{		char* p=NULL;		CSubdev* pSubdev = GetDevFrmNo(byNo);		if (pSubdev)		{			p = pSubdev->m_szName;		}		return p;	}	BYTE GetNoFrmAddr(BYTE byAddr,BYTE byLocalNo = 0xff)	{		vector<CSubdev>::iterator pSubdev = m_listSubdev.begin();		for (BYTE byNo = 0; byNo < m_listSubdev.size();pSubdev++, byNo++)		{			if ((pSubdev->m_byAddr == byAddr)//					&& ((byLocalNo & pSubdev->m_byLocalNo) == pSubdev->m_byLocalNo))					&& ((byLocalNo == 0xff) || (byLocalNo == pSubdev->m_byLocalNo)))				return byNo;		}		return 0xff;	}	WORD GetDevNoFrmAddr(BYTE byAddr,BYTE byLocalNo = 0xff)	{		vector<CSubdev>::iterator pSubdev = m_listSubdev.begin();		for (BYTE byNo = 0; byNo < m_listSubdev.size(); byNo++)		{			if ((pSubdev->m_byAddr == byAddr)					&& ((byLocalNo == 0xff) || (byLocalNo == pSubdev->m_byLocalNo)))				return pSubdev->m_wDevNo;			pSubdev++;		}		return 0xffff;	}	BYTE GetLocalNoFrmNo(BYTE byNo)	{		vector<CSubdev>::iterator pSubdev = m_listSubdev.begin();		if (byNo < m_listSubdev.size())		{			pSubdev+=byNo;			return pSubdev->m_byLocalNo;		}		return 0xff;	}	BYTE GetAddrFrmNo(BYTE byNo)	{		vector<CSubdev>::iterator pSubdev = m_listSubdev.begin();		if (byNo < m_listSubdev.size())		{			pSubdev+=byNo;			return pSubdev->m_byAddr;		}		return 0xff;	}	BYTE GetNextNo(BYTE byCurNo);	BYTE GetNextAddr(BYTE byCurAddr);	BYTE GetTypeFrmNo(BYTE byNo)	{		vector<CSubdev>::iterator pSubdev = m_listSubdev.begin();		if (byNo < m_listSubdev.size())		{			while (byNo--) pSubdev++;			return pSubdev->m_byTypeID;		}		return 0xff;	}		BYTE GetAddrFrmDevNo(WORD wDevNo)	{		BYTE byAddr = 0xff;		vector<CSubdev>::iterator pSubdev = m_listSubdev.begin();		BYTE byNo = 0;		while (byNo++ < m_listSubdev.size())		{			if (pSubdev->m_wDevNo == wDevNo)			{				byAddr = pSubdev->m_byAddr;			}			pSubdev++;		}		return byAddr;			}	BYTE GetTypeFrmAddr(BYTE byAddr)	{		vector<CSubdev>::iterator pSubdev = m_listSubdev.begin();		BYTE byNo = 0;		while (byNo++ < m_listSubdev.size())		{			if (pSubdev->m_byAddr == byAddr)				return pSubdev->m_byTypeID;			pSubdev++;		}		return 0xff;	}	bool IsOn(BYTE byNo)	{		vector<CSubdev>::iterator pSubdev = m_listSubdev.begin();		if (byNo < m_listSubdev.size())		{			while (byNo--) pSubdev++;			return pSubdev->IsWorking();		}		return false;	}};#endif //_DEVMGR_H

⌨️ 快捷键说明

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