1. 데이터 수신전에는 알람이 울리지 않도록 함
This commit is contained in:
@@ -69,6 +69,7 @@ namespace vmsnet.HMI
|
||||
|
||||
private String _value = "";
|
||||
public int value2 = 0; //소수자리가 들어가기전의 값
|
||||
public bool received = false;
|
||||
public Single CurValue =0f;
|
||||
public Single CurValue1 = 0f;
|
||||
|
||||
@@ -92,6 +93,7 @@ namespace vmsnet.HMI
|
||||
BarRect = new RectangleF(0, 0, 0, 0);
|
||||
_value = "";
|
||||
value2 = 0;
|
||||
received = false;
|
||||
mtime = "";
|
||||
idx = 0;
|
||||
// detailform = null;
|
||||
|
||||
@@ -129,7 +129,8 @@ namespace vmsnet.HMI
|
||||
// }
|
||||
//}
|
||||
|
||||
private int[,,] values;
|
||||
private bool[,,] received;
|
||||
private int[,,] _values;
|
||||
private String[,,] times;
|
||||
|
||||
private Boolean _init = false; //그리드초기화완료여부
|
||||
@@ -309,10 +310,20 @@ namespace vmsnet.HMI
|
||||
|
||||
#region *** Constructors ***
|
||||
|
||||
public int[,,] Values
|
||||
/// <summary>
|
||||
/// 데이터를 수신했는지
|
||||
/// </summary>
|
||||
public bool[,,] Received
|
||||
{
|
||||
get { return this.values; }
|
||||
set { this.values = value; }
|
||||
get { return this.received; }
|
||||
set { this.received = value; }
|
||||
}
|
||||
|
||||
|
||||
public int[,,] _Values
|
||||
{
|
||||
get { return this._values; }
|
||||
set { this._values = value; }
|
||||
}
|
||||
|
||||
public String[,,] Times
|
||||
@@ -670,9 +681,10 @@ namespace vmsnet.HMI
|
||||
//값의 저장소가 아에없다면?
|
||||
//Boolean OverDATA = false;
|
||||
var alarmRemark = string.Empty;
|
||||
if (this.Values == null)
|
||||
if (this._Values == null)
|
||||
{
|
||||
Item.value2 = 0;
|
||||
Item.received = false;
|
||||
Item.CurValue = 0f;
|
||||
Item.CurValue1 = 0f;
|
||||
TimeStr = "Null Error";
|
||||
@@ -685,6 +697,7 @@ namespace vmsnet.HMI
|
||||
if (!Item.사용) //사용여부자체를 설정한다.
|
||||
{
|
||||
Item.value2 = 0;
|
||||
Item.received = false;
|
||||
Item.alamv = -999;
|
||||
Item.CurValue = 0f; //미설정상태라면 값을 표시하지 않는다.
|
||||
Item.CurValue1 = 0f;
|
||||
@@ -698,18 +711,20 @@ namespace vmsnet.HMI
|
||||
//Br = new SolidBrush(Color.Black);
|
||||
Offset = Item.Offset; //수동으로입력된 옾셋
|
||||
|
||||
var u1 = this.Values.GetUpperBound(0);
|
||||
var u2 = this.Values.GetUpperBound(1);
|
||||
var u3 = this.Values.GetUpperBound(2);
|
||||
var u1 = this._Values.GetUpperBound(0);
|
||||
var u2 = this._Values.GetUpperBound(1);
|
||||
var u3 = this._Values.GetUpperBound(2);
|
||||
if (Item.idx_dev >= 0 && Item.idx_unit >= 0 && Item.idx_ch >= 0 &&
|
||||
Item.idx_dev <= u1 && Item.idx_unit <= u2 && Item.idx_ch <= u3)
|
||||
{
|
||||
Item.value2 = this.Values[Item.idx_dev, Item.idx_unit, Item.idx_ch]; //측정값
|
||||
Item.value2 = this._Values[Item.idx_dev, Item.idx_unit, Item.idx_ch]; //측정값
|
||||
TimeStr = this.Times[Item.idx_dev, Item.idx_unit, Item.idx_ch]; //측정시간
|
||||
Item.received = this.Received[Item.idx_dev, Item.idx_unit, Item.idx_ch]; //수신여부
|
||||
}
|
||||
else
|
||||
{
|
||||
Item.value2 = 0;
|
||||
Item.received = false;
|
||||
TimeStr = "";
|
||||
}
|
||||
|
||||
@@ -791,7 +806,12 @@ namespace vmsnet.HMI
|
||||
if (Item.alamv == -999 || Item.alamv == 0) Item.alamv = Item.CurValue;
|
||||
|
||||
Item.적용형태 = "AUTO";
|
||||
if (Item.CurValue > Item.alamv) //큰값이 있을경우 상한선을 확인한다.
|
||||
if (Item.received == false)
|
||||
{
|
||||
Item.onalamh = false;
|
||||
Item.onalaml = false;
|
||||
}
|
||||
else if (Item.CurValue > Item.alamv) //큰값이 있을경우 상한선을 확인한다.
|
||||
{
|
||||
Single gap = Math.Abs(Item.CurValue - Item.alamv);
|
||||
if (gap >= Math.Abs(Item.aalamh))
|
||||
@@ -818,7 +838,12 @@ namespace vmsnet.HMI
|
||||
else if (grp.AlarmType == "MANUAL")
|
||||
{
|
||||
Item.적용형태 = "MANUAL";
|
||||
if (Item.CurValue >= Item.alamh)
|
||||
if (Item.received == false)
|
||||
{
|
||||
Item.onalamh = false;
|
||||
Item.onalaml = false;
|
||||
}
|
||||
else if (Item.CurValue >= Item.alamh)
|
||||
{
|
||||
Item.onalamh = true;
|
||||
Item.onalaml = false;
|
||||
@@ -842,7 +867,12 @@ namespace vmsnet.HMI
|
||||
break;
|
||||
case COMM.EALAMTYPE.개별알람:
|
||||
Item.적용형태 = "MANUAL";
|
||||
if (Item.CurValue >= Item.alamh)
|
||||
if (Item.received == false)
|
||||
{
|
||||
Item.onalamh = false;
|
||||
Item.onalaml = false;
|
||||
}
|
||||
else if (Item.CurValue >= Item.alamh)
|
||||
{
|
||||
Item.onalamh = true;
|
||||
Item.onalaml = false;
|
||||
@@ -864,7 +894,12 @@ namespace vmsnet.HMI
|
||||
/* 작성자: 이재웅, 작성일: 2025-06-17, 작성내용: 'Item.alamv == 0' OR조건 추가 */
|
||||
if (Item.alamv == -999 || Item.alamv == 0) Item.alamv = Item.CurValue;
|
||||
|
||||
if (Item.CurValue > Item.alamv) //큰값이 있을경우 상한선을 확인한다.
|
||||
if (Item.received == false)
|
||||
{
|
||||
Item.onalamh = false;
|
||||
Item.onalaml = false;
|
||||
}
|
||||
else if (Item.CurValue > Item.alamv) //큰값이 있을경우 상한선을 확인한다.
|
||||
{
|
||||
Single gap = Math.Abs(Item.CurValue - Item.alamv);
|
||||
if (gap >= Math.Abs(Item.aalamh))
|
||||
@@ -897,7 +932,7 @@ namespace vmsnet.HMI
|
||||
{
|
||||
String alamtimes = "";
|
||||
|
||||
if (TimeStr != "" && TimeStr != "Not USE")
|
||||
if (TimeStr != "" && TimeStr != "Not USE")
|
||||
alamtimes = DateTime.Parse(TimeStr).ToString("yy-MM-dd HH:mm:ss");
|
||||
else alamtimes = "";
|
||||
|
||||
@@ -934,7 +969,7 @@ namespace vmsnet.HMI
|
||||
}
|
||||
}
|
||||
|
||||
if (!Item.활성화 && Item.사용)
|
||||
if ((!Item.활성화 && Item.사용) || Item.received == false)
|
||||
{
|
||||
Item._onalamover = false;
|
||||
Item._onalamh = false;
|
||||
@@ -954,6 +989,10 @@ namespace vmsnet.HMI
|
||||
BrColor = (Color.DarkMagenta);
|
||||
grp._errorcount += 1;
|
||||
}
|
||||
else if (Item.received == false)
|
||||
{
|
||||
ValueStr = "--";
|
||||
}
|
||||
else if (!Item.활성화)
|
||||
{
|
||||
ValueStr = "--";
|
||||
@@ -1294,7 +1333,7 @@ namespace vmsnet.HMI
|
||||
|
||||
//g.DrawString(this.window.disconnecttime.ToString(), this.Font, Brushes.Red, R.Left,R.Top);
|
||||
}
|
||||
|
||||
|
||||
grp._amp = 0;
|
||||
if (grp._ampidx != "" && grp._ampidx != null)
|
||||
{
|
||||
@@ -1306,7 +1345,7 @@ namespace vmsnet.HMI
|
||||
try
|
||||
{
|
||||
grp._ampdecpos = 3;
|
||||
grp._amp = (float)(this.Values[di1, di2, di3 - 1] / (Math.Pow(10, grp._ampdecpos)));
|
||||
grp._amp = (float)(this._Values[di1, di2, di3 - 1] / (Math.Pow(10, grp._ampdecpos)));
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -1357,7 +1396,7 @@ namespace vmsnet.HMI
|
||||
grp._nbalam_l = true; //a2 on
|
||||
if (!grp._pre_nbalam_l)
|
||||
{
|
||||
if (grp.AlarmType != "STOP") OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A2_ON, COMM.EALAMTYPE.사용안함, "NB",
|
||||
if (grp.AlarmType != "STOP") OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A2_ON, COMM.EALAMTYPE.사용안함, "NB",
|
||||
(Single)nullvalue, (Single)grp.nbl, (Single)grp.nbl, $"> {grp.nbl}");
|
||||
grp._pre_nbalam_l = true;
|
||||
A2 = false;
|
||||
@@ -1404,7 +1443,7 @@ namespace vmsnet.HMI
|
||||
grp._nbalam_h = true;
|
||||
if (!grp._pre_nbalam_h) //이전에 발생안햇다면
|
||||
{
|
||||
if (grp.AlarmType != "STOP") OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A1_ON, COMM.EALAMTYPE.사용안함, "NB",
|
||||
if (grp.AlarmType != "STOP") OnAlamChange(grp.IDX, COMM.EALAMRAISETYPE.A1_ON, COMM.EALAMTYPE.사용안함, "NB",
|
||||
(Single)nullvalue, (Single)grp.nbh, (Single)grp.nbh, $"> {grp.nbh}");
|
||||
grp._pre_nbalam_h = true;
|
||||
blink1 = 0;
|
||||
@@ -1490,7 +1529,7 @@ namespace vmsnet.HMI
|
||||
|
||||
//끝부분에 KA 를 표시한다.
|
||||
String Kaunit = grp._ampunit;// +grp._ampidx.ToString() + "/" + grp._ampdecpos.ToString();
|
||||
|
||||
|
||||
/* 작성자: 이재웅, 작성일: 2024-12-04, 작성내용: {전류량[KA] × 100} 변경 */
|
||||
String MaxKA = (grp._amp * 10f).ToString("#0.00");
|
||||
|
||||
@@ -1732,7 +1771,7 @@ namespace vmsnet.HMI
|
||||
if (grp.Showinfo) infogrp = grp;
|
||||
//else
|
||||
//{
|
||||
DrawGroup(g, grp, new Point(0, 0), new SizeF(WINDOW.ITEMWIDTH, WINDOW.ITEMHEIGHT), WindowRect, 열번호, 줄번호, false, visible);
|
||||
DrawGroup(g, grp, new Point(0, 0), new SizeF(WINDOW.ITEMWIDTH, WINDOW.ITEMHEIGHT), WindowRect, 열번호, 줄번호, false, visible);
|
||||
//}
|
||||
|
||||
idx += 1;
|
||||
@@ -2072,27 +2111,27 @@ namespace vmsnet.HMI
|
||||
//if (this.FullScreen)
|
||||
//{ /* 작성자: 이재웅, 작성일: 2024-12-04, 작성내용: '전체보기' 상태일 때만 그룹헤더의 [Null Balance] 팝업 정보가 표시되도록 변경 */
|
||||
|
||||
//마우스가 현재 그룹헤더에 존재하는지확인 (헤더에 올경우 특정 정보를 표시)
|
||||
if (!Mouseinfo.Hand && !Mouseinfo.Move)
|
||||
//마우스가 현재 그룹헤더에 존재하는지확인 (헤더에 올경우 특정 정보를 표시)
|
||||
if (!Mouseinfo.Hand && !Mouseinfo.Move)
|
||||
{
|
||||
int tpidx = Check_GroupHeader(e, true);
|
||||
if (tpidx != -1)
|
||||
{
|
||||
int tpidx = Check_GroupHeader(e, true);
|
||||
if (tpidx != -1)
|
||||
{
|
||||
Mouseinfo.Hand = true;
|
||||
this.GROUPS[tpidx].Showinfo = true;
|
||||
//this.showHeaderInfo = true;
|
||||
}
|
||||
Mouseinfo.Hand = true;
|
||||
this.GROUPS[tpidx].Showinfo = true;
|
||||
//this.showHeaderInfo = true;
|
||||
}
|
||||
|
||||
}
|
||||
//마우스가 현재 그룹에 존재하는지?
|
||||
if (!Mouseinfo.Hand && !Mouseinfo.Move)
|
||||
}
|
||||
//마우스가 현재 그룹에 존재하는지?
|
||||
if (!Mouseinfo.Hand && !Mouseinfo.Move)
|
||||
{
|
||||
int tpidx = Check_Group(e);
|
||||
if (tpidx != -1)
|
||||
{
|
||||
int tpidx = Check_Group(e);
|
||||
if (tpidx != -1)
|
||||
{
|
||||
Mouseinfo.Hand = true;
|
||||
}
|
||||
Mouseinfo.Hand = true;
|
||||
}
|
||||
}
|
||||
//}
|
||||
|
||||
if (Mouseinfo.Hand) this.Cursor = Cursors.Hand;
|
||||
|
||||
Reference in New Issue
Block a user