Exemple #1
0
        private static void SubscribedOK(object sender, Dictionary <string, JArray> e)
        {
            foreach (string key in e.Keys)
            {
                if (key == "mot")
                {
                    // print header
                    ArrayList header = e[key].ToObject <ArrayList>();

                    //add timeStamp to header
                    header.Insert(0, "Timestamp");
                    header.Add("Action1");
                    header.Add("Action2");
                    header.Add("Action3");
                    header.Add("Action4");
                    WriteDataToFile(header);

                    // Determine what type of gyrometer we have available
                    if (header.Contains("GYROX") && header.Contains("GYROY") && header.Contains("GYROZ"))
                    {
                        Console.WriteLine("Detected Epoc+ v1.1 model headset, which uses dps.");
                        currentGyroType = GyrometerType.DPS;
                        gyroXIndex      = header.IndexOf("GYROX");
                        gyroYIndex      = header.IndexOf("GYROY");
                        gyroZIndex      = header.IndexOf("GYROZ");
                    }
                    else if (header.Contains("GYROX") && header.Contains("GYROY"))
                    {
                        Console.WriteLine("Detected Epoc v1.0 model headset, which uses g.");
                        currentGyroType = GyrometerType.G;
                        gyroXIndex      = header.IndexOf("GYROX");
                        gyroYIndex      = header.IndexOf("GYROY");
                    }
                    else if (header.Contains("Q0") && header.Contains("Q1") && header.Contains("Q2") && header.Contains("Q3"))
                    {
                        Console.WriteLine("Detected Epoc X or Epoc+ v1.1A model headset, which uses quaternions.");
                        currentGyroType = GyrometerType.Quaternion;
                        gyroXIndex      = header.IndexOf("Q0");
                        gyroYIndex      = header.IndexOf("Q1");
                        gyroZIndex      = header.IndexOf("Q2");
                        gyroWIndex      = header.IndexOf("Q3");
                    }
                    else
                    {
                        Console.WriteLine("This is a type of headset we've not yet seen before. See the contained headers: " + header.ToString());
                        currentGyroType = GyrometerType.Unknown;
                    }
                }
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Motion LOGGER");
            Console.WriteLine("Please wear Headset with good signal!!!");

            // Delete Output file if existed
            if (File.Exists(OutFilePath))
            {
                File.Delete(OutFilePath);
            }
            OutFileStream = new FileStream(OutFilePath, FileMode.Append, FileAccess.Write);
            rollingSums   = rollingSums = new RollingSums
            {
                x = 0,
                y = 0,
                z = 0
            };
            currentGyroType = GyrometerType.Unknown;

            DataStreamExample dse = new DataStreamExample();

            dse.AddStreams("mot");
            dse.OnSubscribed         += SubscribedOK;
            dse.OnMotionDataReceived += OnMotionDataReceived;
            dse.Start(licenseID);

            Console.WriteLine("Press Esc to flush data to file and exit");
            while (Console.ReadKey().Key != ConsoleKey.Escape)
            {
            }

            // Unsubcribe stream
            dse.UnSubscribe();
            Thread.Sleep(5000);

            // Close Session
            dse.CloseSession();
            Thread.Sleep(5000);
            // Close Out Stream
            OutFileStream.Dispose();
        }