/// <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);
        }
Пример #2
0
        /// <summary>
        /// 出荷時LIST生成
        /// </summary>
        private static void GenerateDefaultList()
        {
            ItemPatternList = new List <ItemMasterBean>();
            ItemMasterBean pattern = null;

            AxisMaster.Load();

            for (int i = 0; i < 3; i++)
            {
                // 加速度の項目
                pattern          = new ItemMasterBean();
                pattern.Name     = string.Format("Accelerometer{0}", i);
                pattern.ItemList = ItemListAccess.GenerateAccelerationItems();
                ItemPatternList.Add(pattern);

                // 角速度の項目
                pattern          = new ItemMasterBean();
                pattern.Name     = string.Format("AngularVelocity{0}", i);
                pattern.ItemList = ItemListAccess.GenerateAngularVelocityItems();
                ItemPatternList.Add(pattern);

                // 眼電位の項目
                pattern          = new ItemMasterBean();
                pattern.Name     = string.Format("Electrooculography{0}", i);
                pattern.ItemList = ItemListAccess.GenerateElectrooculographyItems();
                ItemPatternList.Add(pattern);

                // TODO : クォータニオンを無効化
                //// クォータニオンの項目
                //pattern = new ItemMasterBean();
                //pattern.Name = string.Format("Quaternion{0}",i);
                //pattern.ItemList = ItemListAccess.GenerateQuaternionItems();
                //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)));
            }
        }
        /// <summary>
        /// グラフ画面処理
        /// 加速度、角速度、眼電位のグラフを制御する
        /// </summary>
        public GraphControl()
        {
            InitializeComponent();

            graphViews = new GraphView[] { graphView1, graphView2, graphView3 };

            // 項目マスターロード
            AxisMaster.Load();
            ItemMaster.Load();

            // defaultは chart1=加速度 chart2=角速度 chart3=眼電圧
            Chart1Axis = AxisMaster.AccelerationAxis;
            Chart2Axis = AxisMaster.AngularVelocityAxis;
            Chart3Axis = AxisMaster.ElectrooculographyAxis;
        }
        /// <summary>
        /// 保存ボタンクリック
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void saveButton_Click(object sender, EventArgs e)
        {
            // validateしてエラーならメッセージ表示
            string message = string.Empty;

            if (!validateAxisList(ref message))
            {
                MessageBox.Show(message, "Axis Master", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // 保存
            AxisMaster.Save();

            // 編集フラグクリア
            HasEdited = false;


            //// 項目パターンファイルのAxisも更新する

            //// すべての項目パターンについて
            //for (int i = 0; i < ItemMaster.ItemPatternList.Count; i++)
            //{
            //    ItemMasterBean pattern = ItemMaster.ItemPatternList[i];
            //    for (int j = 0; j < pattern.ItemList.Count; j++)
            //    {
            //        // 項目に紐づいている軸を入れ替える
            //        AxisBean axis = AxisMaster.AxisList.Find(d => d.Id == pattern.ItemList[j].Axis.Id);
            //        if (axis != null)
            //        {
            //            pattern.ItemList[j].Axis = axis;
            //        }
            //    }
            //}
            //// 保存
            //ItemMaster.Save();


            MessageBox.Show("Save completed.", "Axis Master", MessageBoxButtons.OK, MessageBoxIcon.Information);

            this.dialogResult = DialogResult.OK;
            Close();
        }
 /// <summary>
 /// saveを促す
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void AxisMasterForm_FormClosing(object sender, FormClosingEventArgs e)
 {
     if (HasEdited)
     {
         if (DialogResult.Yes == MessageBox.Show("Data has edited. save?", "Axis Master", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
         {
             AxisMaster.Save();
             DialogResult = DialogResult.OK;
         }
         else
         {
             // キャンセル処理を追加
             e.Cancel = true;
             //DialogResult = DialogResult.Cancel;
         }
     }
     else
     {
         DialogResult = this.dialogResult;
     }
 }
Пример #6
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);
        }