领胜LDS 键盘AOI检测项目
wells.liu
2020-07-03 e1ac4d0e483426d5a410b6b4ae04e819f59b621e
src/Bro.Device.GTSCard/GTSCardDriver.cs
@@ -18,12 +18,12 @@
namespace Bro.Device.GTSCard
{
    [Device("GTSCard", "固高板卡", EnumHelper.DeviceAttributeType.Device)]
    public class GTSCardDriver : DeviceBase, IMonitor, IMotion
    public class GTSCardDriver : MotionCardBase
    {
        // 异常事件
        public Action<Exception> OnExceptionRaised;
        public GTSCardInitialConfig IConfig
        public GTSCardInitialConfig IIConfig
        {
            get
            {
@@ -42,7 +42,7 @@
            _isResetting = isReset;
        }
        public List<AxisInfo> GetCurrentAxisInfo(params string[] axisName)
        public override List<AxisInfo> GetCurrentAxisInfo(params string[] axisName)
        {
            throw new NotImplementedException();
        }
@@ -74,6 +74,14 @@
            AllMoveStop();
            AllAxisOff();
        }
        public override ResponseMessage Run(IOperationConfig config)
        {
            ResponseMessage responseMessage = new ResponseMessage();
            return responseMessage;
        }
        #endregion
        #region GTSCard
@@ -93,6 +101,7 @@
                throw new Exception("板卡载入配置文件异常,错误码:" + res);
            }
        }
        public bool AllAxisOn()
        {
@@ -153,7 +162,7 @@
        /// </summary>
        /// <param name="item">运动对象</param>
        /// <returns>运动控制+停止判断</returns>
        public bool MoveToPoint(IOperationConfig opConfig)
        public override ResponseMessage MoveToPoint(IOperationConfig opConfig)
        {
            bool resultOK = false;
            var gtsOperationConfig = opConfig as GTSCardOperationConfig;
@@ -172,7 +181,8 @@
            Task.WaitAll(taskList.ToArray());
            resultOK = taskList.All(u => u.GetAwaiter().GetResult());
            return resultOK;
            //return resultOK;
            throw new NotImplementedException();
        }
        /// <summary>
@@ -679,8 +689,6 @@
        #endregion
        #region IMonitor
        public event Action<DateTime, string, IDevice, IMonitorSet> OnMonitorInvoke;
        public event Action<DateTime, IDevice, IWarningSet> OnMonitorAlarm;
        public List<IOItem> MonitorValues { get; set; } = new List<IOItem>();
@@ -702,13 +710,13 @@
                {
                    IONum = index,
                    Value = (inValue & (1 << index)) == 0 ? 1 : 0,
                    Model = IOModel.In
                    IOType = IOType.In
                };
                IOItem outItem = new IOItem()
                {
                    IONum = index,
                    Value = (outValue & (1 << index)) == 0 ? 1 : 0,
                    Model = IOModel.Out
                    IOType = IOType.Out
                };
                result.Add(inItem);
                result.Add(outItem);
@@ -717,7 +725,7 @@
            return result;
        }
        public async void Monitor()
        public async override void Monitor()
        {
            await Task.Run(() =>
            {
@@ -735,8 +743,8 @@
                        sw.Start();
                        if (MonitorValues.Count == newValues.Count)
                        {
                            var tempNew = new List<IOItem>(newValues);//clone
                            var tempOld = new List<IOItem>(MonitorValues);
                            var tempNew = newValues.DeepSerializeClone();//clone
                            var tempOld = MonitorValues.DeepSerializeClone();
                            MonitorCheckAndInvoke(tempNew, tempOld);
                        }
                        MonitorValues = new List<IOItem>(newValues);
@@ -779,7 +787,7 @@
            foreach (var replyIOData in monitorSet.ReplyIODatas)
            {
                //写入IO输出
                if (replyIOData.Model == IOModel.Out)
                if (replyIOData.IOType == IOType.Out)
                {
                    GTSCardAPI.GT_SetDoBit((short)IConfig.CardNum, GTSCardAPI.MC_GPI, (short)replyIOData.IONum, (short)replyIOData.Value);
                }
@@ -796,7 +804,7 @@
            {
                MotionCardWarningSet warningSet = wSet as MotionCardWarningSet;
                bool isOn = ((tempNew.FirstOrDefault(u => u.IONum == warningSet.TriggerIndex && u.Model == warningSet.WarningIOModel)?.Value >> warningSet.TriggerIndex) & 1) == (warningSet.TriggerValue ? 1 : 0);
                bool isOn = ((tempNew.FirstOrDefault(u => u.IONum == warningSet.TriggerIndex && u.IOType == warningSet.WarningIOModel)?.Value >> warningSet.TriggerIndex) & 1) == (warningSet.TriggerValue ? 1 : 0);
                if (warningSet.CurrentStatus != isOn)
                {
@@ -804,7 +812,7 @@
                    warningSet.TriggerTime = DateTime.Now;
                    warningSet.WarningDescription = $"警报:{warningSet.Name}-触发索引:{warningSet.TriggerIndex}-{warningSet.WarningIOModel.GetEnumDescription()}:{warningSet.WarningCode}";
                    SaveAlarmCSVAsync(DateTime.Now, this.Name, warningSet);
                    OnMonitorAlarm?.BeginInvoke(DateTime.Now, this, warningSet, null, null);
                    ExcuteMonitorAlarm(DateTime.Now, this, warningSet);
                }
            });
            #endregion
@@ -835,14 +843,14 @@
                        //    return tempNew[index].Value;
                        //}).ToList();
                        OnMonitorInvoke?.BeginInvoke(DateTime.Now, monitorSet.InvokeDevice, this, monitorSet, OnMethodInvoked, monitorSet);
                        ExcuteMonitorInvok(DateTime.Now, monitorSet.InvokeDevice, this, monitorSet, OnMethodInvoked);
                    }
                }
            });
            #endregion
        }
        public void ResetAlarm()
        public override void ResetAlarm()
        {
            int axis_sts;
            uint clk;