public void transitionAction(ref System.Windows.Forms.Panel panel,
                                     System.Windows.Forms.TextBox[] texts, ref int pass)
        {
            switch (state)
            {
            case stIdle:     // nothing
                break;

            case stSensorDataTransmission:
                if (Robosapien.flagSensorDataAcquired)
                {
                    Robosapien.fillSensorTexts(texts);

                    state = stFrameTransmission;
                    Robosapien.retrieveAbstraction();
                }
                break;

            case stFrameTransmission:
                if (Robosapien.flagAbstractionReady)
                {
                    Robosapien.drawAbstraction(panel);
                    state = stAbilityExecuting;
                    // running the cognitive array now
                    double[][] inputVecs = Robosapien.makeInputVector();
                    pass++;
                    int output = (int)MetaNode.getOutput(Robosapien.CogTop, inputVecs, pass);

                    Robosapien.useAbility((t_RSV2Ability)output);
                }
                break;

            case stAbilityExecuting:
                if (Robosapien.flagAbilityDone)
                {
                    Robosapien.flagAbilityDone = false;
                    state = stIdle;
                }
                break;
            }
        }
Пример #2
0
        public void transitionAction(System.Windows.Forms.Panel panel, System.Windows.Forms.TextBox[] texts)
        {
            switch (state)
            {
            case stIdle:     // nothing
                break;

            case stAbilityExecuting:
                if (Robosapien.flagAbilityDone)
                {
                    Robosapien.flagAbilityDone = false;
                    // ability dopne. Now firing the transducers
                    state = stSensorDataTransmission;
                    Robosapien.requestSensorData();
                }
                break;

            case stSensorDataTransmission:
                if (Robosapien.flagSensorDataAcquired)
                {
                    Robosapien.fillSensorTexts(texts);
                    // flag has been cleared inside fillSensorTexts
                    // now retrieving a camera frame abstraction
                    state = stFrameTransmission;
                    Robosapien.retrieveAbstraction();
                }
                break;

            case stFrameTransmission:
                if (Robosapien.flagAbstractionReady)
                {
                    Robosapien.drawAbstraction(panel);     // no need to reset the flag.
                    // It's being reset inside drawAbstraction()
                    state = stIdle;
                }
                break;
            }
        }