本文整理汇总了C#中ReadValueIdCollection.Add方法的典型用法代码示例。如果您正苦于以下问题:C# ReadValueIdCollection.Add方法的具体用法?C# ReadValueIdCollection.Add怎么用?C# ReadValueIdCollection.Add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ReadValueIdCollection
的用法示例。
在下文中一共展示了ReadValueIdCollection.Add方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ShowDialog
/// <summary>
/// Prompts the user to enter a value to write.
/// </summary>
/// <param name="session">The session to use.</param>
/// <param name="nodeId">The identifier for the node to write to.</param>
/// <param name="attributeId">The attribute being written.</param>
/// <returns>True if successful. False if the operation was cancelled.</returns>
public bool ShowDialog(Session session, NodeId nodeId, uint attributeId)
{
m_session = session;
m_nodeId = nodeId;
m_attributeId = attributeId;
ReadValueId nodeToRead = new ReadValueId();
nodeToRead.NodeId = nodeId;
nodeToRead.AttributeId = attributeId;
ReadValueIdCollection nodesToRead = new ReadValueIdCollection();
nodesToRead.Add(nodeToRead);
// read current value.
DataValueCollection results = null;
DiagnosticInfoCollection diagnosticInfos = null;
m_session.Read(
null,
0,
TimestampsToReturn.Neither,
nodesToRead,
out results,
out diagnosticInfos);
ClientBase.ValidateResponse(results, nodesToRead);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, nodesToRead);
m_value = results[0];
ValueTB.Text = Utils.Format("{0}", m_value.WrappedValue);
// display the dialog.
if (ShowDialog() != DialogResult.OK)
{
return false;
}
return true;
}
示例2: BrowseTV_AfterSelect
/// <summary>
/// Handles the AfterSelect event of the BrowseTV control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.Windows.Forms.TreeViewEventArgs"/> instance containing the event data.</param>
private void BrowseTV_AfterSelect(object sender, TreeViewEventArgs e)
{
try
{
EventFieldsLV.Items.Clear();
FilterDefinition filter = m_newFilter = new FilterDefinition();
filter.EventTypeId = null;
filter.Fields = new List<FilterDefinitionField>();
if (e.Node == null)
{
OkBTN.Enabled = false;
return;
}
OkBTN.Enabled = true;
// get the currently selected event.
NodeId eventTypeId = Opc.Ua.ObjectTypeIds.BaseEventType;
ReferenceDescription reference = e.Node.Tag as ReferenceDescription;
if (reference != null)
{
eventTypeId = (NodeId)reference.NodeId;
}
filter.EventTypeId = eventTypeId;
// collect all of the fields defined for the event.
SimpleAttributeOperandCollection fields = new SimpleAttributeOperandCollection();
List<NodeId> declarationIds = new List<NodeId>();
FormUtils.CollectFieldsForType(m_session, eventTypeId, fields, declarationIds);
// need to read the description and datatype for each field.
ReadValueIdCollection valuesToRead = new ReadValueIdCollection();
for (int ii = 0; ii < declarationIds.Count; ii++)
{
ReadValueId valueToRead = new ReadValueId();
valueToRead.NodeId = declarationIds[ii];
valueToRead.AttributeId = Attributes.Description;
valuesToRead.Add(valueToRead);
valueToRead = new ReadValueId();
valueToRead.NodeId = declarationIds[ii];
valueToRead.AttributeId = Attributes.DataType;
valuesToRead.Add(valueToRead);
valueToRead = new ReadValueId();
valueToRead.NodeId = declarationIds[ii];
valueToRead.AttributeId = Attributes.ValueRank;
valuesToRead.Add(valueToRead);
}
DataValueCollection results = null;
DiagnosticInfoCollection diagnosticInfos = null;
m_session.Read(
null,
0,
TimestampsToReturn.Neither,
valuesToRead,
out results,
out diagnosticInfos);
ClientBase.ValidateResponse(results, valuesToRead);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, valuesToRead);
// collect values. ignore errors since data used for display only.
List<LocalizedText> descriptions = new List<LocalizedText>();
List<NodeId> datatypes = new List<NodeId>();
List<int> valueRanks = new List<int>();
for (int ii = 0; ii < declarationIds.Count*3; ii += 3)
{
descriptions.Add(results[ii].GetValue<LocalizedText>(LocalizedText.Null));
datatypes.Add(results[ii+1].GetValue<NodeId>(NodeId.Null));
valueRanks.Add(results[ii+2].GetValue<int>(ValueRanks.Any));
}
// populate the list box.
for (int ii = 0; ii < fields.Count; ii++)
{
FilterDefinitionField field = new FilterDefinitionField();
filter.Fields.Add(field);
field.Operand = fields[ii];
StringBuilder displayName = new StringBuilder();
for (int jj = 0; jj < field.Operand.BrowsePath.Count; jj++)
{
if (displayName.Length > 0)
{
//.........这里部分代码省略.........
示例3: ReadDictionary
/// <summary>
/// Reads the contents of a data dictionary.
/// </summary>
private byte[] ReadDictionary(NodeId dictionaryId)
{
// create item to read.
ReadValueId itemToRead = new ReadValueId();
itemToRead.NodeId = dictionaryId;
itemToRead.AttributeId = Attributes.Value;
itemToRead.IndexRange = null;
itemToRead.DataEncoding = null;
ReadValueIdCollection itemsToRead = new ReadValueIdCollection();
itemsToRead.Add(itemToRead);
// read value.
DataValueCollection values;
DiagnosticInfoCollection diagnosticInfos;
ResponseHeader responseHeader = m_session.Read(
null,
0,
TimestampsToReturn.Neither,
itemsToRead,
out values,
out diagnosticInfos);
ClientBase.ValidateResponse(values, itemsToRead);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, itemsToRead);
// check for error.
if (StatusCode.IsBad(values[0].StatusCode))
{
ServiceResult result = ClientBase.GetResult(values[0].StatusCode, 0, diagnosticInfos, responseHeader);
throw new ServiceResultException(result);
}
// return as a byte array.
return values[0].Value as byte[];
}
示例4: UpdateValues
/// <summary>
/// Updates the values from the server.
/// </summary>
private void UpdateValues()
{
ReadValueIdCollection valuesToRead = new ReadValueIdCollection();
foreach (ListViewItem item in ItemsLV.Items)
{
ItemInfo info = item.Tag as ItemInfo;
if (info == null)
{
continue;
}
ReadValueId valueToRead = new ReadValueId();
valueToRead.NodeId = info.NodeId;
valueToRead.AttributeId = info.AttributeId;
valueToRead.Handle = item;
valuesToRead.Add(valueToRead);
}
DataValueCollection results;
DiagnosticInfoCollection diagnosticInfos;
m_session.Read(
null,
0,
TimestampsToReturn.Neither,
valuesToRead,
out results,
out diagnosticInfos);
ClientBase.ValidateResponse(results, valuesToRead);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, valuesToRead);
for (int ii = 0; ii < valuesToRead.Count; ii++)
{
ListViewItem item = (ListViewItem)valuesToRead[ii].Handle;
ItemInfo info = (ItemInfo)item.Tag;
info.Value = results[ii];
UpdateItem(item, info);
}
AdjustColumns();
}
示例5: Read
/// <summary>
/// Reads the values for a set of variables.
/// </summary>
static void Read(Session session)
{
IList<NodeOfInterest> results = GetNodeIds(session, Opc.Ua.Objects.ObjectsFolder,
VariableBrowsePaths.ToArray());
// build list of nodes to read.
ReadValueIdCollection nodesToRead = new ReadValueIdCollection();
for (int ii = 0; ii < results.Count; ii++)
{
ReadValueId nodeToRead = new ReadValueId();
nodeToRead.NodeId = results[ii].NodeId;
nodeToRead.AttributeId = Attributes.Value;
nodesToRead.Add(nodeToRead);
}
// read values.
DataValueCollection values;
DiagnosticInfoCollection diagnosticInfos;
ResponseHeader responseHeader = session.Read(
null,
0,
TimestampsToReturn.Both,
nodesToRead,
out values,
out diagnosticInfos);
// verify that the server returned the correct number of results.
Session.ValidateResponse(values, nodesToRead);
Session.ValidateDiagnosticInfos(diagnosticInfos, nodesToRead);
// process results.
for (int ii = 0; ii < values.Count; ii++)
{
// check for error.
if (StatusCode.IsBad(values[ii].StatusCode))
{
ServiceResult result = Session.GetResult(values[ii].StatusCode, ii, diagnosticInfos, responseHeader);
Console.WriteLine("Read result for {0}: {1}", VariableBrowsePaths[ii], result.ToLongString());
continue;
}
// write value.
Console.WriteLine( "{0}: V={1}, Q={2}, SrvT={3}, SrcT={4}",nodesToRead[ii].NodeId, values[ii].Value.ToString(),
values[ii].StatusCode.ToString(), values[ii].ServerTimestamp, values[ii].SourceTimestamp);
}
}
示例6: ReadLogFilePath
/// <summary>
/// Reads the log file path.
/// </summary>
private void ReadLogFilePath()
{
if (m_session == null)
{
return;
}
try
{
// want to get error text for this call.
m_session.ReturnDiagnostics = DiagnosticsMasks.All;
ReadValueId value = new ReadValueId();
value.NodeId = m_logFileNodeId;
value.AttributeId = Attributes.Value;
ReadValueIdCollection valuesToRead = new ReadValueIdCollection();
valuesToRead.Add(value);
DataValueCollection results = null;
DiagnosticInfoCollection diagnosticInfos = null;
ResponseHeader responseHeader = m_session.Read(
null,
0,
TimestampsToReturn.Neither,
valuesToRead,
out results,
out diagnosticInfos);
ClientBase.ValidateResponse(results, valuesToRead);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, valuesToRead);
if (StatusCode.IsBad(results[0].StatusCode))
{
throw ServiceResultException.Create(results[0].StatusCode, 0, diagnosticInfos, responseHeader.StringTable);
}
LogFilePathTB.Text = results[0].GetValue<string>("");
}
catch (Exception exception)
{
ClientUtils.HandleException(this.Text, exception);
}
finally
{
m_session.ReturnDiagnostics = DiagnosticsMasks.None;
}
}
示例7: AddProperties
/// <summary>
/// Adds the properties to the control.
/// </summary>
private void AddProperties()
{
// build list of properties to read.
ReadValueIdCollection nodesToRead = new ReadValueIdCollection();
Browser browser = new Browser(m_session);
browser.BrowseDirection = BrowseDirection.Forward;
browser.ReferenceTypeId = ReferenceTypeIds.HasProperty;
browser.IncludeSubtypes = true;
browser.NodeClassMask = (int)NodeClass.Variable;
browser.ContinueUntilDone = true;
ReferenceDescriptionCollection references = browser.Browse(m_nodeId);
foreach (ReferenceDescription reference in references)
{
ReadValueId valueId = new ReadValueId();
valueId.NodeId = (NodeId)reference.NodeId;
valueId.AttributeId = Attributes.Value;
valueId.IndexRange = null;
valueId.DataEncoding = null;
nodesToRead.Add(valueId);
}
// check for empty list.
if (nodesToRead.Count == 0)
{
return;
}
// read values.
DataValueCollection values;
DiagnosticInfoCollection diagnosticInfos;
m_session.Read(
null,
0,
TimestampsToReturn.Neither,
nodesToRead,
out values,
out diagnosticInfos);
ClientBase.ValidateResponse(values, nodesToRead);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, nodesToRead);
// update control.
for (int ii = 0; ii < nodesToRead.Count; ii++)
{
NodeField field = new NodeField();
field.ValueId = nodesToRead[ii];
field.Name = references[ii].ToString();
field.Value = values[ii].Value;
field.StatusCode = values[ii].StatusCode;
if (diagnosticInfos != null && diagnosticInfos.Count > ii)
{
field.DiagnosticInfo = diagnosticInfos[ii];
}
AddItem(field, "Property", -1);
}
}
示例8: DoKeepAliveTest
/// <summary>
/// Tests the session keep alive when there are no errors.
/// </summary>
private bool DoKeepAliveTest()
{
bool success = true;
double increment = MaxProgress/3;
double position = 0;
m_keepAliveCount = 0;
int currentKeepAlive = Session.KeepAliveInterval;
List<Subscription> subscriptions = new List<Subscription>();
KeepAliveEventHandler handler = new KeepAliveEventHandler(Session_KeepAlive);
try
{
Session.KeepAlive += handler;
// add several subscriptions with long publish intervals.
for (int publishingInterval = 10000; publishingInterval <= 20000; publishingInterval += 1000)
{
Subscription subscription = new Subscription();
subscription.MaxMessageCount = 100;
subscription.LifetimeCount = 100;
subscription.KeepAliveCount = 10;
subscription.PublishingEnabled = true;
subscription.PublishingInterval = publishingInterval;
MonitoredItem monitoredItem = new MonitoredItem();
monitoredItem.StartNodeId = VariableIds.Server_ServerStatus_CurrentTime;
monitoredItem.AttributeId = Attributes.Value;
monitoredItem.SamplingInterval = -1;
monitoredItem.QueueSize = 0;
monitoredItem.DiscardOldest = true;
subscription.AddItem(monitoredItem);
Session.AddSubscription(subscription);
subscription.Create();
subscriptions.Add(subscription);
}
// get a value to read.
ReadValueId nodeToRead = new ReadValueId();
nodeToRead.NodeId = VariableIds.Server_ServerStatus;
nodeToRead.AttributeId = Attributes.Value;
ReadValueIdCollection nodesToRead = new ReadValueIdCollection();
nodesToRead.Add(nodeToRead);
int testDuration = 5000;
// make sure the keep alives come at the expected rate.
for (int keepAliveInterval = 500; keepAliveInterval < 2000; keepAliveInterval += 500)
{
m_keepAliveCount = 0;
DateTime start = DateTime.UtcNow;
DataValueCollection results = null;
DiagnosticInfoCollection diagnosticsInfos = null;
Session.Read(
null,
0,
TimestampsToReturn.Neither,
nodesToRead,
out results,
out diagnosticsInfos);
ClientBase.ValidateResponse(results, nodesToRead);
ClientBase.ValidateDiagnosticInfos(diagnosticsInfos, nodesToRead);
ServerStatusDataType status = ExtensionObject.ToEncodeable(results[0].Value as ExtensionObject) as ServerStatusDataType;
if (status == null)
{
Log("Server did not return a valid ServerStatusDataType structure. Value={0}, Status={1}", results[0].WrappedValue, results[0].StatusCode);
return false;
}
if ((DateTime.UtcNow - start).TotalSeconds > 1)
{
Log("Unexpected delay reading the ServerStatus structure. Delay={0}s", (DateTime.UtcNow - start).TotalSeconds);
return false;
}
Log("Setting keep alive interval to {0}ms.", keepAliveInterval);
Session.KeepAliveInterval = keepAliveInterval;
if (m_errorEvent.WaitOne(testDuration, false))
{
Log("Unexpected error waiting for session keep alives. {0}", m_error.ToLongString());
return false;
}
if (m_keepAliveCount < testDuration / keepAliveInterval)
//.........这里部分代码省略.........
示例9: Read
/// <summary>
/// Handles a read operations that fetch data from an external source.
/// </summary>
protected override void Read(
ServerSystemContext context,
IList<ReadValueId> nodesToRead,
IList<DataValue> values,
IList<ServiceResult> errors,
List<NodeHandle> nodesToValidate,
IDictionary<NodeId, NodeState> cache)
{
ReadValueIdCollection requests = new ReadValueIdCollection();
List<int> indexes = new List<int>();
for (int ii = 0; ii < nodesToValidate.Count; ii++)
{
NodeHandle handle = nodesToValidate[ii];
ReadValueId nodeToRead = nodesToRead[ii];
DataValue value = values[ii];
lock (Lock)
{
// validate node.
NodeState source = ValidateNode(context, handle, cache);
if (source == null)
{
continue;
}
// determine if a local node.
if (PredefinedNodes.ContainsKey(source.NodeId))
{
errors[handle.Index] = source.ReadAttribute(
context,
nodeToRead.AttributeId,
nodeToRead.ParsedIndexRange,
nodeToRead.DataEncoding,
value);
continue;
}
ReadValueId request = (ReadValueId)nodeToRead.Clone();
request.NodeId = m_mapper.ToRemoteId(nodeToRead.NodeId);
request.DataEncoding = m_mapper.ToRemoteName(nodeToRead.DataEncoding);
requests.Add(request);
indexes.Add(ii);
}
}
// send request to external system.
try
{
Opc.Ua.Client.Session client = GetClientSession(context);
DataValueCollection results = null;
DiagnosticInfoCollection diagnosticInfos = null;
ResponseHeader responseHeader = client.Read(
null,
0,
TimestampsToReturn.Both,
requests,
out results,
out diagnosticInfos);
// these do sanity checks on the result - make sure response matched the request.
ClientBase.ValidateResponse(results, requests);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, requests);
// set results.
for (int ii = 0; ii < requests.Count; ii++)
{
values[indexes[ii]] = results[ii];
values[indexes[ii]].WrappedValue = m_mapper.ToLocalVariant(results[ii].WrappedValue);
errors[indexes[ii]] = ServiceResult.Good;
if (results[ii].StatusCode != StatusCodes.Good)
{
errors[indexes[ii]] = new ServiceResult(results[ii].StatusCode, ii, diagnosticInfos, responseHeader.StringTable);
}
}
}
catch (Exception e)
{
// handle unexpected communication error.
ServiceResult error = ServiceResult.Create(e, StatusCodes.BadUnexpectedError, "Could not access external system.");
for (int ii = 0; ii < requests.Count; ii++)
{
errors[indexes[ii]] = error;
}
}
}
示例10: UpdateInstanceDescriptions
/// <summary>
/// Finds the targets for the specified reference.
/// </summary>
private static void UpdateInstanceDescriptions(Session session, List<InstanceDeclaration> instances, bool throwOnError)
{
try
{
ReadValueIdCollection nodesToRead = new ReadValueIdCollection();
for (int ii = 0; ii < instances.Count; ii++)
{
ReadValueId nodeToRead = new ReadValueId();
nodeToRead.NodeId = instances[ii].NodeId;
nodeToRead.AttributeId = Attributes.Description;
nodesToRead.Add(nodeToRead);
nodeToRead = new ReadValueId();
nodeToRead.NodeId = instances[ii].NodeId;
nodeToRead.AttributeId = Attributes.DataType;
nodesToRead.Add(nodeToRead);
nodeToRead = new ReadValueId();
nodeToRead.NodeId = instances[ii].NodeId;
nodeToRead.AttributeId = Attributes.ValueRank;
nodesToRead.Add(nodeToRead);
}
// start the browse operation.
DataValueCollection results = null;
DiagnosticInfoCollection diagnosticInfos = null;
session.Read(
null,
0,
TimestampsToReturn.Neither,
nodesToRead,
out results,
out diagnosticInfos);
ClientBase.ValidateResponse(results, nodesToRead);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, nodesToRead);
// update the instances.
for (int ii = 0; ii < nodesToRead.Count; ii += 3)
{
InstanceDeclaration instance = instances[ii / 3];
instance.Description = results[ii].GetValue<LocalizedText>(LocalizedText.Null).Text;
instance.DataType = results[ii + 1].GetValue<NodeId>(NodeId.Null);
instance.ValueRank = results[ii + 2].GetValue<int>(ValueRanks.Any);
if (!NodeId.IsNull(instance.DataType))
{
instance.BuiltInType = DataTypes.GetBuiltInType(instance.DataType, session.TypeTree);
instance.DataTypeDisplayText = session.NodeCache.GetDisplayText(instance.DataType);
if (instance.ValueRank >= 0)
{
instance.DataTypeDisplayText += "[]";
}
}
}
}
catch (Exception exception)
{
if (throwOnError)
{
throw new ServiceResultException(exception, StatusCodes.BadUnexpectedError);
}
}
}
示例11: DoTest
/// <summary>
/// Runs the test in a background thread.
/// </summary>
private void DoTest(ConfiguredEndpoint endpoint)
{
PerformanceTestResult result = new PerformanceTestResult(endpoint, 100);
result.Results.Add(1, -1);
result.Results.Add(10, -1);
result.Results.Add(50, -1);
result.Results.Add(100, -1);
result.Results.Add(250, -1);
result.Results.Add(500, -1);
try
{
// update the endpoint.
if (endpoint.UpdateBeforeConnect)
{
endpoint.UpdateFromServer();
}
SessionClient client = null;
Uri url = new Uri(endpoint.Description.EndpointUrl);
ITransportChannel channel = SessionChannel.Create(
m_configuration,
endpoint.Description,
endpoint.Configuration,
m_clientCertificate,
m_messageContext);
client = new SessionClient(channel);
List<int> requestSizes = new List<int>(result.Results.Keys);
for (int ii = 0; ii < requestSizes.Count; ii++)
{
// update the progress indicator.
TestProgress((ii * 100) / requestSizes.Count);
lock (m_lock)
{
if (!m_running)
{
break;
}
}
int count = requestSizes[ii];
// initialize request.
RequestHeader requestHeader = new RequestHeader();
requestHeader.ReturnDiagnostics = 5000;
ReadValueIdCollection nodesToRead = new ReadValueIdCollection(count);
for (int jj = 0; jj < count; jj++)
{
ReadValueId item = new ReadValueId();
item.NodeId = new NodeId((uint)jj, 1);
item.AttributeId = Attributes.Value;
nodesToRead.Add(item);
}
// ensure valid connection.
DataValueCollection results = null;
DiagnosticInfoCollection diagnosticInfos = null;
client.Read(
requestHeader,
0,
TimestampsToReturn.Both,
nodesToRead,
out results,
out diagnosticInfos);
if (results.Count != count)
{
throw new ServiceResultException(StatusCodes.BadUnknownResponse);
}
// do test.
DateTime start = DateTime.UtcNow;
for (int jj = 0; jj < result.Iterations; jj++)
{
client.Read(
requestHeader,
0,
TimestampsToReturn.Both,
nodesToRead,
out results,
out diagnosticInfos);
if (results.Count != count)
{
//.........这里部分代码省略.........
示例12: ReadMI_Click
private void ReadMI_Click(object sender, EventArgs e)
{
try
{
if (NodesTV.SelectedNode == null)
{
return;
}
ReferenceDescription reference = NodesTV.SelectedNode.Tag as ReferenceDescription;
if (reference == null || (reference.NodeClass & (NodeClass.Variable | NodeClass.VariableType)) == 0)
{
return;
}
Session session = m_browser.Session;
// build list of nodes to read.
ReadValueIdCollection valueIds = new ReadValueIdCollection();
ReadValueId valueId = new ReadValueId();
valueId.NodeId = (NodeId)reference.NodeId;
valueId.AttributeId = Attributes.Value;
valueId.IndexRange = null;
valueId.DataEncoding = null;
valueIds.Add(valueId);
// show form.
new ReadDlg().Show(session, valueIds);
}
catch (Exception exception)
{
GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
}
}
示例13: Read
/// <summary>
/// Reads the values displayed in the control and moves to the display results state.
/// </summary>
public void Read()
{
if (m_session == null)
{
throw new ServiceResultException(StatusCodes.BadNotConnected);
}
// build list of values to read.
ReadValueIdCollection nodesToRead = new ReadValueIdCollection();
foreach (DataGridViewRow row in ResultsDV.Rows)
{
DataRowView source = row.DataBoundItem as DataRowView;
ReadValueId value = (ReadValueId)source.Row[0];
row.Selected = false;
nodesToRead.Add(value);
}
// read the values.
DataValueCollection results = null;
DiagnosticInfoCollection diagnosticInfos = null;
m_session.Read(
null,
0,
TimestampsToReturn.Both,
nodesToRead,
out results,
out diagnosticInfos);
ClientBase.ValidateResponse(results, nodesToRead);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, nodesToRead);
IndexRangeCH.Visible = false;
DataEncodingCH.Visible = false;
DataTypeCH.Visible = true;
ValueCH.Visible = true;
StatusCodeCH.Visible = true;
SourceTimestampCH.Visible = true;
ServerTimestampCH.Visible = true;
m_showResults = true;
// add the results to the display.
for (int ii = 0; ii < results.Count; ii++)
{
DataRowView source = ResultsDV.Rows[ii].DataBoundItem as DataRowView;
UpdateRow(source.Row, results[ii]);
}
}
示例14: UpdateAggregateDescriptions
/// <summary>
/// Updates the aggregate descriptions.
/// </summary>
/// <param name="session">The session.</param>
/// <param name="aggregates">The aggregates.</param>
private void UpdateAggregateDescriptions(Session session, List<HdaAggregate> aggregates)
{
ReadValueIdCollection nodesToRead = new ReadValueIdCollection(); ;
for (int ii = 0; ii < aggregates.Count; ii++)
{
HdaAggregate aggregate = aggregates[ii];
ReadValueId nodeToRead = new ReadValueId();
nodeToRead.NodeId = aggregate.RemoteId;
nodeToRead.AttributeId = Attributes.Description;
nodesToRead.Add(nodeToRead);
}
DataValueCollection values = null;
DiagnosticInfoCollection diagnosticInfos = null;
// read values from the UA server.
ResponseHeader responseHeader = session.Read(
null,
0,
TimestampsToReturn.Neither,
nodesToRead,
out values,
out diagnosticInfos);
// validate response from the UA server.
ClientBase.ValidateResponse(values, nodesToRead);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, nodesToRead);
for (int ii = 0; ii < aggregates.Count; ii++)
{
HdaAggregate aggregate = aggregates[ii];
if (StatusCode.IsBad(values[ii].StatusCode))
{
aggregate.Description = null;
continue;
}
aggregate.Description = values[ii].WrappedValue.ToString();
}
}
示例15: StartKeepAliveTimer
/// <summary>
/// Starts a timer to check that the connection to the server is still available.
/// </summary>
private void StartKeepAliveTimer()
{
int keepAliveInterval = m_keepAliveInterval;
lock (m_eventLock)
{
m_serverState = ServerState.Unknown;
m_lastKeepAliveTime = DateTime.UtcNow;
}
ReadValueIdCollection nodesToRead = new ReadValueIdCollection();
// read the server state.
ReadValueId serverState = new ReadValueId();
serverState.NodeId = Variables.Server_ServerStatus_State;
serverState.AttributeId = Attributes.Value;
serverState.DataEncoding = null;
serverState.IndexRange = null;
nodesToRead.Add(serverState);
// restart the publish timer.
lock (SyncRoot)
{
if (m_keepAliveTimer != null)
{
m_keepAliveTimer.Dispose();
m_keepAliveTimer = null;
}
// start timer.
m_keepAliveTimer = new Timer(OnKeepAlive, nodesToRead, keepAliveInterval, keepAliveInterval);
}
// send initial keep alive.
OnKeepAlive(nodesToRead);
}