コード例 #1
0
        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();
        }
        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);
        }
コード例 #3
0
        private void button1_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog FolderSelector = new FolderBrowserDialog();

            if (FolderSelector.ShowDialog() == DialogResult.OK)
            {
                string[] FilePaths = Directory.GetFiles(FolderSelector.SelectedPath, "*.csv");
                foreach (string Path in FilePaths)
                {
                    PositionAndTimingDataModel FullData = new PositionAndTimingDataModel();
                    List <MomentaryPositionAndTimingFrameDataModel> FrameData = new List <MomentaryPositionAndTimingFrameDataModel>();
                    using (StreamReader SR = new StreamReader(Path))
                    {
                        string   SCVFram          = null;
                        string[] SCVLastFrameData = null;
                        string[] SCVFrameData     = null;
                        SR.ReadLine();
                        while (!SR.EndOfStream)
                        {
                            if (SCVFram != null)
                            {
                                SCVLastFrameData = SCVFrameData;
                            }
                            else
                            {
                                SCVLastFrameData = new string[] { "0", "0", }
                            };

                            SCVFram      = SR.ReadLine();
                            SCVFrameData = SCVFram.Split(',');

                            FrameData.Add(new MomentaryPositionAndTimingFrameDataModel()
                            {
                                time          = Convert.ToUInt64(float.Parse(SCVFrameData[1]) * 1000.0f) - Convert.ToUInt64(float.Parse(SCVLastFrameData[1]) * 1000.0f),
                                C1            = byte.Parse(SCVFrameData[2]),
                                C2            = byte.Parse(SCVFrameData[3]),
                                C3            = byte.Parse(SCVFrameData[4]),
                                C4            = byte.Parse(SCVFrameData[5]),
                                C5            = byte.Parse(SCVFrameData[6]),
                                C6            = byte.Parse(SCVFrameData[7]),
                                Snowflakes    = SCVFrameData[8] == "1",
                                SweepingLegs1 = SCVFrameData[9] == "1",
                                Wind          = SCVFrameData[10] == "1",
                                Rain          = SCVFrameData[11] == "1",
                                Smoke         = SCVFrameData[12] == "1",
                                Bubbles       = SCVFrameData[13] == "1",
                                Lightning     = SCVFrameData[14] == "1",
                                Flame         = SCVFrameData[15] == "1",
                                Jet           = SCVFrameData[16] == "1",
                                SweepingLegs2 = SCVFrameData[17] == "1",
                                WaterSpray    = SCVFrameData[18] == "1",
                                Vibration     = SCVFrameData[19] == "1",
                                Back          = SCVFrameData[20] == "1",
                                Spare1        = SCVFrameData[21] == "1",
                                Spare2        = SCVFrameData[22] == "1",
                                Spare3        = SCVFrameData[23] == "1",
                            });
                        }
                    }
                    FullData.PostionsAndTimings = FrameData.ToArray();
                    FullData.SaveDataToFile(Path.Replace(".csv", ".JMMov"));
                }
            }
        }
    }