Esempio n. 1
0
 public OPC(Model.ControllersRow controllerInfo)
 {
     try
     {
         ControllerInfo = controllerInfo;
         String OpcName = "plcdb-" + ControllerInfo.PK;
         Server   = new DAServer(ControllerInfo.opc_server, ControllerInfo.Address);
         TagGroup = Server.AddGroup(Interlocked.Increment(ref GroupClientId), OpcName, true, 100, (float)0.0);
     }
     catch (Exception ex)
     {
         Log.Error("Error creating OPC connection: " + ex.Message);
     }
 }
        public void Connect()
        {
            if (serverThread != null)
            {
                return;
            }

            Owner.Context.IsBusy = true;
            serverThread         = new WorkerThread("Server " + Name);

            DoAsync((task, args) =>
            {
                server = new DAServer(Id);
            },
                    (task, args) =>
            {
                Owner.Context.IsBusy = false;

                if (args.Error != null)
                {
                    Owner.Context.Log.TraceData(TraceEventType.Error, 0, args.Error);

                    Disconnect();
                }
                else
                {
                    Icon = "/Images/ServerOn.png";
                }

                CommandList.ForEach(command => command.RiseCanExecuteChanged());
            });

            /*
             *      serverThread.Post(new WorkerThread.Task
             *      {
             *  Do = (task, args) =>
             *  {
             *      var ip = server.GetItemProperties();
             *
             *      var a = server.GetAddressSpaceBrowser();
             *      var @enum = a.GetItemIds(BrowseType.Flat, string.Empty, 0, 0).ToList();
             *      var iid = a.GetItemId(@enum[5]);
             *
             *      var ipi = ip.QueryAvailableProperties(@enum[5]);
             *      var ipv = ip.GetItemProperties(@enum[5], new[] { ipi[0].Id, ipi[2].Id });
             *
             *      var g = server.AddGroup(1, "test", true, 1000, 0);
             *      var res = g.AddItems(new[]
             *      {
             *          new Item
             *          {
             *              Active = true,
             *              ClientId = 1,
             *              ItemId = iid,
             *              RequestedDataType = (VarEnum)Convert.ToInt32(ipv[0].Value)
             *          },
             *          new Item
             *          {
             *              Active = true,
             *              ClientId = 1,
             *              ItemId = iid,
             *              RequestedDataType = (VarEnum)Convert.ToInt32(ipv[0].Value)
             *          }
             *      });
             *
             *      var val = g.SyncReadItems(DataSource.Device, new[] { res[0].ServerId, res[1].ServerId });
             *      g.Dispose();
             *  },
             *      });
             * */
        }