/// <summary>
        /// ファイルからロードしてリスト生成
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static void Load()
        {
            string filePath = FilePath;

            AxisList = new List <AxisBean>();
            FileStream   fs = null;
            StreamReader sr = null;

            try
            {
                if (!File.Exists(filePath))
                {
                    GenerateDefaultList();

                    AccelerationAxis       = AxisList.Find(a => a.Id == (int)AxisIds.Accelerometer);
                    AngularVelocityAxis    = AxisList.Find(a => a.Id == (int)AxisIds.AngularVelocity);
                    ElectrooculographyAxis = AxisList.Find(a => a.Id == (int)AxisIds.Electrooculography);
                    QuaternionAxis         = AxisList.Find(a => a.Id == (int)AxisIds.Quaternion);

                    return;
                }

                // ファイルオープン
                fs = File.OpenRead(filePath);
                sr = new StreamReader(fs);

                while (!sr.EndOfStream)
                {
                    // 読む
                    string rec = sr.ReadLine();

                    // オブジェクトリストに格納
                    AxisBean axis = AxisBean.CreateFromCsv(rec);
                    if (axis != null)
                    {
                        AxisList.Add(axis);
                    }
                }

                AccelerationAxis       = AxisList.Find(a => a.Id == (int)AxisIds.Accelerometer);
                AngularVelocityAxis    = AxisList.Find(a => a.Id == (int)AxisIds.AngularVelocity);
                ElectrooculographyAxis = AxisList.Find(a => a.Id == (int)AxisIds.Electrooculography);
                QuaternionAxis         = AxisList.Find(a => a.Id == (int)AxisIds.Quaternion);
            }
            finally
            {
                // 後始末
                if (sr != null)
                {
                    sr.Close();
                }
                if (fs != null)
                {
                    fs.Close();
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// ファイルからロードしてリスト生成
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static void Load()
        {
            string filePath = FilePath;

            ItemPatternList = new List <ItemMasterBean>();
            FileStream   fs = null;
            StreamReader sr = null;

            string[]       fields;
            ItemMasterBean pattern = null;

            try
            {
                AxisMaster.Load();

                if (!File.Exists(filePath))
                {
                    GenerateDefaultList();
                    return;
                }


                // ファイルオープン
                fs = File.OpenRead(filePath);
                sr = new StreamReader(fs);

                string version = string.Empty;

                while (!sr.EndOfStream)
                {
                    // 読む
                    string rec = sr.ReadLine();

                    // アプリケーションバージョン
                    if (rec.Contains("$ApplicationVersion"))
                    {
                        version = rec.Split(new char[] { '=' })[1];
                    }

                    // 項目パターン名称
                    else if (rec.Contains("$ItemPattern"))
                    {
                        // いままでの項目パターンを保存
                        if (pattern != null)
                        {
                            ItemPatternList.Add(pattern);
                        }

                        // 新しい項目パターン生成
                        pattern = new ItemMasterBean();

                        // '='で分割してItemPatternの名称を取り出す
                        fields = rec.Split(new char[] { '=' });

                        pattern.Name = fields[1].Trim();
                    }

                    // X軸情報
                    else if (rec.Contains("$XAxis"))
                    {
                        // '='で分割してITEMのCSVを取り出す
                        fields        = rec.Split(new char[] { '=' });
                        pattern.XAxis = AxisBean.CreateFromCsv(fields[1]);
                    }

                    else
                    {
                        // オブジェクトリストに格納
                        ItemBean item = ItemBean.CreateFromCsv(rec);
                        if (item != null)
                        {
                            // 軸マスター更新されていた時のため、軸をマスターから取り直す
                            AxisBean axis = AxisMaster.AxisList.Find(d => d.Id == item.Axis.Id);
                            item.Axis = axis;

                            pattern.ItemList.Add(item);
                        }
                    }
                }

                if (version.Equals(System.Diagnostics.FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion) == false)
                {
                    // バージョン不一致の為、ファイルを破棄
                    if (File.Exists(filePath))
                    {
                        sr.Close();
                        sr = null;
                        fs.Close();
                        fs = null;
                        File.Delete(filePath);
                    }
                    GenerateDefaultList();
                    return;
                }

                // 最後の項目パターンを保存
                if (pattern != null)
                {
                    ItemPatternList.Add(pattern);
                }

                AccelerationItems       = new List <ItemMasterBean>();
                AngularVelocityItems    = new List <ItemMasterBean>();
                ElectrooculographyItems = new List <ItemMasterBean>();
                // TODO : クォータニオンを無効化
                //QuaternionItems = new List<ItemMasterBean>();
                for (int i = 0; i < 3; i++)
                {
                    AccelerationItems.Add(ItemPatternList.Find(p => p.Name == string.Format("Accelerometer{0}", i)));
                    AngularVelocityItems.Add(ItemPatternList.Find(p => p.Name == string.Format("AngularVelocity{0}", i)));
                    ElectrooculographyItems.Add(ItemPatternList.Find(p => p.Name == string.Format("Electrooculography{0}", i)));
                    // TODO : クォータニオンを無効化
                    //QuaternionItems.Add(ItemPatternList.Find(p => p.Name == string.Format("Quaternion[0]", i)));
                }
            }
            finally
            {
                // 後始末
                if (sr != null)
                {
                    sr.Close();
                }
                if (fs != null)
                {
                    fs.Close();
                }
            }
        }