Ejemplo n.º 1
0
        public void Disconnect()
        {
            if (null == m_encoder)
                return;

            for (Dictionary<string, SensorLib.ThoughtTechnologies.ITtlSensor>.Enumerator itr = m_sensors.GetEnumerator(); itr.MoveNext(); )
                itr.Current.Value.Stop();

            m_encoder.Dispose();
            m_sensors.Clear();
            m_encoder = null;
            m_connected = false;
            InformListeners(Message.Disconnected, null);
        }
Ejemplo n.º 2
0
        public bool Connect()
        {
            InformListeners(Message.Connecting, null);

            SensorLib.ThoughtTechnologies.ITtlEncoderInfo[] encoderInfos = SensorLib.ThoughtTechnologies.TtlEncoder.GetEncoders();

            if (encoderInfos.Count() < 1)
            {
                m_connected = false;
                InformListeners(Message.Disconnected, null);
                return false;
            }

            m_encoder = SensorLib.ThoughtTechnologies.TtlEncoder.Connect(encoderInfos.First());
            m_connected = true;
            InformListeners(Message.Connected, null);
            string sensor_type;

            m_log.Message("Creating signals");

            /*
            ////////how to work with filters.
            SensorLib.Filters.FilterOrderSpec spec = new SensorLib.Filters.FilterOrderSpec();
            spec.BandType = SensorLib.Filters.BandType.HighPass;
            spec.FilterType = SensorLib.Filters.IirFilterType.Butterworth;
            spec.CornerFreqs = new SensorLib.Util.Pair<double, double>(System.Math.PI / 16.0, 0.0);
            spec.Order = 8;
            m_filterBaselineRemover = SensorLib.Filters.FilterCreation.FilterFactory.CreateIirFilter(spec);
            /////////
            */
            sensor_type = sensorTypeToStr(SensorType.BVP);
            m_sensors[sensor_type] = m_encoder.CreateSensor(sensor_type, SensorLib.ThoughtTechnologies.SensorType.Raw, SensorLib.ThoughtTechnologies.Channel.A, false);
            m_sensors[sensor_type].DataAvailable += new SensorLib.Sensors.DataAvailableHandler<float>(sensor_DataAvailable);
            m_sensors[sensor_type].Start();
            m_signals[sensor_type] = new Signal(sensor_type, Signal.SignalType.BVP);
            m_signals[sensor_type].EnableNormalize = true;
            m_signals[sensor_type].EnableSmoothe = true;
            m_signals[sensor_type].SmootheWindow = 128 * 1;
            m_bvp = m_signals[sensor_type];

            sensor_type = sensorTypeToStr(SensorType.HR);
            m_signals[sensor_type] = new Signal(sensor_type, Signal.SignalType.HR);
            m_signals[sensor_type].EnableNormalize = true;
            m_signals[sensor_type].EnableSmoothe = true;
            m_signals[sensor_type].SmootheWindow = 256;// *5;
            m_signals[sensor_type].Maximum = 160;
            m_signals[sensor_type].Minimum = 80;

            sensor_type = sensorTypeToStr(SensorType.GSR);
            m_sensors[sensor_type] = m_encoder.CreateSensor(sensor_type, SensorLib.ThoughtTechnologies.SensorType.Raw, SensorLib.ThoughtTechnologies.Channel.C, false);
            m_sensors[sensor_type].DataAvailable += new SensorLib.Sensors.DataAvailableHandler<float>(sensor_DataAvailable);
            m_sensors[sensor_type].Start();
            m_signals[sensor_type] = new Signal(sensor_type, Signal.SignalType.GSR);
            m_signals[sensor_type].EnableNormalize = true;
            m_signals[sensor_type].EnableSmoothe = true;
            m_signals[sensor_type].SmootheWindow = 32 * 1; //frequecy * second
            /*
            sensor_type = sensorTypeToStr(SensorType.EMGSmile);
            m_sensors[sensor_type] = m_encoder.CreateSensor(sensor_type, SensorLib.ThoughtTechnologies.SensorType.Raw, SensorLib.ThoughtTechnologies.Channel.D, false);
            m_sensors[sensor_type].DataAvailable += new SensorLib.Sensors.DataAvailableHandler<float>(sensor_DataAvailable);
            m_sensors[sensor_type].Start();
            m_signals[sensor_type] = new Signal(sensor_type, Signal.SignalType.EMGSmile);
            m_signals[sensor_type].EnableNormalize = true;
            m_signals[sensor_type].EnableSmoothe = true;
            //m_signals[sensor_type].SmootheWindow = 32 * 4;

            sensor_type = sensorTypeToStr(SensorType.EMGFrown);
            m_sensors[sensor_type] = m_encoder.CreateSensor(sensor_type, SensorLib.ThoughtTechnologies.SensorType.Raw, SensorLib.ThoughtTechnologies.Channel.E, false);
            m_sensors[sensor_type].DataAvailable += new SensorLib.Sensors.DataAvailableHandler<float>(sensor_DataAvailable);
            m_sensors[sensor_type] .Start();
            m_signals[sensor_type] = new Signal(sensor_type, Signal.SignalType.EMGFrown);
            m_signals[sensor_type].EnableNormalize = true;
            m_signals[sensor_type].EnableSmoothe = true;
            //m_signals[sensor_type].SmootheWindow = 32 * 4;

            */

            m_arousal = new Signal("Arousal");
            m_arousal.Minimum = 0;
            m_arousal.Maximum = 100;

            /*
            m_valence = new Signal("Valence");
            m_valence.Minimum = 0;
            m_valence.Maximum = 100;
            m_fun = new Signal("Fun");
            m_fun.Minimum = 0;
            m_fun.Maximum = 100;
            //m_fun.EnableNormalize = true;
            m_excitement = new Signal("Excitement");
            m_excitement.Minimum = 0;
            m_excitement.Maximum = 100;
            //m_excitement.EnableNormalize = true;
            m_boredom = new Signal("Boredom");
            m_boredom.Minimum = 0;
            m_boredom.Maximum = 100;
            //m_boredom.EnableNormalize = true;
            */
            m_log.Message("Signals created.");
            m_log.Message("Signal serialization format: " + Signal.SerializationFormat());

            return true;
        }