//Public method that allows to add an analog recording public void AddAnalog(string name, float timeAnalog, string path) { if (File.Exists(path)) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(path, FileMode.Open); VRPNAnalog.AnalogReports data = (VRPNAnalog.AnalogReports)bf.Deserialize(file); file.Close(); VRPNAnalogRecording recording = new VRPNAnalogRecording(name, timeAnalog, data); VRPNAnalogRecordings test; if (VRPNAnalogDevice.TryGetValue(data.deviceType + " " + data.deviceName, out test)) { test.recordings.Add(recording); } else { test = new VRPNAnalogRecordings(); test.recordings.Add(recording); VRPNAnalogDevice.Add(data.deviceType + " " + data.deviceName, test); } } }
//Public method that allows to stop recording //It saves the reports list in the indicated path public void StopRecording() { VRPNEventManager.StopListeningAnalog(AnalogType, AnalogName, Record); BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Create(path); bf.Serialize(file, data); file.Close(); data = new VRPNAnalog.AnalogReports(); firstReport = true; isRecording = false; }
//Public method that allows to start playing //It reads the data from the indicated path public void StartPlaying() { if (File.Exists(path)) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(path, FileMode.Open); data = (VRPNAnalog.AnalogReports)bf.Deserialize(file); file.Close(); isPlaying = true; e = data.list.GetEnumerator(); } }
//VRPNAnalogRecording Constructor public VRPNAnalogRecording(string nName, float nTime, VRPNAnalog.AnalogReports nData) { name = nName; reportTime = nTime; data = nData; e = data.list.GetEnumerator(); while (e.MoveNext()) { VRPNAnalog.AnalogReportNew report = e.Current; channels = report.num_channel; lastTime = report.msg_time.tv_sec + (report.msg_time.tv_usec / 1000000f); } e = data.list.GetEnumerator(); }