本文整理汇总了C++中CGXDLMSValueEventArg::GetValue方法的典型用法代码示例。如果您正苦于以下问题:C++ CGXDLMSValueEventArg::GetValue方法的具体用法?C++ CGXDLMSValueEventArg::GetValue怎么用?C++ CGXDLMSValueEventArg::GetValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGXDLMSValueEventArg
的用法示例。
在下文中一共展示了CGXDLMSValueEventArg::GetValue方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetValue
// Set value of given attribute.
int CGXDLMSMessageHandler::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
return SetLogicalName(this, e.GetValue());
}
else if (e.GetIndex() == 2)
{
m_ListeningWindow.clear();
if (e.GetValue().vt == DLMS_DATA_TYPE_ARRAY)
{
for (std::vector<CGXDLMSVariant>::iterator it = e.GetValue().Arr.begin(); it != e.GetValue().Arr.end(); ++it)
{
CGXDLMSVariant tmp;
CGXDLMSClient::ChangeType(it->Arr[0], DLMS_DATA_TYPE_DATETIME, tmp);
CGXDateTime start = tmp.dateTime;
CGXDLMSClient::ChangeType(it->Arr[1], DLMS_DATA_TYPE_DATETIME, tmp);
CGXDateTime end = tmp.dateTime;
m_ListeningWindow.push_back(std::pair<CGXDateTime, CGXDateTime>(start, end));
}
}
}
else if (e.GetIndex() == 3)
{
m_AllowedSenders.clear();
if (e.GetValue().vt == DLMS_DATA_TYPE_ARRAY)
{
for (std::vector<CGXDLMSVariant>::iterator it = e.GetValue().Arr.begin(); it != e.GetValue().Arr.end(); ++it)
{
std::string str;
str.append(reinterpret_cast<char const*>(it->byteArr), it->size);
m_AllowedSenders.push_back(str);
}
}
}
else if (e.GetIndex() == 4)
{
m_SendersAndActions.clear();
if (e.GetValue().vt == DLMS_DATA_TYPE_ARRAY)
{
for (std::vector<CGXDLMSVariant>::iterator it = e.GetValue().Arr.begin(); it != e.GetValue().Arr.end(); ++it)
{
//std::string id = it->Arr[0].byteArr.ToString();
//Object[] tmp2 = (Object[]) tmp[1];
/*TODO:
KeyValuePair<int, GXDLMSScriptAction> executed_script = new KeyValuePair<int, GXDLMSScriptAction>(Convert.ToInt32(tmp2[1], tmp2[2]));
m_SendersAndActions.Add(new KeyValuePair<std::string, KeyValuePair<int, GXDLMSScriptAction>>(id, tmp[1] as GXDateTime));
* */
}
}
}
else
{
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
return DLMS_ERROR_CODE_OK;
}
示例2: SetValue
// Set value of given attribute.
int CGXDLMSSpecialDaysTable::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
int ret;
CGXDLMSVariant tmp;
if ((ret = GetLogicalName(this, tmp)) != 0)
{
return ret;
}
e.SetValue(tmp);
return DLMS_ERROR_CODE_OK;
}
else if (e.GetIndex() == 2)
{
for (std::vector<CGXDLMSSpecialDay*>::iterator it = m_Entries.begin(); it != m_Entries.end(); ++it)
{
delete *it;
}
m_Entries.clear();
if (e.GetValue().vt == DLMS_DATA_TYPE_ARRAY)
{
CGXDLMSVariant tmp;
for (std::vector<CGXDLMSVariant>::iterator item = e.GetValue().Arr.begin(); item != e.GetValue().Arr.end(); ++item)
{
CGXDLMSSpecialDay *it = new CGXDLMSSpecialDay();
it->SetIndex((*item).Arr[0].ToInteger());
CGXDLMSClient::ChangeType((*item).Arr[1], DLMS_DATA_TYPE_DATE, tmp);
it->SetDate(tmp.dateTime);
it->SetDayId((*item).Arr[2].ToInteger());
m_Entries.push_back(it);
}
}
}
else
{
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
return DLMS_ERROR_CODE_OK;
}
示例3: SetValue
// Set value of given attribute.
int CGXDLMSIecHdlcSetup::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
return SetLogicalName(this, e.GetValue());
}
else if (e.GetIndex() == 2)
{
m_CommunicationSpeed = (DLMS_BAUD_RATE) e.GetValue().ToInteger();
}
else if (e.GetIndex() == 3)
{
m_WindowSizeTransmit = e.GetValue().ToInteger();
}
else if (e.GetIndex() == 4)
{
m_WindowSizeReceive = e.GetValue().ToInteger();
}
else if (e.GetIndex() == 5)
{
m_MaximumInfoLengthTransmit = e.GetValue().ToInteger();
}
else if (e.GetIndex() == 6)
{
m_MaximumInfoLengthReceive = e.GetValue().ToInteger();
}
else if (e.GetIndex() == 7)
{
m_InterCharachterTimeout = e.GetValue().ToInteger();
}
else if (e.GetIndex() == 8)
{
m_InactivityTimeout = e.GetValue().ToInteger();
}
else if (e.GetIndex() == 9)
{
m_DeviceAddress = e.GetValue().ToInteger();
}
else
{
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
return DLMS_ERROR_CODE_OK;
}
示例4: SetValue
// Set value of given attribute.
int CGXDLMSDisconnectControl::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
return SetLogicalName(this, e.GetValue());
}
else if (e.GetIndex() == 2)
{
m_OutputState = e.GetValue().boolVal;
}
else if (e.GetIndex() == 3)
{
m_ControlState = (DLMS_CONTROL_STATE) e.GetValue().ToInteger();
}
else if (e.GetIndex() == 4)
{
m_ControlMode = (DLMS_CONTROL_MODE) e.GetValue().ToInteger();
}
else
{
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
return DLMS_ERROR_CODE_OK;
}
示例5: SetValue
// Set value of given attribute.
int CGXDLMSAutoConnect::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
return SetLogicalName(this, e.GetValue());
}
else if (e.GetIndex() == 2)
{
SetMode((AUTO_CONNECT_MODE) e.GetValue().ToInteger());
return DLMS_ERROR_CODE_OK;
}
else if (e.GetIndex() == 3)
{
SetRepetitions(e.GetValue().lVal);
return DLMS_ERROR_CODE_OK;
}
else if (e.GetIndex() == 4)
{
SetRepetitionDelay(e.GetValue().lVal);
return DLMS_ERROR_CODE_OK;
}
else if (e.GetIndex() == 5)
{
m_CallingWindow.clear();
for (std::vector<CGXDLMSVariant>::iterator item = e.GetValue().Arr.begin(); item != e.GetValue().Arr.end(); ++item)
{
CGXDLMSVariant tmp;
CGXDLMSClient::ChangeType(item->Arr[0], DLMS_DATA_TYPE_DATETIME, tmp);
CGXDateTime start = tmp.dateTime;
CGXDLMSClient::ChangeType(item->Arr[1], DLMS_DATA_TYPE_DATETIME, tmp);
CGXDateTime end = tmp.dateTime;
m_CallingWindow.push_back(std::make_pair(start, end));
}
return DLMS_ERROR_CODE_OK;
}
else if (e.GetIndex() == 6)
{
m_Destinations.clear();
std::vector< std::string > items;
for (std::vector<CGXDLMSVariant>::iterator item = e.GetValue().Arr.begin(); item != e.GetValue().Arr.end(); ++item)
{
CGXDLMSVariant value;
CGXDLMSClient::ChangeType(*item, DLMS_DATA_TYPE_STRING, value);
items.push_back(e.GetValue().ToString());
}
SetDestinations(items);
return DLMS_ERROR_CODE_OK;
}
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
示例6: SetValue
/*
* Set value of given attribute.
*/
int CGXDLMSAutoAnswer::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
return SetLogicalName(this, e.GetValue());
}
if (e.GetIndex() == 2)
{
SetMode((AUTO_CONNECT_MODE)e.GetValue().lVal);
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 3)
{
m_ListeningWindow.clear();
for (std::vector<CGXDLMSVariant>::iterator item = e.GetValue().Arr.begin(); item != e.GetValue().Arr.end(); ++item)
{
CGXDLMSVariant start, end;
CGXDLMSClient::ChangeType((*item).Arr[0], DLMS_DATA_TYPE_DATETIME, start);
CGXDLMSClient::ChangeType((*item).Arr[1], DLMS_DATA_TYPE_DATETIME, end);
m_ListeningWindow.push_back(std::pair< CGXDateTime, CGXDateTime>(start.dateTime, end.dateTime));
}
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 4)
{
SetStatus((AUTO_ANSWER_STATUS)e.GetValue().lVal);
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 5)
{
SetNumberOfCalls(e.GetValue().lVal);
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 6)
{
m_NumberOfRingsInListeningWindow = m_NumberOfRingsOutListeningWindow = 0;
if (e.GetValue().vt != DLMS_DATA_TYPE_NONE)
{
m_NumberOfRingsInListeningWindow = e.GetValue().Arr[0].ToInteger();
m_NumberOfRingsOutListeningWindow = e.GetValue().Arr[1].ToInteger();
}
return DLMS_ERROR_CODE_OK;
}
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
示例7: GetValue
// Returns value of given attribute.
int CGXDLMSAutoConnect::GetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
int ret;
CGXDLMSVariant tmp;
if ((ret = GetLogicalName(this, tmp)) != 0)
{
return ret;
}
e.SetValue(tmp);
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 2)
{
e.SetValue((unsigned char) GetMode());
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 3)
{
e.SetValue(GetRepetitions());
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 4)
{
e.SetValue(GetRepetitionDelay());
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 5)
{
int cnt = m_CallingWindow.size();
CGXByteBuffer data;
data.SetUInt8(DLMS_DATA_TYPE_ARRAY);
int ret;
//Add count
GXHelpers::SetObjectCount(cnt, data);
if (cnt != 0)
{
CGXDLMSVariant s, e;
for (std::vector<std::pair< CGXDateTime, CGXDateTime> >::iterator it = m_CallingWindow.begin(); it != m_CallingWindow.end(); ++it)
{
data.SetUInt8(DLMS_DATA_TYPE_STRUCTURE);
data.SetUInt8(2); //Count
s = it->first;
e = it->second;
if ((ret = GXHelpers::SetData(data, DLMS_DATA_TYPE_OCTET_STRING, s)) != 0 || //start_time
(ret = GXHelpers::SetData(data, DLMS_DATA_TYPE_OCTET_STRING, e)) != 0) //end_time
{
return ret;
}
}
}
e.SetValue(data);
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 6)
{
CGXByteBuffer data;
data.SetUInt8(DLMS_DATA_TYPE_ARRAY);
int ret;
int cnt = m_Destinations.size();
//Add count
GXHelpers::SetObjectCount(cnt, data);
for (std::vector< std::string >::iterator it = m_Destinations.begin(); it != m_Destinations.end(); ++it)
{
CGXDLMSVariant value;
e.GetValue().Add(&(*it)[0], it->size());
if ((ret = GXHelpers::SetData(data, DLMS_DATA_TYPE_OCTET_STRING, value)) != 0) //destination
{
return ret;
}
}
e.SetValue(data);
return DLMS_ERROR_CODE_OK;
}
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
示例8: SetValue
// Set value of given attribute.
int CGXDLMSTcpUdpSetup::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
return SetLogicalName(this, e.GetValue());
}
else if (e.GetIndex() == 2)
{
SetPort(e.GetValue().ToInteger());
return DLMS_ERROR_CODE_OK;
}
else if (e.GetIndex() == 3)
{
if (e.GetValue().vt == DLMS_DATA_TYPE_NONE)
{
SetIPReference("");
}
else
{
if (e.GetValue().vt == DLMS_DATA_TYPE_OCTET_STRING)
{
GXHelpers::GetLogicalName(e.GetValue().byteArr, m_IPReference);
}
else
{
SetIPReference(e.GetValue().ToString());
}
}
}
else if (e.GetIndex() == 4)
{
if (e.GetValue().vt == DLMS_DATA_TYPE_NONE)
{
SetMaximumSegmentSize(576);
}
else
{
SetMaximumSegmentSize(e.GetValue().ToInteger());
}
}
else if (e.GetIndex() == 5)
{
if (e.GetValue().vt == DLMS_DATA_TYPE_NONE)
{
SetMaximumSimultaneousConnections(1);
}
else
{
SetMaximumSimultaneousConnections(e.GetValue().ToInteger());
}
}
else if (e.GetIndex() == 6)
{
if (e.GetValue().vt == DLMS_DATA_TYPE_NONE)
{
SetInactivityTimeout(180);
}
else
{
SetInactivityTimeout(e.GetValue().ToInteger());
}
}
else
{
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
return DLMS_ERROR_CODE_OK;
}
示例9: SetValue
// Set value of given attribute.
int CGXDLMSGPRSSetup::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
return SetLogicalName(this, e.GetValue());
}
else if (e.GetIndex() == 2)
{
if (e.GetValue().vt == DLMS_DATA_TYPE_STRING)
{
m_APN = e.GetValue().ToString();
}
else
{
CGXDLMSVariant tmp;
int ret;
if ((ret = CGXDLMSClient::ChangeType(e.GetValue(), DLMS_DATA_TYPE_STRING, tmp)) != 0)
{
return ret;
}
m_APN = tmp.strVal;
}
e.SetValue(m_APN);
}
else if (e.GetIndex() == 3)
{
m_PINCode = e.GetValue().uiVal;
}
else if (e.GetIndex() == 4)
{
m_DefaultQualityOfService.SetPrecedence(e.GetValue().Arr[0].Arr[0].iVal);
m_DefaultQualityOfService.SetDelay(e.GetValue().Arr[0].Arr[1].iVal);
m_DefaultQualityOfService.SetReliability(e.GetValue().Arr[0].Arr[2].iVal);
m_DefaultQualityOfService.SetPeakThroughput(e.GetValue().Arr[0].Arr[3].iVal);
m_DefaultQualityOfService.SetMeanThroughput(e.GetValue().Arr[0].Arr[4].iVal);
m_RequestedQualityOfService.SetPrecedence(e.GetValue().Arr[1].Arr[0].iVal);
m_RequestedQualityOfService.SetDelay(e.GetValue().Arr[1].Arr[1].iVal);
m_RequestedQualityOfService.SetReliability(e.GetValue().Arr[1].Arr[2].iVal);
m_RequestedQualityOfService.SetPeakThroughput(e.GetValue().Arr[1].Arr[3].iVal);
m_RequestedQualityOfService.SetMeanThroughput(e.GetValue().Arr[1].Arr[4].iVal);
}
else
{
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
return DLMS_ERROR_CODE_OK;
}
示例10: SetValue
// Set value of given attribute.
int CGXDLMSPppSetup::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
return SetLogicalName(this, e.GetValue());
}
else if (e.GetIndex() == 2)
{
if (e.GetValue().vt == DLMS_DATA_TYPE_STRING)
{
m_PHYReference = e.GetValue().ToString();
}
else
{
CGXDLMSVariant tmp;
CGXDLMSClient::ChangeType(e.GetValue(), DLMS_DATA_TYPE_OCTET_STRING, tmp);
m_PHYReference = tmp.ToString();
}
}
else if (e.GetIndex() == 3)
{
m_LCPOptions.clear();
if (e.GetValue().vt == DLMS_DATA_TYPE_ARRAY)
{
for(std::vector<CGXDLMSVariant>::iterator item = e.GetValue().Arr.begin(); item != e.GetValue().Arr.end(); ++item)
{
CGXDLMSPppSetupLcpOption it;
it.SetType((PPP_SETUP_LCP_OPTION_TYPE) (*item).Arr[0].ToInteger());
it.SetLength((*item).Arr[1].ToInteger());
it.SetData((*item).Arr[2]);
m_LCPOptions.push_back(it);
}
}
}
else if (e.GetIndex() == 4)
{
m_IPCPOptions.clear();
if (e.GetValue().vt == DLMS_DATA_TYPE_ARRAY)
{
for(std::vector<CGXDLMSVariant>::iterator item = e.GetValue().Arr.begin(); item != e.GetValue().Arr.end(); ++item)
{
CGXDLMSPppSetupIPCPOption it;
it.SetType((PPP_SETUP_IPCP_OPTION_TYPE)(*item).Arr[0].ToInteger());
it.SetLength((*item).Arr[1].ToInteger());
it.SetData((*item).Arr[2]);
m_IPCPOptions.push_back(it);
}
}
}
else if (e.GetIndex() == 5)
{
m_UserName.Clear();
m_Password.Clear();
m_UserName.Set(e.GetValue().Arr[0].byteArr, e.GetValue().Arr[0].size);
m_Password.Set(e.GetValue().Arr[1].byteArr, e.GetValue().Arr[1].size);
}
else
{
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
return DLMS_ERROR_CODE_OK;
}
示例11: SetValue
// Set value of given attribute.
int CGXDLMSLimiter::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
return SetLogicalName(this, e.GetValue());
}
else if (e.GetIndex() == 2)
{
DLMS_OBJECT_TYPE ot = (DLMS_OBJECT_TYPE) e.GetValue().Arr[0].ToInteger();
CGXDLMSVariant tmp;
CGXDLMSClient::ChangeType(e.GetValue().Arr[1], DLMS_DATA_TYPE_OCTET_STRING, tmp);
std::string ln = tmp.ToString();
m_SetSelectedAttributeIndex = e.GetValue().Arr[2].ToInteger();
m_MonitoredValue = settings.GetObjects().FindByLN(ot, ln);
}
else if (e.GetIndex() == 3)
{
m_ThresholdActive = e.GetValue();
}
else if (e.GetIndex() == 4)
{
m_ThresholdNormal = e.GetValue();
}
else if (e.GetIndex() == 5)
{
m_ThresholdEmergency = e.GetValue();
}
else if (e.GetIndex() == 6)
{
m_MinOverThresholdDuration = e.GetValue().ToInteger();
}
else if (e.GetIndex() == 7)
{
m_MinUnderThresholdDuration = e.GetValue().ToInteger();
}
else if (e.GetIndex() == 8)
{
m_EmergencyProfile.SetID(e.GetValue().Arr[0].ToInteger());
CGXDLMSVariant tmp;
CGXDLMSClient::ChangeType(e.GetValue().Arr[1], DLMS_DATA_TYPE_DATETIME, tmp);
m_EmergencyProfile.SetActivationTime(tmp.dateTime);
m_EmergencyProfile.SetDuration(e.GetValue().Arr[2].ToInteger());
}
else if (e.GetIndex() == 9)
{
m_EmergencyProfileGroupIDs.clear();
for (std::vector<CGXDLMSVariant>::iterator it = e.GetValue().Arr.begin(); it != e.GetValue().Arr.end(); ++it)
{
m_EmergencyProfileGroupIDs.push_back((*it).ToInteger());
}
}
else if (e.GetIndex() == 10)
{
m_EmergencyProfileActive = e.GetValue().boolVal;
}
else if (e.GetIndex() == 11)
{
CGXDLMSVariant tmp;
CGXDLMSClient::ChangeType(e.GetValue().Arr[0].Arr[0], DLMS_DATA_TYPE_OCTET_STRING, tmp);
m_ActionOverThreshold.SetLogicalName(tmp.ToString());
m_ActionOverThreshold.SetScriptSelector(e.GetValue().Arr[0].Arr[1].ToInteger());
CGXDLMSClient::ChangeType(e.GetValue().Arr[1].Arr[0], DLMS_DATA_TYPE_OCTET_STRING, tmp);
m_ActionUnderThreshold.SetLogicalName(tmp.ToString());
m_ActionUnderThreshold.SetScriptSelector(e.GetValue().Arr[1].Arr[1].ToInteger());
}
else
{
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
return DLMS_ERROR_CODE_OK;
}
示例12: SetValue
/*
* Set value of given attribute.
*/
int CGXDLMSProfileGeneric::SetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
int ret;
if (e.GetIndex() == 1)
{
return SetLogicalName(this, e.GetValue());
}
else if (e.GetIndex() == 2)
{
if (m_CaptureObjects.size() == 0)
{
//Read capture objects first.
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
m_Buffer.clear();
if (e.GetValue().vt != DLMS_DATA_TYPE_NONE)
{
std::vector<DLMS_DATA_TYPE> types;
DLMS_DATA_TYPE type;
for (std::vector<std::pair<CGXDLMSObject*, CGXDLMSCaptureObject*> >::iterator it = m_CaptureObjects.begin(); it != m_CaptureObjects.end(); ++it)
{
if ((ret = (*it).first->GetUIDataType((*it).second->GetAttributeIndex(), type)) != 0)
{
return ret;
}
types.push_back(type);
}
for (std::vector<CGXDLMSVariant >::iterator row = e.GetValue().Arr.begin(); row != e.GetValue().Arr.end(); ++row)
{
if ((*row).Arr.size() != m_CaptureObjects.size())
{
//Number of columns do not match.
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
CGXDLMSVariant data;
for(unsigned int pos = 0; pos < (*row).Arr.size(); ++pos)
{
DLMS_DATA_TYPE type = types[pos];
if (type != DLMS_DATA_TYPE_NONE && row->Arr[pos].vt == DLMS_DATA_TYPE_OCTET_STRING)
{
if ((ret = CGXDLMSClient::ChangeType(row->Arr[pos], type, data)) != 0)
{
return ret;
}
row->Arr[pos] = data;
}
std::pair<CGXDLMSObject*, CGXDLMSCaptureObject*> item = m_CaptureObjects[pos];
if (item.first->GetObjectType() == DLMS_OBJECT_TYPE_REGISTER && item.second->GetAttributeIndex() == 2)
{
double scaler = ((CGXDLMSRegister*) item.first)->GetScaler();
if (scaler != 1)
{
row->Arr[pos] = row->Arr[pos].ToDouble() * scaler;
}
}
}
m_Buffer.push_back(row->Arr);
}
}
m_EntriesInUse = m_Buffer.size();
}
else if (e.GetIndex() == 3)
{
m_CaptureObjects.clear();
m_Buffer.clear();
m_EntriesInUse = 0;
if (e.GetValue().vt == DLMS_DATA_TYPE_ARRAY)
{
for (std::vector<CGXDLMSVariant >::iterator it = e.GetValue().Arr.begin(); it != e.GetValue().Arr.end(); ++it)
{
if ((*it).Arr.size() != 4)
{
//Invalid structure format.
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}
DLMS_OBJECT_TYPE type = (DLMS_OBJECT_TYPE) (*it).Arr[0].ToInteger();
std::string ln;
GXHelpers::GetLogicalName((*it).Arr[1].byteArr, ln);
CGXDLMSObject* pObj = settings.GetObjects().FindByLN(type, ln);
if(pObj == NULL)
{
pObj = CGXDLMSObjectFactory::CreateObject(type, ln);
}
AddCaptureObject(pObj, (*it).Arr[2].ToInteger(), (*it).Arr[3].ToInteger());
}
}
}
else if (e.GetIndex() == 4)
{
m_CapturePeriod = e.GetValue().ToInteger();
}
else if (e.GetIndex() == 5)
{
m_SortMethod = (GX_SORT_METHOD) e.GetValue().ToInteger();
}
else if (e.GetIndex() == 6)
//.........这里部分代码省略.........
示例13: GetValue
/*
* Returns value of given attribute.
*/
int CGXDLMSProfileGeneric::GetValue(CGXDLMSSettings& settings, CGXDLMSValueEventArg& e)
{
if (e.GetIndex() == 1)
{
int ret;
CGXDLMSVariant tmp;
if ((ret = GetLogicalName(this, tmp)) != 0)
{
return ret;
}
e.SetValue(tmp);
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 2)
{
CGXByteBuffer tmp;
tmp.Set(e.GetValue().byteArr, e.GetValue().size);
int ret = GetProfileGenericData(e.GetSelector(), e.GetParameters(), tmp);
e.SetValue(tmp);
return ret;
}
if (e.GetIndex() == 3)
{
CGXByteBuffer data;
int ret = GetColumns(data);
e.SetValue(data);
return ret;
}
if (e.GetIndex() == 4)
{
e.SetValue(GetCapturePeriod());
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 5)
{
e.SetValue(GetSortMethod());
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 6)
{
char empty[6] = {0};
CGXByteBuffer data;
data.SetUInt8(DLMS_DATA_TYPE_STRUCTURE);
data.SetUInt8(4);
if (m_SortObject == NULL)
{
//ClassID
data.SetUInt8(DLMS_DATA_TYPE_UINT16);
data.SetUInt16(0);
//LN
data.SetUInt8(DLMS_DATA_TYPE_OCTET_STRING);
data.SetUInt8(6);
data.Set(empty, 6);
//Selected Attribute Index
data.SetUInt8(DLMS_DATA_TYPE_INT8);
data.SetUInt8(0);
//Selected Data Index
data.SetUInt8(DLMS_DATA_TYPE_UINT16);
data.SetUInt16(0);
}
else
{
int ret;
CGXDLMSVariant ln;
//ClassID
data.SetUInt8(DLMS_DATA_TYPE_UINT16);
data.SetUInt16(m_SortObject->GetObjectType());
//LN
data.SetUInt8(DLMS_DATA_TYPE_OCTET_STRING);
data.SetUInt8(6);
if ((ret = GetLogicalName(m_SortObject, ln)) != 0)
{
return ret;
}
data.Set(&ln.byteArr, 6);
//Selected Attribute Index
data.SetUInt8(DLMS_DATA_TYPE_INT8);
data.SetUInt8(m_SortObjectAttributeIndex);
//Selected Data Index
data.SetUInt8(DLMS_DATA_TYPE_UINT16);
data.SetUInt16(m_SortObjectDataIndex);
}
e.SetValue(data);
}
if (e.GetIndex() == 7)
{
e.SetValue(GetEntriesInUse());
return DLMS_ERROR_CODE_OK;
}
if (e.GetIndex() == 8)
{
e.SetValue(GetProfileEntries());
return DLMS_ERROR_CODE_OK;
}
return DLMS_ERROR_CODE_INVALID_PARAMETER;
}