374 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			374 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.ComponentModel;
 | |
| using System.Drawing;
 | |
| using System.Data;
 | |
| using System.Text;
 | |
| using System.Windows.Forms;
 | |
| using System.Drawing.Drawing2D;
 | |
| 
 | |
| namespace vmsnet.HMI
 | |
| {
 | |
|     [TypeConverterAttribute(typeof(ExpandableObjectConverter)), Serializable()]
 | |
|     public partial class CITEM
 | |
|     {
 | |
|         public int column;
 | |
|         public int row;
 | |
| 
 | |
|         public RectangleF rect;
 | |
|         public RectangleF BarRect;
 | |
|         private String name;
 | |
| 
 | |
|         public int seq;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 0부터시작
 | |
|         /// </summary>
 | |
|         public int idx_dev;      //장치의 인덱스값
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 0부터시작
 | |
|         /// </summary>
 | |
|         public int idx_unit;     //서브유닛의 인덱스값
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 0부터시작
 | |
|         /// </summary>
 | |
|         public int idx_ch;       //채널의 인덱스값
 | |
|         public int idx;          //셀의고유인덱스값(DB는 이값이 저장되고 후에 불러오게된다)
 | |
|         public Boolean ismax = false;
 | |
|         public Boolean ismin = false;
 | |
|         public Color c_color = Color.Black;
 | |
|         //MY EVENT        
 | |
|         public delegate void OnAlamStatusChangeHandler();
 | |
|         public event OnAlamStatusChangeHandler OnAlamStausChanged; //UPDATE USER CURSOR
 | |
| 
 | |
|         public delegate void OnChangeDataHandler();
 | |
|         public event OnChangeDataHandler OnChangeData;
 | |
| 
 | |
|         public delegate void OnChangeValueHandler();    //값이변경되었을경우 발생한다.
 | |
|         public event OnChangeValueHandler OnChangeValueData;
 | |
|         
 | |
|         public Boolean enable = false;
 | |
|        private Boolean active = false;
 | |
|         public Single alamh = 0;
 | |
|         public Single alaml = 0;
 | |
|         public Single aalamh = 0;
 | |
|         public Single aalaml = 0;
 | |
|         public Single alamv = -999;    //auto시 기준값
 | |
|         private COMM.EALAMTYPE alamatype;  //0:no 1:all 2:grp 3:cell
 | |
|         private Single offset;
 | |
|         public String 적용형태 = "";
 | |
| 
 | |
|         public Boolean _onalamh = false;
 | |
|         public Boolean _onalaml = false;
 | |
|         public Boolean _p_onalamh = false;
 | |
|         public Boolean _p_onalaml = false;
 | |
|         public Boolean _onalamover = false;
 | |
|         public Boolean _p_onalamover = false;
 | |
| 
 | |
|         private String _value = "";
 | |
|         public int value2 = 0;   //소수자리가 들어가기전의 값
 | |
|         public Single CurValue =0f;
 | |
|         public Single CurValue1 = 0f;
 | |
| 
 | |
|         public String mtime = "";
 | |
|         private String _time_pre = ""; //이전값
 | |
| 
 | |
|         public String unit;   //표시단위(v,c)
 | |
|         public int decpos;    //10진수단위값
 | |
|        // public Form detailform = null;
 | |
| 
 | |
|         public Boolean Onset = false;
 | |
|        // public Boolean firstsave = true;
 | |
|         
 | |
|         public CITEM()
 | |
|         {
 | |
|             offset = 0;
 | |
|             column = 0;
 | |
|             row = 0;
 | |
|             name = "Citem";
 | |
|             rect = new RectangleF(0, 0, 0, 0);
 | |
|             BarRect = new RectangleF(0, 0, 0, 0);
 | |
|             _value = "";
 | |
|             value2 = 0;
 | |
|             mtime = "";
 | |
|             idx = 0;
 | |
|            // detailform = null;
 | |
|             Onset = false;
 | |
|             active = false;
 | |
|             seq = 0;
 | |
|             CurValue = 0;
 | |
|             CurValue1 = 0;
 | |
|         }
 | |
| 
 | |
|         public CITEM(short pcolumn, short prow, String pname, ESTATUS pstatus, RectangleF prect)
 | |
|         {
 | |
|             this.column = pcolumn;
 | |
|             this.row = prow;
 | |
|             this.name = pname;
 | |
|             BarRect = new RectangleF(0, 0, 0, 0);
 | |
|             this.rect = prect;
 | |
|             CurValue = 0;
 | |
|             CurValue1 = 0;
 | |
|             //detailform = null;
 | |
|         }
 | |
| 
 | |
|         public override string ToString()
 | |
|         {
 | |
|             StringBuilder sb = new StringBuilder();
 | |
|             sb.AppendLine("seq=" + seq.ToString() + ",offset=" + offset.ToString() + ",curval=" + CurValue.ToString() + ",rect=" + BarRect.ToString());
 | |
|             sb.AppendLine("name=" + 이름 + ",use =" + 사용.ToString() + ",활성화=" + 활성화.ToString());
 | |
|             return sb.ToString();
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("측정값"), Category("측정값"),Browsable(false)]
 | |
|         public String Value
 | |
|         {
 | |
|             get { return this._value; }
 | |
|             set { this._value = value;
 | |
| 
 | |
|                 //값이 이전과 바뀌었을경우에 사용한다.
 | |
|             if (mtime != _time_pre)
 | |
|                 {
 | |
|                     if (OnChangeValueData != null) OnChangeValueData();
 | |
|                     _time_pre = mtime;
 | |
|                 }            
 | |
|             
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("표시기호"), Category("정보"), Browsable(false)]
 | |
|         public String 표시기호
 | |
|         {
 | |
|             get             {                return unit;             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("소수점위치"), Category("정보"), Browsable(false)]
 | |
|         public int 소수점위치
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return decpos;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("측정값"), Category("정보"),Browsable(false)]
 | |
|         public String 측정값
 | |
|         {
 | |
|             get {
 | |
|                 if (_value == null) return "";
 | |
|                 else return _value; 
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("측정된시간"), Category("정보"), Browsable(false)]
 | |
|         public String 측정시간
 | |
|         {
 | |
|             get {
 | |
|                 if (mtime == null) return "";
 | |
|                 else return mtime; 
 | |
|                  }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("값배열을 참조하는 Channel INDEX"), Category("테스트"), System.ComponentModel.Browsable(false)]
 | |
|         public int 인덱스_번호
 | |
|         {
 | |
|             get { return idx; }
 | |
|         }
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("값배열을 참조하는 Channel INDEX"), Category("테스트"), System.ComponentModel.Browsable(false)]
 | |
|         public int 인덱스_채널
 | |
|         {
 | |
|             get { return idx_ch; }
 | |
|         }
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("값배열을 참조하는 Device INDEX"), Category("테스트"), System.ComponentModel.Browsable(false)]
 | |
|         public int 인덱스_장치
 | |
|         {
 | |
|             get { return idx_dev; }
 | |
|         }
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("값배열을 참조하는 SubUnit INDEX"), Category("테스트"), System.ComponentModel.Browsable(false)]
 | |
|         public int 인덱스_유닛
 | |
|         {
 | |
|             get { return idx_unit; }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("HIGH 알람의 발생여부(변경불가)"), Category("알람발생상태"), System.ComponentModel.Browsable(false)]
 | |
|         public Boolean 상위알람발생
 | |
|         {
 | |
|             get { return _onalamh; }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("HIGH 알람의 발생여부(변경불가)"), Category("알람발생상태"), System.ComponentModel.Browsable(false)]
 | |
|         public Boolean onalamh
 | |
|         {
 | |
|             get { return _onalamh; }
 | |
|             set
 | |
|             {
 | |
|                 _onalamh = value;
 | |
|                 if (OnAlamStausChanged != null) OnAlamStausChanged();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("HIGH 알람의 발생여부(변경불가)"), Category("알람발생상태"), System.ComponentModel.Browsable(false)]
 | |
|         public Boolean onalaml
 | |
|         {
 | |
|             get { return _onalaml; }
 | |
|             set { _onalaml = value;
 | |
|                 if (OnAlamStausChanged != null) OnAlamStausChanged();
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("LOW 알람의 발생여부(변경불가)"), Category("알람발생상태"), System.ComponentModel.Browsable(false)]
 | |
|         public Boolean 하위알람발생
 | |
|         {
 | |
|             get { return _onalaml; }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Content),Browsable(true),   Category("모양"), Description("(보정값) 이곳에 값을 입력하면 해당 셀값에 + 됩니다.")]
 | |
|         public Single Offset
 | |
|         {
 | |
|             get { return offset; }
 | |
|             set { offset = value;
 | |
|             if (OnChangeData != null) OnChangeData();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람설정"), Description("셀 알람")]
 | |
|         public COMM.EALAMTYPE 알람형태
 | |
|         {
 | |
|             get { return alamatype; }
 | |
|             set { 
 | |
|                 alamatype = value;
 | |
|                 alamv = -999;
 | |
|                 if (OnChangeData != null) OnChangeData();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람(수동)"), Description("상위 알람값입니다. 직접입력일경우에만 입력하세요.")]
 | |
|         public Single HIGH
 | |
|         {
 | |
|             get { return alamh; }
 | |
|             set
 | |
|             {
 | |
|                 if (알람형태 == COMM.EALAMTYPE.개별알람)
 | |
|                 {
 | |
|                     alamh = value;
 | |
|                     if (OnChangeData != null) OnChangeData(); 
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     MessageBox.Show("알람값을 입력하려면 [개별알람]으로 변경 후 입력하세요");
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람(수동)"), Description("하위 알람값입니다. 직접입력일경우에만 입력하세요.")]
 | |
|         public Single LOW
 | |
|         {
 | |
|             get { return alaml; }
 | |
|             set {
 | |
|                 if (알람형태 == COMM.EALAMTYPE.개별알람)
 | |
|                 {
 | |
|                     alaml = value;
 | |
|                     if (OnChangeData != null) OnChangeData();
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     MessageBox.Show("알람값을 입력하려면 [개별알람]으로 변경 후 입력하세요");
 | |
|                 }
 | |
|                 
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람(자동)"), Description("상위 알람값입니다. 직접입력일경우에만 입력하세요.")]
 | |
|         public Single H
 | |
|         {
 | |
|             get { return aalamh; }
 | |
|             set
 | |
|             {
 | |
|                 if (알람형태 == COMM.EALAMTYPE.개별알람자동)
 | |
|                 {
 | |
|                     aalamh = value;
 | |
|                     if (OnChangeData != null) OnChangeData();
 | |
| 
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     MessageBox.Show("알람값을 입력하려면 [개별알람자동]으로 변경 후 입력하세요");
 | |
|                 }
 | |
| 
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람(자동)"), Description("하위 알람값입니다. 직접입력일경우에만 입력하세요.")]
 | |
|         public Single L
 | |
|         {
 | |
|             get { return Math.Abs(aalaml); }
 | |
|             set
 | |
|             {
 | |
|                 if (알람형태 == COMM.EALAMTYPE.개별알람자동)
 | |
|                 {
 | |
|                     aalaml = Math.Abs(value);
 | |
|                     if (OnChangeData != null) OnChangeData();
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     MessageBox.Show("알람값을 입력하려면 [개별알람자동]으로 변경 후 입력하세요");
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람(자동)"), Description("기준값")]
 | |
|         public Single 기준값
 | |
|         {
 | |
|             get { return alamv; }
 | |
|             set { this.alamv = value; }
 | |
|         
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),System.ComponentModel.Browsable(false)]
 | |
|         public int Column
 | |
|         {
 | |
|             get { return this.column; }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), System.ComponentModel.Browsable(false)]
 | |
|         public int Row
 | |
|         {
 | |
|             get { return this.row; }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("모양"), Description("이 셀의 이름입니다.")]
 | |
|         public string 이름
 | |
|         {
 | |
|             get { return this.name; }
 | |
|             set { name = value;
 | |
|             if (OnChangeData != null) OnChangeData();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("모양"), Description("이 셀의 사용여부를 설정합니다. 사용이 해제된 셀은 자료가 저장되지 않습니다.")]
 | |
|         public Boolean 사용
 | |
|         {
 | |
|             get { return this.enable; }
 | |
|             set { this.enable = value;
 | |
|             if (OnChangeData != null) OnChangeData();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("정보"), Description("이 셀의 활성화여부를 설정합니다. 해제된 셀은 알람"), Browsable(true)]
 | |
|         public Boolean 활성화
 | |
|         {
 | |
|             get { return this.active; }
 | |
|             set
 | |
|             {
 | |
|                 this.active = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     }
 | |
| }
 | |
|   | 
