【发布时间】:2021-06-12 17:21:08
【问题描述】:
我正在尝试使用 OPC UA 协议读取 Hololens 2 上节点的值。
我正在使用 .NET 的 OPC UA SDK (Opc.UaFx.Client 2.14.0)。我使用以下代码连接到服务器:
public bool ConnectToOpcUaMachine(string machineIp) {
try {
_client = new OpcClient(machineIp);
_client.OperationTimeout = 2000;
_client.Connect();
} catch( System.Exception ex ) {
Debug.Log("Couldn't connect to OPC server");
Debug.LogException(ex);
return false;
}
return true;
}
当我在编辑器中调用此方法时,我成功连接到服务器并可以读取节点值。但是,当我尝试在 Hololens 2 上执行相同操作时,出现以下错误:
NotSupportedException: System.ServiceModel.Channels.BufferManager::CreateBufferManager
at System.ServiceModel.Channels.BufferManager.CreateBufferManager (System.Int64 maxBufferPoolSize, System.Int32 maxBufferSize) [0x00000] in <00000000000000000000000000000000>:0
at Opc.Ua.Bindings.BufferManager..ctor (System.String name, System.Int32 maxPoolSize, System.Int32 maxBufferSize) [0x00000] in <00000000000000000000000000000000>:0
at Opc.Ua.Bindings.UaSCUaBinaryTransportChannel.SaveSettings (System.Uri url, Opc.Ua.TransportChannelSettings settings) [0x00000] in <00000000000000000000000000000000>:0
at Opc.Ua.Bindings.UaSCUaBinaryTransportChannel.Initialize (System.Uri url, Opc.Ua.TransportChannelSettings settings) [0x00000] in <00000000000000000000000000000000>:0
at Opc.Ua.WcfChannelBase.CreateUaBinaryChannel (Opc.Ua.ApplicationConfiguration configuration, Opc.Ua.EndpointDescription description, Opc.Ua.EndpointConfiguration endpointConfiguration, System.Security.Cryptography.X509Certificates.X509Certificate2 clientCertificate, Opc.Ua.ServiceMessageContext messageContext) [0x00000] in <00000000000000000000000000000000>:0
at Opc.Ua.DiscoveryChannel.Create (System.Uri discoveryUrl, Opc.Ua.EndpointConfiguration endpointConfiguration, Opc.Ua.ServiceMessageContext messageContext) [0x00000] in <00000000000000000000000000000000>:0
at Opc.Ua.DiscoveryClient.Create (System.Uri discoveryUrl, Opc.Ua.EndpointConfiguration configuration) [0x00000] in <00000000000000000000000000000000>:0
at va..ctor (System.Uri a, Opc.UaFx.OpcApplicationConfiguration b) [0x00000] in <00000000000000000000000000000000>:0
at Opc.UaFx.Client.OpcDiscoveryClient..ctor (System.Uri discoveryUrl, Opc.UaFx.OpcApplicationConfiguration configuration) [0x00000] in <00000000000000000000000000000000>:0
at Opc.UaFx.Client.OpcClient.a (System.Uri a, Opc.UaFx.OpcApplicationConfiguration b) [0x00000] in <00000000000000000000000000000000>:0
at Opc.UaFx.Client.OpcClient.a () [0x00000] in <00000000000000000000000000000000>:0
at Opc.UaFx.Client.OpcClient.ConnectCore () [0x00000] in <00000000000000000000000000000000>:0
at Opc.UaFx.Client.OpcClient.Connect () [0x00000] in <00000000000000000000000000000000>:0
at OpcUaClientScript.ConnectToOpcUaMachine (System.String machineIp) [0x00000] in <00000000000000000000000000000000>:0
at OpcUaClientScript.GetDebugVal () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.UnityAction.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.InvokableCall.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.UI.Button.Press () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1].Invoke (T1 handler, UnityEngine.EventSystems.BaseEventData eventData) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ReleaseMouse (UnityEngine.EventSystems.PointerEventData pointerEvent, UnityEngine.GameObject currentOverGo) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress (UnityEngine.EventSystems.PointerInputModule+MouseButtonEventData data) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent (System.Int32 id) [0x00000] in <00000000000000000000000000000000>:0
at Microsoft.MixedReality.Toolkit.Input.MixedRealityInputModule.Process () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.EventSystems.EventSystem.Update () [0x00000] in <00000000000000000000000000000000>:0
【问题讨论】:
标签: c# .net unity3d hololens opc-ua