using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.ComponentModel; using System.Web.Services.Protocols; using AR; namespace Project { public class ModelInfoM { //스피드 값과, 위치값을 저장하면 된다. public int idx { get; set; } public string Title { get; set; } public Dictionary Position { get; set; } public ModelInfoM() { idx = -1; Title = string.Empty; ClearDataPosition(); } void ClearDataPosition() { Position = new Dictionary(); var motCount = Enum.GetNames(typeof(eAxis)).Length; for (int i = 0; i < motCount; i++) { var datas = new PositionData[64]; for (int j = 0; j < datas.Length; j++) datas[j] = new PositionData(-1, string.Empty, 0.0); Position.Add(i, datas); } } public Boolean isSet { get { if (idx == -1) return false; else return !Title.isEmpty(); } } public void ReadValue(DataSet1.MCModelRow dr) { idx = dr.idx; Title = dr.Title; ReadValuePosition(idx); } public void ReadValue(int index) { var dr = PUB.mdm.dataSet.MCModel.Where(t => t.idx == index).FirstOrDefault(); if (dr == null) { idx = -1; Title = string.Empty; ClearDataPosition(); } else { idx = dr.idx; Title = dr.Title; ReadValuePosition(idx); } } public Boolean ReadValue(string title) { return ReadValue(title, PUB.mdm.dataSet.MCModel); } public Boolean ReadValue(string title, DataSet1.MCModelDataTable dt) { var dr = dt.Where(t => t.Title == title).FirstOrDefault(); if (dr == null) { idx = -1; this.Title= string.Empty; ClearDataPosition(); return false; } else { idx = dr.idx; this.Title = dr.Title; ReadValuePosition(idx); return true; } } public void ReadValuePosition(int modelidx) { ReadValuePosition(modelidx, PUB.mdm.dataSet.MCModel); } public void ReadValuePosition(int modelidx, DataSet1.MCModelDataTable dt) { ClearDataPosition(); //각 모터별로 데이터를 가져온다 int cnt = 0; foreach (var data in Position) { //해당 모터의 속도값을 가져온다 var drows = dt.Where(t => t.pidx == modelidx && t.PosIndex >= 0 && t.MotIndex == data.Key); foreach (DataSet1.MCModelRow dr in drows) { var item = data.Value[dr.PosIndex]; item.index = dr.PosIndex; item.title = dr.PosTitle; item.value = dr.Position; item.speed = dr.Speed; item.acc = dr.SpeedAcc; item.dcc = dr.SpeedDcc; data.Value[dr.PosIndex] = item; cnt += 1; } } PUB.log.Add(String.Format("Motion({0}) Data Load : {1}", modelidx, cnt)); } } }