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