XRayMachine.Ledprocess.cs 3.2 KB
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace DeviceLibrary
{
    partial class XRayMachine
    {
        Led AlarmLed;
        Led StandbyLed;
        Led RunningLed;
        Led TrayOKLed;
        Led TrayNGLed;
        System.Threading.Timer ledtimer;
        void LedProcessInit()
        {
            AlarmLed = new Led(Config.DOList[IO_XRay_Type.Alarm_Led].GetIOAddr(), DeviceName);
            StandbyLed = new Led(Config.DOList[IO_XRay_Type.Run_Led].GetIOAddr(), DeviceName);
            RunningLed = new Led(Config.DOList[IO_XRay_Type.Standby_Led].GetIOAddr(), DeviceName);
            TrayOKLed = new Led(Config.DOList[IO_XRay_Type.Pass_Led].GetIOAddr(), DeviceName);
            TrayNGLed = new Led(Config.DOList[IO_XRay_Type.NG_Led].GetIOAddr(), DeviceName);
            ledtimer = new System.Threading.Timer(new TimerCallback(LedProcess), null, 0, 1000);
            GC.KeepAlive(ledtimer);
        }

        void LedProcess(object o)
        {
            AlarmLed.LedState = LedState.off;
            StandbyLed.LedState = LedState.off;
            RunningLed.LedState = LedState.off;

            if (runStatus == RunStatus.Running)
            {
                RunningLed.LedState = LedState.on;
                //无法运行,量报警灯
                if (!canRunning)
                {
                    AlarmLed.LedState = LedState.on;
                    RunningLed.LedState = LedState.off;
                }
                

                //等待人工处理步骤
                if (FeedingMoveinfo.IsStep(MoveStep.Feeding_05_Wait_Man_Check))
                {
                    if (FeedingMoveinfo.ReelParam.IsNg)
                    {
                        TrayNGLed.LedState = LedState.blink;
                    }
                    else
                    {
                        TrayOKLed.LedState = LedState.blink;
                    }
                }
                else
                {
                    TrayNGLed.LedState = LedState.off;
                    TrayOKLed.LedState = LedState.off;
                }
            }
            else if (runStatus == RunStatus.HomeReset)
            {
                RunningLed.LedState = LedState.blink;
            }
            if (UserPause) {
                AlarmLed.LedState = LedState.off;
                RunningLed.LedState = LedState.off;
                StandbyLed.LedState = LedState.blink;
                AlarmBuzzer.OFF();
            }
            else
            {
                if (alarmType != AlarmType.None)
                {
                    AlarmLed.LedState = LedState.on;
                }

                if (alarmType != AlarmType.None)
                {
                    AlarmBuzzer.ON();
                }
                else if (MoveInfo.MoveStep == MoveStep.XRay_06_WaitMatchPN)
                {
                    AlarmLed.LedState = LedState.blink;
                    AlarmBuzzer.ON();
                }
                else
                {
                    AlarmBuzzer.OFF();
                }
            }
            Led.LedGroup[DeviceName].ForEach((x) => { x.run(); });
        }
    }
    
}