Esempio n. 1
0
        /// <summary>
        /// 添加变量映射关系
        /// </summary>
        /// <param name="variable">变量</param>
        /// <param name="deviceBase">映射方式</param>
        public static void AddMap(VariableBase variable, DeviceBase deviceBase)
        {
            if (variable == null)
            {
                return;
            }

            //如果变量为只写变量,不允许同步设备值
            if (variable.OperateProperty == VarOperateProperty.WriteOnly)
            {
                return;
            }

            if (deviceBase == null)
            {
                return;
            }
            var element = new DeviceMapMode()
            {
                DeviceModeId = 0,
                Name         = deviceBase.Name,
                CycleTime    = deviceBase.CycleTime,
                MaxValue     = deviceBase.MinValue,
                MinValue     = deviceBase.MaxValue,
                Variable     = variable
            };

            //DeviceMapContext.DeviceMapModeSet.Add(element);
            if (DeviceDictionary.ContainsKey(variable))
            {
                return;
            }
            DeviceDictionary.Add(variable, deviceBase);
            DeviceBaseManager.AddDevice(deviceBase);
        }
Esempio n. 2
0
 /// <summary>
 /// 启动同步数据
 /// </summary>
 public static void Start()
 {
     DeviceBaseManager.Start();
     if (_thread == null || !_thread.IsAlive)
     {
         _thread   = new Thread(Synchrodata);
         IsRunning = true;
         _thread.Start();
     }
 }
Esempio n. 3
0
 /// <summary>
 /// 停止同步数据
 /// </summary>
 public static void Stop()
 {
     IsRunning = false;
     DeviceBaseManager.Stop();
     if (_thread == null)
     {
         return;
     }
     //等待线程结束
     while (_thread.IsAlive)
     {
         Thread.Sleep(10);
     }
 }
Esempio n. 4
0
 /// <summary>
 /// 关闭所有后台线程,程序退出时调用
 /// </summary>
 public static void Close()
 {
     Stop();
     DeviceBaseManager.Clear();
 }