Example #1
0
        /// <summary>
        ///
        /// </summary>
        public override void Init()
        {
            base.Init();

            var manager = ServiceLocator.Locator.Resolve <IDeviceRuntimeManager>();

            foreach (var vv in manager.ListDevice())
            {
                foreach (var vvv in vv.ListTags().Where(e => e.DataTranseDirection != DataTransType.DeviceToDatabase))
                {
                    if (!mCallBackTags.ContainsKey(vvv.DatabaseName))
                    {
                        mCallBackTags.Add(vvv.DatabaseName, 0);
                    }
                }

                foreach (var vvv in vv.ListDatabaseNames())
                {
                    if (mAllDatabaseTagNames.ContainsKey(vvv))
                    {
                        mAllDatabaseTagNames[vvv].Add(vv.Name);
                    }
                    else
                    {
                        mAllDatabaseTagNames.Add(vvv, new List <string>()
                        {
                            vv.Name
                        });
                    }
                }

                vv.RegistorCallBack((device, tag) => {
                    lock (mChangedTags)
                        mChangedTags.Enqueue(tag);
                });
            }


            mProxy = new SpiderDriver.ClientApi.DriverProxy();
            //接受到数据库消费端修改数据
            mProxy.ValueChanged = new SpiderDriver.ClientApi.DriverProxy.ProcessDataPushDelegate((values) => {
                foreach (var vv in values)
                {
                    if (mIdNameMape.ContainsKey(vv.Key))
                    {
                        string stag = mIdNameMape[vv.Key];
                        foreach (var vvd in mAllDatabaseTagNames[stag])
                        {
                            manager.GetDevice(vvd).WriteValueByDatabaseName(stag, vv.Value);
                        }
                    }
                }
            });
        }
Example #2
0
 private void HisStart_Click(object sender, RoutedEventArgs e)
 {
     this.HisStart.IsEnabled = false;
     if (driverProxy == null)
     {
         driverProxy = new SpiderDriver.ClientApi.DriverProxy();
         driverProxy.Open(this.ipt.Text, int.Parse(portt.Text));
         driverProxy.ValueChanged = new SpiderDriver.ClientApi.DriverProxy.ProcessDataPushDelegate((values) =>
         {
             foreach (var vv in values)
             {
                 Debug.Print("收到数据下发指令:" + vv.Key + "," + vv.Value.ToString());
             }
         });
     }
     mHisScanThread = new Thread(HisValueThreadPro);
     mHisScanThread.IsBackground = true;
     mHisScanThread.Start();
 }