public static void JMDM_BasicRide_Run(out JMDM_CylinderPortControlUpdated CylinderControl, string Port, byte CylinderCount, string JMMovFilePath, int StartWait = 2000, int EndWait = 2000, Action ExtraAction = null)
        {
            PositionAndTimingDataModel PositionAndTiming = PositionAndTimingDataModel.DataLoadFromFile(JMMovFilePath);

            CylinderControl = new JMDM_CylinderPortControlUpdated(Port, CylinderCount);

            if (CylinderCount > 6)
            {
                CylinderCount = 6;
            }

            CylinderControl.Open_Port();

            CylinderControl.ZeroAllCylinders();

            Thread.Sleep(StartWait);

            ExtraAction?.Invoke();

            foreach (MomentaryPositionAndTimingFrameDataModel Frame in PositionAndTiming)
            {
                for (byte i = 0; i < CylinderCount; i++)
                {
                    CylinderControl.SetCylinderHeight(i, Frame.GetCylinder(i));
                }
                Thread.Sleep((int)Frame.time);
            }

            CylinderControl.ZeroAllCylinders();

            Thread.Sleep(EndWait);
        }
        internal BaseMotionPlayer(TaPa_XYCyl Owner, string MotionDataPath, string GamePath, string StartOptionsRunArgs, string RuntimeProcess, string StartOptionsInput, AvalibleProtocols MotionDeviceProtocol, string ConnectonString)
        {
            this.Owner = Owner;
            FrameData  = PositionAndTimingDataModel.DataLoadFromFile(MotionDataPath);
            this.MotionDeviceProtocol = MotionDeviceProtocol;
            switch (MotionDeviceProtocol)
            {
            case AvalibleProtocols.ComPort:
                if (MotionHardwareInterface != null)
                {
                    MotionHardwareInterface.Dispose();
                }
                MotionHardwareInterface = JMDM_CylinderPortControlUpdated.ConnectionFactory(ConnectonString);
                break;

            default:
                Owner.PlayBacksEnd.Invoke();
                throw new Exception("Error: not a valid Protocol.");
            }
            this.GamePath            = GamePath;
            this.StartOptionsRunArgs = StartOptionsRunArgs;
            this.StartOptionsInput   = StartOptionsInput;
            this.RuntimeProcess      = RuntimeProcess;
            Start();
        }
Beispiel #3
0
        static bool ConsoleEventHandler(ConsoleCtrlHandlerCode eventCode)
        {
            // Handle close event here...
            switch (eventCode)
            {
            case ConsoleCtrlHandlerCode.CTRL_CLOSE_EVENT:
                try
                {
                    ComPort.ZeroAllCylinders();
                }
                catch
                {
                    using (ComPort = new JMDM_CylinderPortControlUpdated(PortStatic, 6))
                    {
                        ComPort.Open_Port();
                        ComPort.ZeroAllCylinders();
                    }
                }
                Environment.Exit(0);
                break;

            case ConsoleCtrlHandlerCode.CTRL_BREAK_EVENT:
                break;

            case ConsoleCtrlHandlerCode.CTRL_LOGOFF_EVENT:
                try
                {
                    ComPort.ZeroAllCylinders();
                }
                catch
                {
                    using (ComPort = new JMDM_CylinderPortControlUpdated(PortStatic, 6))
                    {
                        ComPort.Open_Port();
                        ComPort.ZeroAllCylinders();
                    }
                }
                Environment.Exit(0);
                break;

            case ConsoleCtrlHandlerCode.CTRL_SHUTDOWN_EVENT:
                try
                {
                    ComPort.ZeroAllCylinders();
                }
                catch
                {
                    using (ComPort = new JMDM_CylinderPortControlUpdated(PortStatic, 6))
                    {
                        ComPort.Open_Port();
                        ComPort.ZeroAllCylinders();
                    }
                }
                Environment.Exit(0);
                break;
            }

            return(false);
        }
        internal virtual void ChangeProtocol(AvalibleProtocols MotionDeviceProtocol, string ConnectonString)
        {
            lock (LockObj)
            {
                this.MotionDeviceProtocol = MotionDeviceProtocol;
                switch (MotionDeviceProtocol)
                {
                case AvalibleProtocols.ComPort:
                    if (MotionHardwareInterface != null)
                    {
                        MotionHardwareInterface.Dispose();
                    }
                    MotionHardwareInterface = JMDM_CylinderPortControlUpdated.ConnectionFactory(ConnectonString);
                    break;

                default:
                    throw new Exception("Error: not a valid Protocol.");
                }
            }
        }