using Aitex.Core.RT.Device; using Aitex.Core.Util; using MECF.Framework.Common.ToolLayout; using SecsGem.Core.ItemModel; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CyberX8_RT.Devices.LinMot { public class LinmotDeviceTimer : BaseDevice, IDevice { #region 常量 private const string LINMOT = "Linmot"; #endregion #region 内部变量 private PeriodicJob _periodicJob; private List _linMotAxisList=new List(); #endregion public LinmotDeviceTimer() : base(LINMOT, LINMOT, LINMOT, LINMOT) { _periodicJob = new PeriodicJob(20, OnTimer, $"{LINMOT}.OnTimer", false); } /// /// 初始化 /// /// public bool Initialize() { foreach (string item in LinmotItemManager.Instance.InstalledModules) { LinmotItem linmotItem = LinmotItemManager.Instance.GetLinmotItem(item); for (int i = 0; i < linmotItem.Count; i++) { LinMotAxis linMotAxis = DEVICE.GetDevice($"{item}-{i + 1}"); _linMotAxisList.Add(linMotAxis); } } _periodicJob.Start(); return true; } public void Monitor() { } public void Reset() { } /// /// 中止 /// public void Terminate() { _periodicJob.Stop(); } /// /// 定时器执行 /// /// private bool OnTimer() { foreach (LinMotAxis item in _linMotAxisList) { item.OnTimer(); } return true; } } }