/// <summary> /// Called to connect to a target. /// </summary> public void OnConnectTarget(OpcServer server) { if (m_target != null) { m_target.Disconnect(); m_target.Dispose(); m_target = null; } // use the specified server object directly. m_target = (TsCDaServer)server; Cursor = Cursors.WaitCursor; try { OpcUserIdentity credentials = null; do { try { m_target.Connect(new OpcConnectData(credentials, m_proxy)); break; } catch (Exception e) { MessageBox.Show(e.Message); } credentials = new NetworkCredentialsDlg().ShowDialog(credentials); }while (credentials != null); // select all filters by default. m_target.SetResultFilters((int)TsCDaResultFilter.All); // initialize controls. SelectTargetCTRL.OnConnect(m_target); } catch (Exception e) { MessageBox.Show(e.Message); m_target = null; } Cursor = Cursors.Default; }
/// <summary> /// Called to disconnect from a server. /// </summary> public void OnDisconnect() { // disconnect server. if (server_ != null) { try { server_.Disconnect(); } catch {} server_.Dispose(); TsCCpxComplexTypeCache.Server = server_ = null; } // initialize controls. subscriptionCtrl_.Initialize(server_); updatesCtrl_.Initialize(server_); statusCtrl_.Start(server_); outputCtrl_.Text = ""; }
/// <summary> /// Called to disconnect from a server. /// </summary> public void OnDisconnect() { // disconnect server. if (m_server != null) { try { m_server.Disconnect(); } catch {} m_server.Dispose(); TsCCpxComplexTypeCache.Server = m_server = null; } // initialize controls. SubscriptionCTRL.Initialize(m_server); UpdatesCTRL.Initialize(m_server); StatusCTRL.Start(m_server); OutputCTRL.Text = ""; }
public void Run() { try { const string serverUrl = "opcda://localhost/Technosoftware.DaSample"; Console.WriteLine(); Console.WriteLine("Simple OPC DA Client based on the OPC DA/AE/HDA Client SDK .NET Standard"); Console.WriteLine("------------------------------------------------------------------------"); Console.Write(" Press <Enter> to connect to "); Console.WriteLine(serverUrl); Console.ReadLine(); Console.WriteLine(" Please wait..."); TsCDaServer myDaServer = new TsCDaServer(); // Connect to the server myDaServer.Connect(serverUrl); // Get the status from the server OpcServerStatus status = myDaServer.GetServerStatus(); Console.WriteLine($" Status of Server is {status.ServerState}"); Console.WriteLine(" Connected, press <Enter> to create an active group object and add several items."); Console.ReadLine(); // Add a group with default values Active = true and UpdateRate = 500ms TsCDaSubscriptionState groupState = new TsCDaSubscriptionState { Name = "MyGroup" /* Group Name*/ }; var group = (TsCDaSubscription)myDaServer.CreateSubscription(groupState); // Add Items TsCDaItem[] items = new TsCDaItem[4]; items[0] = new TsCDaItem { ItemName = "SimulatedData.Ramp", ClientHandle = 100, MaxAgeSpecified = true, MaxAge = 0, Active = true, ActiveSpecified = true }; // Item Name // Client Handle // Read from Cache items[1] = new TsCDaItem { ItemName = "CTT.SimpleTypes.InOut.Integer", ClientHandle = 150, Active = true, ActiveSpecified = true }; // Item Name // Client Handle items[2] = new TsCDaItem { ItemName = "CTT.SimpleTypes.InOut.Short", ClientHandle = 200, Active = false, ActiveSpecified = true }; // Item Name // Client Handle items[3] = new TsCDaItem { ItemName = "CTT.Arrays.InOut.Word[]", ClientHandle = 250, Active = false, ActiveSpecified = true }; // Item Name // Client Handle // Synchronous Read with server read function (DA 3.0) without a group TsCDaItemValueResult[] itemValues = myDaServer.Read(items); for (int i = 0; i < itemValues.GetLength(0); i++) { if (itemValues[i].Result.IsError()) { Console.WriteLine($" Item {itemValues[i].ItemName} could not be read"); } } var itemResults = group.AddItems(items); for (int i = 0; i < itemResults.GetLength(0); i++) { if (itemResults[i].Result.IsError()) { Console.WriteLine($" Item {itemResults[i].ItemName} could not be added to the group"); } } Console.WriteLine(""); Console.WriteLine(" Group and items added, press <Enter> to create a data change subscription"); Console.WriteLine(" and press <Enter> again to deactivate the data change subscription."); Console.WriteLine(" This stops the reception of data change notifications."); Console.ReadLine(); group.DataChangedEvent += OnDataChangeEvent; Console.ReadLine(); // Set group inactive groupState.Active = false; group.ModifyState((int)TsCDaStateMask.Active, groupState); Console.WriteLine(" Data change subscription deactivated, press <Enter> to remove all"); Console.WriteLine(" and disconnect from the server."); group.Dispose(); myDaServer.Disconnect(); myDaServer.Dispose(); Console.ReadLine(); Console.WriteLine(" Disconnected from the server."); Console.WriteLine(); } catch (OpcResultException e) { Console.WriteLine(" " + e.Message); Console.ReadLine(); } catch (Exception e) { Console.WriteLine(" " + e.Message); Console.ReadLine(); } }