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); }
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")); } } } }