123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- #include "StdAfx.h"
- #include "DeviceData.h"
- #include "CommonFun.h"
- CDeviceData::CDeviceData()
- {
- m_strName = _T("");
- m_strGroup = _T("");
- m_Value = _T("");
- m_nType = 0; //0:int 1:float 2:bool 3:string
- m_pFunc = NULL;
- m_nValue = 0;
- m_fValue = 0;
- m_bValue = false;
- m_strValue = _T("");
- }
- CDeviceData::CDeviceData( CString strName,CString strGroup,int nType,CString strValue )
- {
- m_strName = strName;
- m_strGroup = strGroup;
- m_nType = nType; //0:int 1:float 2:bool 3:string
- m_pFunc = NULL;
- m_nValue = 0;
- m_fValue = 0;
- m_bValue = false;
- m_strValue = _T("");
- SetValue(strValue);
- }
- CDeviceData::~CDeviceData()
- {
- }
- bool CDeviceData::FireCallback()
- {
- if (m_pFunc != NULL)
- {
- #ifdef _UNICODE
- m_pFunc(m_strName.GetBuffer(),m_strGroup.GetBuffer(),m_nType,m_Value.GetBuffer());
- #else
- CStringW wstrName = CCommonFun::mb2wc(m_strName.GetBuffer()).data();
- CStringW wstrGroup = CCommonFun::mb2wc(m_strGroup.GetBuffer()).data();
- CStringW wstrValue = CCommonFun::mb2wc(m_Value.GetBuffer()).data();
- m_pFunc(wstrName.GetBuffer(),wstrGroup.GetBuffer(),m_nType,wstrValue.GetBuffer());
- #endif
-
- return true;
- }
- return false;
- }
- bool CDeviceData::operator=( const int nValue )
- {
- if (m_nType != 0) //当前类型不是int
- {
- return false;
- }
- m_Value.Format(_T("%d"),nValue);
- if (m_nValue != nValue || (Group() == _T("Message"))||(Group() == _T("Status")))
- {
- m_nValue = nValue;
- FireCallback();
- }
- return true;
- }
- bool CDeviceData::operator=( const float fValue )
- {
- if (m_nType != 1) //当前类型不是float
- {
- return false;
- }
- m_Value.Format(_T("%f"),fValue);
- if (m_fValue != fValue || (Group() == _T("Message"))||(Group() == _T("Status")))
- {
- m_fValue = fValue;
- FireCallback();
- }
- return true;
- }
- bool CDeviceData::operator=( const bool bValue )
- {
- if (m_nType != 2) //当前类型不是bool
- {
- return false;
- }
- if (bValue)
- m_Value = _T("true");
- else
- m_Value = _T("false");
- if (m_bValue != bValue || (Group() == _T("Message"))||(Group() == _T("Status")))
- {
- m_bValue = bValue;
- FireCallback();
- }
-
- return true;
- }
- bool CDeviceData::operator=( const wchar_t* strValue )
- {
- if (m_nType != 3) //当前类型不是str
- {
- return false;
- }
- m_Value.Format(_T("%s"),strValue);
- if (m_strValue != m_Value || (Group() == _T("Message"))||(Group() == _T("Status")))
- {
- m_strValue = m_Value;
- FireCallback();
- }
- return true;
- }
- bool CDeviceData::operator=( const char* strValue )
- {
- if (m_nType != 3) //当前类型不是str
- {
- return false;
- }
- m_Value.Format(_T("%s"),strValue);
- if (m_strValue != m_Value || (Group() == _T("Message"))||(Group() == _T("Status")))
- {
- m_strValue = m_Value;
- FireCallback();
- }
- return true;
- }
- bool CDeviceData::operator=( const CString& strValue )
- {
- if (m_nType != 3) //当前类型不是str
- {
- return false;
- }
- m_Value = strValue;
- if (m_strValue != strValue || (Group() == _T("Message"))||(Group() == _T("Status")))
- {
- m_strValue = strValue;
- FireCallback();
- }
- return true;
- }
- CString CDeviceData::Name()
- {
- return m_strName;
- }
- CString CDeviceData::Group()
- {
- return m_strGroup;
- }
- int CDeviceData::Type()
- {
- return m_nType;
- }
- int CDeviceData::nValue()
- {
- return m_nValue;
- }
- float CDeviceData::fValue()
- {
- return m_fValue;
- }
- bool CDeviceData::bValue()
- {
- return m_bValue;
- }
- CString CDeviceData::strValue()
- {
- return m_strValue;
- }
- int CDeviceData::Init( CString strName,CString strGroup,int nValue,pCallbackfun pfun )
- {
- m_pFunc = pfun;
- m_strName = strName;
- m_strGroup = strGroup;
- m_nType = 0;
- m_nValue = nValue;
- m_Value.Format(_T("%d"),nValue);
- FireCallback();
- return 0;
- }
- int CDeviceData::Init( CString strName,CString strGroup,float fValue,pCallbackfun pfun )
- {
- m_pFunc = pfun;
- m_strName = strName;
- m_strGroup = strGroup;
- m_nType = 1;
- m_fValue = fValue;
- m_Value.Format(_T("%f"),fValue);
- FireCallback();
- return 0;
- }
- int CDeviceData::Init( CString strName,CString strGroup,bool bValue,pCallbackfun pfun )
- {
- m_pFunc = pfun;
- m_strName = strName;
- m_strGroup = strGroup;
- m_nType = 2;
- m_bValue = bValue;
- if (m_bValue)
- {
- m_Value = _T("true");
- }
- else
- {
- m_Value = _T("false");
- }
- FireCallback();
- return 0;
- }
- int CDeviceData::Init( CString strName,CString strGroup,CString strValue,pCallbackfun pfun )
- {
- m_pFunc = pfun;
- m_strName = strName;
- m_strGroup = strGroup;
- m_nType = 3;
- m_strValue = strValue;
- m_Value = m_strValue;
- FireCallback();
- return 0;
- }
- int CDeviceData::Init( CString strName,CString strGroup,const wchar_t* strValue,pCallbackfun pfun )
- {
- m_pFunc = pfun;
- m_strName = strName;
- m_strGroup = strGroup;
- m_nType = 3;
- m_strValue = strValue;
- m_Value = m_strValue;
- FireCallback();
- return 0;
- }
- int CDeviceData::Init( CString strName,CString strGroup,const char* strValue,pCallbackfun pfun )
- {
- m_pFunc = pfun;
- m_strName = strName;
- m_strGroup = strGroup;
- m_nType = 3;
- m_strValue = strValue;
- m_Value = m_strValue;
- FireCallback();
- return 0;
- }
- bool CDeviceData::SetValue( CString strValue )
- {
- int nData;
- float fData;
- switch(m_nType)
- {
- case 0: //int类型
- #ifdef _UNICODE
- nData = _wtoi(strValue);
- #else
- nData = atoi(strValue);
- #endif
- return *this = nData;
- break;
- case 1: //float类型
- #ifdef _UNICODE
- fData = (float)_wtof(strValue);
- #else
- fData = (float)atof(strValue);
- #endif
- return *this = fData;
- break;
- case 2: //int类型
- if (strValue.MakeLower() == _T("true"))
- return *this = true;
- else if (strValue.MakeLower() == _T("false"))
- return *this = false;
- break;
- case 3: //str类型
- return *this = strValue;
- break;
- default:
- break;
- }
- return false;
- }
- CString CDeviceData::Data()
- {
- return m_Value;
- }
- CString CDeviceData::strType()
- {
- CString strtype;
- switch(m_nType)
- {
- case 0: //int类型
- strtype = _T("int");
- break;
- case 1: //float类型
- strtype = _T("float");
- break;
- case 2: //bool类型
- strtype = _T("bool");
- break;
- case 3: //str类型
- strtype = _T("string");
- break;
- default:
- strtype.Format(_T("%d"),m_nType);
- break;
- }
- return strtype;
- }
|