/// <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); }
/// <summary> /// 启动同步数据 /// </summary> public static void Start() { DeviceBaseManager.Start(); if (_thread == null || !_thread.IsAlive) { _thread = new Thread(Synchrodata); IsRunning = true; _thread.Start(); } }
/// <summary> /// 停止同步数据 /// </summary> public static void Stop() { IsRunning = false; DeviceBaseManager.Stop(); if (_thread == null) { return; } //等待线程结束 while (_thread.IsAlive) { Thread.Sleep(10); } }
/// <summary> /// 关闭所有后台线程,程序退出时调用 /// </summary> public static void Close() { Stop(); DeviceBaseManager.Clear(); }