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); }
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; }