void StartExperiment() { GuiController.experimentStatus = "started experiment"; Debug.Log("start"); sessionCounter = 0; //set data directory dataDirectory = GuiController.dirField.text; sessionlist = new List <Dictionary <string, string> >(); //parallel port address try { parallelPortAddr = int.Parse(guiController.parallelPortField.text, System.Globalization.NumberStyles.HexNumber); } catch (System.Exception ex) { parallelPortAddr = -1; Debug.LogException(ex); } //get sessionlist foreach (Transform transform in sessions.transform) { Dictionary <string, string> dict = new Dictionary <string, string>(); SessionPrefabScript session = transform.gameObject.GetComponent <SessionPrefabScript>(); dict.Add("numTrials", session.numTrials); dict.Add("level", session.level); sessionlist.Add(dict); } if (sessionlist.Count > 0) { sessionCounter++; //create new data file for session if (fs != null) { fs.Dispose(); fs = null; } System.DateTime dateNow = System.DateTime.Now; fileTime = dateNow.Day.ToString() + dateNow.Month.ToString() + dateNow.Year.ToString() + dateNow.Hour.ToString() + dateNow.Minute.ToString() + dateNow.Second.ToString(); fs = FileWriter.CreateFileInFolder(dataDirectory, "session_" + sessionCounter.ToString() + '_' + fileTime + ".txt"); if (fs == null) { Debug.LogError("failed to create save files"); EventManager.TriggerEvent("Stop Experiment"); } else { fs.WriteLine("Version: {0}", versionInfo); fs.WriteLine("Trigger: {0}", pportInfo); fs.WriteLine("TaskType: Continuous"); fs.WriteLine("PosterLocations: P1(-5,1.5,-7.55) P2(-7.55,1.5,5) P3(7.55,1.5,-5) P4(5,1.5,7.55) P5(5,1.5,2.45) P6(-5,1.5,-2.45)"); fs.WriteLine("TrialType: {0}", sessionlist[0]["level"]); fs.WriteLine("SpecifiedRewardNo: {0}", InputRewardNo.inputrewardno); fs.WriteLine("CompletionWindow: {0}", GuiController.completionWindowTime); fs.WriteLine("TimeoutDuration: {0}", GuiController.timoutTime); fs.WriteLine("IntersessionInterval: {0}", GuiController.interSessionTime); fs.WriteLine("RewardTime: {0}", GuiController.rewardTime); fs.WriteLine("RotationSpeed: {0}", GuiController.rotationSpeedSlider.value); fs.WriteLine("TranslationSpeed: {0}", GuiController.translationSpeedSlider.value); fs.WriteLine("JoystickDeadzone: {0}", GuiController.joystickDeadzoneSlider.value); fs.WriteLine("RewardViewCriteria: {0}", GuiController.rewardViewCriteriaSlider.value); } //set number of trials numTrials = int.Parse(sessionlist[0]["numTrials"]); //start session after delay StartCoroutine("StartNextSessionAfterDelay"); } else { EventManager.TriggerEvent("Stop Experiment"); } }
void OptionClicked(string settingName) { Settings settings = null; System.Collections.Generic.List <Settings> settingsList = SaveLoad.settingsList; foreach (Settings set in settingsList) { if (set.settingName == settingName) { settings = set; } } if (settings != null) { try{ settingsField.text = settings.settingName; rewardPortField.text = settings.rewardPort; parallelPortField.text = settings.parallelPort; joystickPortField.text = settings.joyStickPort; interTrialFixed.text = settings.interTrialFixed; interTrialMin.text = settings.interTrialMin; interTrialMax.text = settings.interTrialMax; completionWindowFixed.text = settings.completionWindow; rewardFixed.text = settings.rewardTime; timeoutFixed.text = settings.timeOut; interSessionFixed.text = settings.interSessionTime; interTrialRandomize.isOn = settings.randomizeInterTrialTime; useJoystickToggle.isOn = settings.useJoystick; translationSpeedSlider.value = settings.translationSpeed; rotationSpeedSlider.value = settings.rotationSpeed; joystickDeadzoneSlider.value = settings.joystickDeadzone; rewardViewCriteriaSlider.value = settings.rewardViewCriteria; enableReverseToggle.isOn = settings.enableReverse; enableForwardToggle.isOn = settings.enableForward; enableRightToggle.isOn = settings.enableRight; enableLeftToggle.isOn = settings.enableLeft; enablePoster.isOn = settings.enablePoster; //remove all sessions foreach (Transform element in verticalSessionsPanel.transform) { Destroy(element.gameObject); } //add sessions foreach (Dictionary <string, string> sDict in settings.sessionList) { GameObject session = Instantiate(sessionPrefab) as GameObject; SessionPrefabScript sessionScript = session.GetComponent <SessionPrefabScript>(); sessionScript.numTrials = sDict["numTrials"]; sessionScript.index = int.Parse(sDict["indexOfLevel"]); sessionScript.CheckValidTrialNumber(sessionScript.numTrials); session.transform.SetParent(verticalSessionsPanel.transform); session.transform.localPosition = Vector3.zero; session.transform.localRotation = Quaternion.identity; session.transform.localScale = new Vector3(1, 1, 1); } }catch { experimentStatus = "Setting error, please delete it"; } } }