public void ReadSignalValues(IEnumerable <NodeSignal> signals) { if (Properties.Settings.Default.RunAsService) { var outPayload = new StringBuilder(); foreach (var signal in signals) { outPayload.Append(signal.SignalId.ToString()); } var response = sendReceiveTelegram <NodeTelegram>(m_TelegramReadSignals.SetPayload(FieldBase64.Encode(outPayload.ToString()))); if (response != null) { foreach (var tpl in EncodedSignalValue.ParseEncodedSignals(response.Payload.Decode(), signals)) { var signal = tpl.Item1; var value = tpl.Item2; m_runtimeService.Value.NotifyValueChanged(signal, value); } } } else { // uploading is instant var nRuntimeApplication = RuntimeApplicationUpload(); if (nRuntimeApplication != null) { foreach (var sig in signals) { var foundSig = nRuntimeApplication.FindSignal(sig.SignalId); if (foundSig != null) { m_runtimeService.Value.NotifyValueChanged(foundSig, foundSig.Value); } } } } }
private NodeTelegram readSignals(NodeTelegram request) { // incoming request should just be a bunch of Guids that represent signalIds var inPayload = request.Payload.Decode(); var outPayload = new StringBuilder(); if (runtimeApplication != null) { for (int index = 0; index < inPayload.Length; index += m_guidLength) { string oneGuidString = inPayload.Substring(index, m_guidLength); if (FieldGuid.CheckSyntax(oneGuidString)) { var signalId = new FieldGuid(oneGuidString); var signal = runtimeApplication.FindSignal(signalId); if (signal != null) { outPayload.Append(EncodedSignalValue.EncodeSignalValue(signal)); } } } } return(request.SetPayload(FieldBase64.Encode(outPayload.ToString()))); }