示例#1
0
    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");
        }
    }
示例#2
0
    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";
            }
        }
    }