Пример #1
0
        /// <summary>
        /// CSVからオブジェクト生成
        /// </summary>
        /// <param name="csv"></param>
        /// <returns></returns>
        public static ItemBean CreateFromCsv(string csv)
        {
            ItemBean item = null;
            AxisBean axis = null;

            string[] fields = CsvUtil.Split(csv);

            if (fields.Count() == dataNum)
            {
                item = new ItemBean();
                axis = new AxisBean();

                item.Id        = int.Parse(fields[0]);
                item.Name      = fields[1];
                item.YAxisMax  = double.Parse(fields[2]);
                item.YAxisMin  = double.Parse(fields[3]);
                item.LineColor = ColorUtil.NameToColor(fields[4]);
                item.LineWidth = double.Parse(fields[5]);
                item.Visible   = bool.Parse(fields[6]);

                axis.Id              = int.Parse(fields[7]);
                axis.Name            = fields[8];
                axis.UnitName        = fields[9];
                axis.AxisMax         = item.YAxisMax;
                axis.AxisMin         = item.YAxisMin;
                axis.GridLineVisible = bool.Parse(fields[10]);
                axis.GridResolution  = double.Parse(fields[11]);
                axis.AxisColor       = ColorUtil.NameToColor(fields[12]);
                axis.DispOrder       = int.Parse(fields[13]);

                item.Axis = axis;
            }

            return(item);
        }
        /// <summary>
        /// 加速度の雛形リストを生成
        /// </summary>
        /// <returns></returns>
        public static List <ItemBean> GenerateAccelerationItems()
        {
            List <ItemBean> list = new List <ItemBean>();

            AxisMaster.Load();

            // 軸に対応する項目を1個づつ生成する
            ItemBean item;
            AxisBean axis;

            int cnt = 1;

            // 加速度X軸
            axis = AxisMaster.AccelerationAxis;

            item           = new ItemBean();
            item.Id        = cnt;
            item.Name      = "X-axis";
            item.Axis      = axis;
            item.LineWidth = 1.0;
            item.LineColor = ColorList[cnt % ColorList.Length];
            item.YAxisMax  = axis.AxisMax;
            item.YAxisMin  = axis.AxisMin;
            item.Visible   = true;

            list.Add(item);

            cnt++;

            // 加速度Y軸
            item           = new ItemBean();
            item.Id        = cnt;
            item.Name      = "Y-axis";
            item.Axis      = axis;
            item.LineWidth = 1.0;
            item.LineColor = ColorList[cnt % ColorList.Length];
            item.YAxisMax  = axis.AxisMax;
            item.YAxisMin  = axis.AxisMin;
            item.Visible   = true;

            list.Add(item);

            cnt++;

            // 加速度Z軸
            item           = new ItemBean();
            item.Id        = cnt;
            item.Name      = "Z-axis";
            item.Axis      = axis;
            item.LineWidth = 1.0;
            item.LineColor = ColorList[cnt % ColorList.Length];
            item.YAxisMax  = axis.AxisMax;
            item.YAxisMin  = axis.AxisMin;
            item.Visible   = true;

            list.Add(item);

            return(list);
        }
Пример #3
0
        public ItemBean Clone()
        {
            ItemBean item = new ItemBean();

            item.Id        = this.Id;
            item.Name      = this.Name;
            item.YAxisMax  = this.YAxisMax;
            item.YAxisMin  = this.YAxisMin;
            item.LineColor = this.LineColor;
            item.LineWidth = this.LineWidth;
            item.Visible   = this.Visible;
            item.Axis      = this.Axis.Clone();

            return(item);
        }
Пример #4
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();
                }
            }
        }
        /// <summary>
        /// 眼電位の雛形リストを生成
        /// </summary>
        /// <returns></returns>
        public static List <ItemBean> GenerateElectrooculographyItems()
        {
            List <ItemBean> list = new List <ItemBean>();

            AxisMaster.Load();

            // 軸に対応する項目を1個づつ生成する
            ItemBean item;
            AxisBean axis;

            int cnt = 1;

            axis = AxisMaster.ElectrooculographyAxis;

            // 眼電位左
            item           = new ItemBean();
            item.Id        = cnt;
            item.Name      = "Left";
            item.Axis      = axis;
            item.LineWidth = 1.0;
            //item.LineColor = ColorList[cnt % ColorList.Length];
            item.LineColor = Color.FromArgb(0xff, 0xc0, 0x00, 0x00);
            item.YAxisMax  = axis.AxisMax;
            item.YAxisMin  = axis.AxisMin;
            item.Visible   = true;

            list.Add(item);

            cnt++;

            // 眼電位右
            item           = new ItemBean();
            item.Id        = cnt;
            item.Name      = "Right";
            item.Axis      = axis;
            item.LineWidth = 1.0;
            //item.LineColor = ColorList[cnt % ColorList.Length];
            item.LineColor = Color.FromArgb(0xff, 0x00, 0x00, 0xc0);
            item.YAxisMax  = axis.AxisMax;
            item.YAxisMin  = axis.AxisMin;
            item.Visible   = true;

            list.Add(item);

            cnt++;

            // 眼電位水平差分値
            item           = new ItemBean();
            item.Id        = cnt;
            item.Name      = "Delta H";
            item.Axis      = axis;
            item.LineWidth = 1.0;
            //item.LineColor = ColorList[cnt % ColorList.Length];
            item.LineColor = Color.FromArgb(0xff, 0xc0, 0x00, 0xc0);
            item.YAxisMax  = axis.AxisMax;
            item.YAxisMin  = axis.AxisMin;
            item.Visible   = true;

            list.Add(item);

            cnt++;

            // 眼電位垂直差分値
            item           = new ItemBean();
            item.Id        = cnt;
            item.Name      = "Delta V";
            item.Axis      = axis;
            item.LineWidth = 1.0;
            //item.LineColor = ColorList[cnt % ColorList.Length];
            item.LineColor = Color.FromArgb(0xff, 0x00, 0xc0, 0xc0);
            item.YAxisMax  = axis.AxisMax;
            item.YAxisMin  = axis.AxisMin;
            item.Visible   = true;

            list.Add(item);

            return(list);
        }